• «
  • 1
  • 2
  • »
  • Pages: 1/2     Go
主题 : 移植java虚拟机到FriendlyArm Mini2440 复制链接 | 浏览器收藏 | 打印
级别: 侠客
UID: 55184
精华: 1
发帖: 76
金钱: 430 两
威望: 86 点
贡献值: 1 点
综合积分: 172 分
注册时间: 2011-09-13
最后登录: 2015-10-01
楼主  发表于: 2011-10-23 11:29

 移植java虚拟机到FriendlyArm Mini2440

管理提醒: 本帖被 xoom 执行加亮操作(2011-10-23)
一、选用sun的phoneme
    https://phoneme.dev.java.net/

二、下载
    http://download.java.net/mobileembedded/phoneme/advanced/phoneme_advanced-mr2-dev-src-b97-20_nov_2008.zip

三、解压
    unzip phoneme_advanced-mr2-dev-src-b97-20_nov_2008.zip

四、修改makefile
    cd phoneme_advanced_mr2/cdc/build/linux-arm-generic
    gedit GNUmakefile

    修改 CVM_TARGET_TOOLS_PREFIX=/usr/local/arm/4.3.2/bin/arm-linux- 为自己的交叉编译器的地址  

    修改 USE_AAPCS ?= false 为 true

五、输出PATH
    export PATH=/usr/local/arm/4.3.2/bin/:$PATH                     为自己的交叉编译器的地址

六、编译
    make  (可能会报错)

七、如果有出错提示可能是JDK、bison、flex没有安装

    Java 的安装配置参考    http://www.oracle.com/index.html

    或者在Ubuntu的新立德软件包中搜索Open Jdk

    另外的一两个工具可以通过在终端中通过一下命令安装

        apt-get install bison

        apt-get install flex

八、还是出错
    ../../src/linux-arm/javavm/runtime/segvhandler_arch.c:45:26: error: asm/ucontext.h: No such file or directory
    ../../src/linux-arm/javavm/runtime/segvhandler_arch.c: In function 'handleSegv':
    ../../src/linux-arm/javavm/runtime/segvhandler_arch.c:224: error: dereferencing pointer to incomplete type
    ../../src/linux-arm/javavm/runtime/segvhandler_arch.c:285: error: dereferencing pointer to incomplete type
    ../../src/linux-arm/javavm/runtime/segvhandler_arch.c:285: error: dereferencing pointer to incomplete type
    ../../src/linux-arm/javavm/runtime/segvhandler_arch.c:286: error: dereferencing pointer to incomplete type
    ../../src/linux-arm/javavm/runtime/segvhandler_arch.c:294: error: dereferencing pointer to incomplete type

    修改 segvhandler_arch.c 文件
    gedit ../../src/linux-arm/javavm/runtime/segvhandler_arch.c

    修改
    #define ucontext asm_ucontext
    #include <asm/ucontext.h>
    为
    //#define ucontext asm_ucontext     //注释掉这句
    #include <ucontext.h>            //去掉arm/

九、再编译
    make

    编译成功!

    ls 可以看到在当前目录有
    bin   lib   testclasses.zip

附注:运行时如有报错:

   Java VM panic: AAPCS calling convention used; compilation must use -DAAPCS

然后,如果不在GNUmakefile 之中添加 “ CVM_DEFINES += -DAAPCS ” 这一行,就会在mini2440的linux 中执行 ./cvm -cp ../testclasses HelloWorld 语句时,出现以下错误:

Java VM panic: AAPCS calling convention used; compilation must use -DAAPCS.


所以除了要在GNUmakefile 之中,修改 USE_AAPCS ?= false 为 true , 还要在  CVM_DEFINES +=  这一句后面添加上   -DAAPCS

修改完上面的内容后,要先执行 make clean && make distclean  ,最后 再执行 make  

