Сборка 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) состоит из следующих основных фаз:

  1. Построение interpreter loop generator (loopgen)

  2. Построение ROM image generator (romizer, romgen)

  3. Execute loopgen to generate interpreter loop

  4. Execute romgen to generate ROM image

  5. Построение 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/

⚠️ **GitHub.com Fallback** ⚠️