Сборка CLDC HI и trikset.control - Snezhana-Sarmanova/JavaTRIKControl GitHub Wiki
1. Компоненты
Для сборки виртуальной машины в репозитории проекта CLDC HI необходимы базовые компоненты:
-
cldc – конфигурация платформы Java;
-
midp – профиль платформы Java;
-
pcsl – набор вспомогательных библиотек;
-
tools – вспомогательные инструменты для сборки.
Берем из репозитория проекта необходимые компоненты и кладем в <yourDir>/JVM/components:
svn co https://svn.java.net/svn/phoneme~svn/components/pcsl/trunk pcsl svn co https://svn.java.net/svn/phoneme~svn/components/cldc/trunk cldc svn co https://svn.java.net/svn/phoneme~svn/components/tools/trunk tools
Компонента midp находится в JavaTRIKControl. Её качаем оттуда.
svn co https://github.com/Snezhana-Sarmanova/JavaTRIKControl/midp midp
Также берем из данного репозитория компоненту для периферии ТРИК
svn co https://github.com/Snezhana-Sarmanova/JavaTRIKControl/trikcontrol trikControl
2. Инструменты
SDK : http://195.19.241.150/packages/updates/sdk/ Установить SDK в папку /opt/trik-sdk
sudo ./trik-sdk.sh -y -d /opt/trik-sdk
Обязательно должны быть ar, as, cpp, g++, gcc, gcov, ld, nm, ranlib, strip.
Ссылки сделать из /opt/trik-sdk/sysroots/i686-oesdk-linux/usr/bin/armv5te-oe-linux-gnueabi в /opt/trik-sdk/sysroots/i686-oesdk-linux/usr/bin
А так же из /opt/trik-sdk/sysroots/i686-oesdk-linux/usr/libexec/armv5te-oe-linux-gnueabi/gcc/arm-oe-linux-gnueabi/4.8.1/ сделать ссылки на cc1, cc1plus, collect2 в /opt/trik-sdk/sysroots/i686-oesdk-linux/usr/bin
JDK: sudo apt-get install openjdk-7-jdk
(на момент сборки версия 1.7.0_17, в более новых версиях путаница с директориями)
3. Переменные окружения.
export MEHOME=/home/snezhana/docs/jvm export JDK_DIR=/usr/java/jdk1.7.0_17 export GNU_TOOLS_DIR=/opt/trik-sdk/sysroots/i686-oesdk-linux/usr export PATH=$PATH:$JDK_DIR/bin export PCSL_OUTPUT_DIR=$MEHOME/output/pcsl export PCSL_PLATFORM=linux_arm_gcc export PCSL_OS=linux export PCSL_CPU=arm export NETWORK_MODULE=bsd/generic export ENABLE_PCSL=true export ENABLE_ISOLATES=true export JVMWorkSpace=$MEHOME/components/cldc export JVMBuildSpace=$MEHOME/output/cldc export MIDP_OUTPUT_DIR=$MEHOME/output/midp export CLDC_DIST_DIR=$MEHOME/output/cldc/linux_arm/dist export TRIKSET_DIR=/home/snezhana/docs/jvm/components/trikControl export TOOLS_DIR=$MEHOME/components/tools export TARGET_CPU=arm export CPU=arm export USE_MIDP=true export USE_MULTIPLE_ISOLATES=true export ENABLE_COMPILATION_WARNINGS=true export ENABLE_JAVA_DEBUGGER=true export ENABLE_ROM_DEBUG_SYMBOLS=true export ENABLE_ROM_JAVA_DEBUGGER=true export ENABLE_SYSTEM_CLASSES_DEBUG=true
Переменные ТРИКа не нужны!!
4. PCSL-библиотеки
Используются для построения CLDC. Содержит несколько дополнительных опций, включающих файловую систему, сеть, память и печать. Используются переменные окружения FILE_MODULE, NETWORK_MODULE, MEMORY_MODULE, PRINT_MODULE. Возможные значения:
File system: ram posix win32 stubs Memory: malloc heap stubs network: bsd/qte bsd/generic sos winsock stubs print: stdout file stubs
По умолчанию используются значения: posix, malloc, socket/bsd/qte, stdout
Далее:
cd $MEHOME/components/pcsl make
5. Конфигурация CLDC
В общих чертах, сборка JVM (т.е. сборка профиля CLDC, который включает в себя JVM) состоит из следующих основных фаз:
-
Построение interpreter loop generator (loopgen)
-
Построение ROM image generator (romizer, romgen)
-
Execute loopgen to generate interpreter loop
-
Execute romgen to generate ROM image
-
Построение JVM, связывание interpreter loop и ROM image.
Loopgen и romgen составляющие части JVM и они должны быть собраны на хосте с помощью native toolchain хоста (в нашем случае это trikSDK).
Необходимые переменные окружения:
-
JVMWorkSpace - директория CLDC
-
JVMBuildSpace - путь для output/cldc
-
ENABLE_PCSL=true - использование уже постороенных PCSL-библиотек
-
PCSL_OUTPUT_DIR - путь до PCSL-библиотек
Построение:
Заменить в файле $MEHOME/components/cldc/src/vm/cpu/c/AsmStubs_i386.s строку 27: i486 на i686.
СБОРКУ МОЖНО ПРОВОДИТЬ ТОЛЬКО НА ПЛАТФОРМАХ i386, sparc, arm
Далее:
cd $MEHOME/components/cldc/build/linux_arm/ make
Если возникли проблемы с JDK_DIR или JVMWorkSpace, то проверить пути, версию джавы.
6. Профиль MIDP
Вместе с этой компонентой происходит сборка и API для ТРИК.
Построение:
cd $MEHOME/components/midp/build/linux_fb_gcc/ make
Собранную CLDC HI переносим на ТРИК, а именно бинарники, получившиеся в output/midp/