十、测试
    1)、拷贝上面三个文件与文件夹到开发板/home/j2me目录

    2)、在开发板/etc/init.d/rcS文件里加入如下
        JAVA_HOME=/home/j2me
        export PATH=$JAVA_HOME/bin:$PATH
        export CLASSPATH=.:$JAVA_HOME/lib

    3)、经典的HelloWorld
        cd /home/j2me/bin
        ./cvm -cp ../testclasses HelloWorld
  
        可以看到输出了 HelloWorld.

    4)、来个全面测试
        ./cvm -cp ../testclasses.zip Test

        *Number of command line arguments: 0
        Starting test1
        ...recurse
        ...recurse
        ...recurse
        ...link
        ...link
        ...link
        Starting test1 again
        ...recurse
        ...recurse
        ...recurse
        ...link
        ...link
        ...link
        test6: Caught inner java.lang.NullPointerException
        test6: Caught outer java.lang.NullPointerException
        Testing Array Copy
        *TestE exception thrown because "I'm feeling Testy"
        *<clinit> threw java.lang.ExceptionInInitializerError
        *<clinit> threw java.lang.NoClassDefFoundError: StaticE
        c1 = class [LTest;
        c2 = class [[LTest;
        c3 = class [LC;
        c4 = class [[LC;
        c1.modifiers = 1041
        c2.modifiers = 1041
        c3.modifiers = 1040
        c4.modifiers = 1040
        *FloatMIN =1.4E-45
        *FloatMAX =3.4028235E38
        FloatMIN (the int bits) =1
        FloatMAX (the int bits) =2139095039
        java.lang.IllegalArgumentException: too many dimensions
            at java.lang.reflect.Array.multiNewArray(Native Method)
            at java.lang.reflect.Array.newInstance(Unknown Source)
            at Test.testDeepArrayConstruction(Unknown Source)
            at Test.main(Unknown Source)
            at sun.misc.CVM.runMain(Unknown Source)
        Constructed an object of type
        [[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[LTest;
        finally!
        Requesting GC with a latency request of 2 seconds
        (Turning GC tracing on)
        Sleeping 5 seconds, and waiting for GC's
        Woke up! Cancelling latency request
        .............
        *CONGRATULATIONS: test Test completed with 411 tests passed and 0 failures
        *Output lines starting with a * should be checked for correctness
        *They can be compared to src/share/javavm/test/TestExpectedResult

        *CONGRATULATIONS: test Test completed with 411 tests passed and 0 failures
        这句话意味着什么,我就不说了~~ 恭喜你!
畅游在知识的海洋...
级别: 论坛版主
UID: 33629
精华: 4
发帖: 554
金钱: 3075 两
威望: 615 点
贡献值: 5 点
综合积分: 1188 分
注册时间: 2010-12-03
最后登录: 2015-09-22
1楼  发表于: 2011-10-23 12:18
这意味着2440上可以跑java程序了?
好好学习,天天鲁管
级别: 侠客
UID: 55184
精华: 1
发帖: 76
金钱: 430 两
威望: 86 点
贡献值: 1 点
综合积分: 172 分
注册时间: 2011-09-13
最后登录: 2015-10-01
2楼  发表于: 2011-10-23 15:25
没有gui
级别: 新手上路
UID: 65812
精华: 0
发帖: 5
金钱: 25 两
威望: 5 点
贡献值: 0 点
综合积分: 10 分
注册时间: 2012-03-22
最后登录: 2012-05-27
3楼  发表于: 2012-05-23 18:09
楼主
我在编译输出HelloWorld的时出现了bash:./cvm:cannot execute binary file
怎么回事啊?求教
级别: 新手上路
UID: 32897
精华: 0
发帖: 31
金钱: 155 两
威望: 31 点
贡献值: 0 点
综合积分: 62 分
注册时间: 2010-11-23
最后登录: 2013-02-28
4楼  发表于: 2012-08-12 13:05
级别: 新手上路
UID: 74119
精华: 0
发帖: 13
金钱: 65 两
威望: 13 点
贡献值: 0 点
综合积分: 26 分
注册时间: 2012-07-19
最后登录: 2017-09-13
5楼  发表于: 2012-12-19 17:33
有时间试试
级别: 新手上路
UID: 111782
精华: 0
发帖: 17
金钱: 95 两
威望: 19 点
贡献值: 0 点
综合积分: 34 分
注册时间: 2015-01-06
最后登录: 2018-10-24
6楼  发表于: 2018-10-17 00:02
合肥的身份的恢复到合肥的好地方合肥的
级别: 新手上路
UID: 111782
精华: 0
发帖: 17
金钱: 95 两
威望: 19 点
贡献值: 0 点
综合积分: 34 分
注册时间: 2015-01-06
最后登录: 2018-10-24
7楼  发表于: 2018-10-17 00:02
还是对方回复的回复的回复合肥的
级别: 新手上路
UID: 111782
精华: 0
发帖: 17
金钱: 95 两
威望: 19 点
贡献值: 0 点
综合积分: 34 分
注册时间: 2015-01-06
最后登录: 2018-10-24
8楼  发表于: 2018-10-17 00:02
还是反对和对方回复的回复的回复的
级别: 新手上路
UID: 111782
精华: 0
发帖: 17
金钱: 95 两
威望: 19 点
贡献值: 0 点
综合积分: 34 分
注册时间: 2015-01-06
最后登录: 2018-10-24
9楼  发表于: 2018-10-17 00:02
会发生的活动符合东方的回复
  • «
  • 1
  • 2
  • »
  • Pages: 1/2     Go