| JamaicaVM -- User Documentation: The Virtual Machine for Real-time and Embedded Systems | ||
|---|---|---|
| Prev | Appendix A. Targets | Next |
VxWorks from Wind River Systems is a RealTime operating system for embedded computers. The JamaicaVM is available for VxWorks 5.4 and the following target hardware:
PowerPC
Sparc
The VxWorks-Version of Jamaica is installed like descripted in section "Installation". Additionally the following steps have to be done:
Set the environment variable WIND_BASE to the base directory of the Tornado installation (default) or
extend the include path property include.vxworks-* in /usr/local/jamaica/etc/jamaica.conf with the include path of the vxWorks target header files,
Add the Tornado tools directory to the PATH environment variable, such that tools like ccppc.exe can be found.
We recomment to set the environment variable WIND_BASE in your boot- or login-script to the directory where Tornado is installed (top-level directory). Usually no modification of the Jamaica property file /usr/local/jamaica/etc/jamaica.conf is needed.
| Warning |
Do not use the DOS/Windows-Style path separator \ (backslash) in WIND_BASE, because in the Cygwin environment (bash) a backslash is interpreted as an escapce sequence for some special characters. Do only use / (slash) in path names. |
Jamaica use a C-cross-compiler to create binary excutables for VxWorks from the intermediate C-code. Unter Linux usually a C-cross-compiler is installed in /opt/cross. In the property file /usr/local/jamaica/etc/jamaica.conf a C-cross-compiler is configured for the appropiated target under this directory. If your C-cross-compiler is installed in another directory or with a different name please change the following properties:
Xcc.vxworks-*
Xld.vxworks-*
Xstrip.vxworks-*
An application created with the Jamaica Builder can be loaded on the VxWorks target like any other VxWorks program. If the target system is configured for disk, FTP or NFS access simply enter the following command on the target shell:
ld < <Filename> |
<Filename> is the complete filename of the created application.
The main entry point for an application build with the Jamaica Builder is jamica_vm. In the VxWorks target shell the application can b e started e. g. with:
sp jamaica_vm,<argument string> |
Optional parameters can be passed to the application as a single C argument string (text enclosed in "). Multiple arguments in the string can be separated by spaces. The start code of the created application parses this string and pass it a standard Java string array to the main method.
The built application can also be linked directly to the VxWorks kernel image, e. g. for saving the kernel and the application in a FLASH memory. In the VxWorks kernel a user application can be invoked enabling the VxWork configuration define INCLUDE_USER_APPL and defining the macro USER_APPL_INIT when compiling the kernel (see VxWorks documentation and the file usrConfig.c). The prototype to invoke the application created with the Builder is:
int jamaica_vm(const char *commandLine); |
Thus the macro USER_APPL_INIT should be set to something like:
extern int jamaica_vm(const char *); jamaica_vm(<args>) |
where <args> is the command line as a C string which should be passed to the application.
In the current release of Jamaica for the VxWorks OS the following limitations have to be taken into account:
java.lang.Runtime.exec() is not implemented
Object files: because applications for VxWorks usually are linked partially only missing object files can not be detected at build time. If native code is include in the application with the -object link Jamaica can not check at build time if all needed native code is linked to the application. This is only possible for the finaly linker step when the application is loaded on the target system.