Page 1 of 1

SYMBOL xxx NOT FOUND ERROR : VSIDE v2.43 and VSOS 3.4x compatibility

Posted: Tue 2018-01-09 8:12
by Henrik
[*Edit*] 2018-03-18 by Panu

  • VSIDE has been updated.
  • New VSIDE generates new kind of binaries (VDE2 instead of VDE1).
  • The new VDE2 binaries are better than the old ones:
    - Smaller
    - Compatible across different ROMs
    - Can be run in future VS1005 chips, not just VS1005g.
  • Old VSOS kernel (3.4x or older) cannot load VDE2 binaries.
    - Errors such as "Symbol not found" and "Too old APP"
  • VSIDE can be configured to generate old style executables for old kernels.
  • You have the following options:
    • Update the kernel, if possible.
    • OR Change project options to generate old (VDE1) executables
    • OR Use an older VSIDE: download/file.php?id=1421

Please see the following explanation and instructions:



VSIDE v2.43 and VSOS compatibility


We released VSIDE 2.43 on 8th January, 2017, along with VSOS 3.50. This thread will explain how to compile your old projects so that it can use the features of the new VSOS for maximum effect.

If you compile your old project for VSOS / VS1005g with VSIDE v2.43, you will get a project that is compatible with VSOS 3.50 or higher, and which may or may not be compatible with future VS1005 series ICs. If you are happy with that, you don't need to modify anything. However, if you want to be future-proof, or if you need to compile projects for VSOS 3.45 or older, then you need to read this.

The thread will start with the following posts:
- viewtopic.php?f=13&t=2203#p11643 Compiling for VSOS 3.45 or lower using VSIDE 2.43 or higher
- viewtopic.php?f=13&t=2203#p11644 Modifying your project to be compatible with future VS1005 series ICs like VS1005h
- viewtopic.php?f=13&t=2203#p11645 Selecting the correct Project template

Kind regards,
- Henrik

Compiling for VSOS 3.45 or lower with VSIDE 2.43 or higher

Posted: Tue 2018-01-09 8:12
by Henrik

By default, any VS1005 programs compiled with VSIDE 2.43 or newer will take advance of VSOS 3.50 features. Such binaries will not be compatible with VSOS 3.45 or older, and will give an error message like the following if you try to run them:

Code: Select all

Driver: LCD177... E'Too old APP'
Alternatively, the error message can look like this:

Code: Select all

Driver: LCD177... 
Fatal error: symbol _memcpy not found (missing library or too old kernel). Stop.
The best way is to update the kernel to VSOS 3.50 or newer. However, if that is for some reason not practical, it is possible to modify your project so that it will create binaries compatible with VSOS 3.45 and older.

First, select your project's Properties:
VSOS345CompatProperties.png (5.45 KiB) Viewed 6389 times
Add KEEP_VSOS_344_AND_OLDER_COMPATIBILITY to preprocessor definition in the C Compiler tab:
VSOS345CompatCompilerOpts.png (10.34 KiB) Viewed 6389 times
Add "-p 1B" to Additional options in the Linker tab:
VSOS345CompatLinkerOpts.png (12.04 KiB) Viewed 6389 times
Choose Build -> Rebuild Solution. Now your project should again be compatible with VSOS 3.45, but without the code size benefits of VSOS 3.50.

Kind regards,
- Henrik

Modifying Your Project to Be Compatible with Future VS1005 Series ICs

Posted: Tue 2018-01-09 8:13
by Henrik

With VSIDE 2.43 it is now possible to compile programs that will be compatible with future VS1005 series IC's, like the forthcoming VS1005h. Some projects will be compatible without any modifications. To make your project future proof, check the following things and modify if necessary:

1) If your project contains any of ROM-specific definitions, remove them. Examples below:

Code: Select all

LINKINFO3 (ABS,ph,1075) //Use symbol from VS1005G ROM
2) If your project contains rom1005g.txt in the Other files category of your Project as shown below, right click and Remove it.
VSOS345CompatRom1005g.png (7.91 KiB) Viewed 6388 times
Both of the methods above were used to give user direct access to VS1005g's ROM functions. VSOS 3.50 gives symbol-name level access to most ROM symbols so direct access to the ROM functions is no more neccessary. This also ensures that user programs can access the same symbols in future VS1005 ICs even if they have moved in the VS1005 ROM memory.

3) To make the size of your executable smaller, make sure at least one source code file (typically main.c) contains the following line:

Code: Select all

#include <kernel.h>
Kind regards,
- Henrik

Selecting the Correct Project Template

Posted: Tue 2018-01-09 8:55
by Henrik

VS1005 VSOS Project templates have changed for VSIDE 2.43. Many outdated templates have been removed, and there are three different versions of the same template, depending on what you want to achieve.

When you select File -> New -> Project/Solution, you will first be greeted with the Solution templates, where you select VS1005 VSOS3 Application, just as before:
NewProject1.png (10.28 KiB) Viewed 6376 times
As you can see below, there are three different versions of the VSOS3 Driver or Console Application template:
NewProject2.png (12.75 KiB) Viewed 6376 times
The three different versions should be used as follows:
  • Universal - Compatible with VS1005g and future VS1005 series ICs like VS1005h. Requires VSOS 3.50 or higher to run.
  • VS1005h - Almost the same as Universal, but gives access to even such VS1005h ROM symbols that are not available on VS1005g. If such symbols are not used, the programs will be compatible with VS1005g.
  • Legacy - Like Universal, but creates programs that are also compatible with VSOS 3.45 and older. Programs created with this template will typically be larger both in memory and as files on disk, sometimes significantly.
So, a summary:
  1. If you use VSOS 3.50 or newer, select Universal.
  2. If you for some reason need compatibility with older VSOS versions (e.g. you have a large installed base of devices that contain an older VSOS version and they cannot be updated), select Legacy.
  3. Select VS1005h only if you absolutely know that you are going to require some VS1005h-specific feature.
Kind regards,
- Henrik