将j**a虚拟机kaffe移植到sitsang平台上部署的linux中。
1. 通过实验熟悉j**a虚拟机的实现,学习kaffe的**。
2. 在实验过程中逐渐理解交叉开发模式,掌握交叉编译技术。
3. 提高阅读文档的能力。
开发环境:ubuntu 9.04 gcc-4.4
调试环境:windows xp sp2
kaffe版本:1.1.9 1.1.4
这一步骤即为基础实验的重复。主要包括以下几部分内容:
1. 通过jflashui将redboot烧录进实验板。
2. 通过超级终端与redboot通信,将打过patch的linux内核和jffs2文件系统通过以太网接口传入实验板。
3. 将存在于内存的linux内核和文件系统烧录到flash芯片上。
这里应当注意的是,在将jffs2文件系统烧录到flash芯片时,执行以下命令,fis create jffs2 -b 0xa0800000 -l 0x01800000 –f 0x00200000
应将参数0x01800000改为0x03400000,即将文件系统的大小由24m改为52m。因为kaffe编译完成之后需要十几兆的空间,加之其他的链接库文件,实验指导书中所原有的24m大小已经不能满足空间的需要,需要将其改大。通过命令。
fis list
可以查看flash芯片上已经存在的分区大小,可以看到将jffs2文件系统的大小调整为52m,不会对已有的分区造成影响。
由于交叉编译kaffe时需要用kaffe中的kaffeh程序将j**a的native library转换成c的头文件和源**以便于j**a程序和c的native library进行连接,所以需要有一个可以在pc上运行的kaffeh,也就需要在pc上编译一遍kaffe。
将**到的kaffe源**解压缩,按照文档,顺序执行如下命令:
/configure
makemake install
就可以编译并安装kaffe到/usr/local/kaffe。
不过实际操作的时候,由于我们的实验环境是默认配置全新安装的ubuntu,缺少很多必要的库,在configure时遇到了种种提示。将需要的库都**、编译、安装之后,成功在pc上编译出kaffe。
此时我们测试了test目录下的测试j**a程序,确认kaffe能够正确运行。
在pc上编译完成kaffe之后,我们便进行开始交叉编译kaffe的工作,但在编译的过程中却出现了诸多的问题,主要是交叉编译环境中缺少kaffe必要的库文件所致。
在交叉编译kaffe时,提示找不到zlib。
**最新版本的zlib源**,并用如下命令叉编译:
export path=/usr/local/arm-linux/bin:$path
/configure --host=arm-linux --build=i686-linux
发现zlib并不支持--host参数,因此换成。
cc=arm-linux-gcc ld=arm-linux-ld ./configure
发现arm-linux-ld命令并不能将编译的结果连接起来,原因不明,最终使用以下的命令,cc=arm-linux-gcc ./configure --prefix=/usr/local/arm-linux
makemake install
将zlib的相应文件安装到交叉编译环境中去。
在交叉编译kaffe时,提示找不到libzzip,因此在交叉编译环境中安装zzip。
export path=/usr/local/arm-linux/bin:$path
/configure --prefix=/usr/local/arm-linux --host=arm-linux --build=i686-linux --with-zlib=/usr/local/arm-linux
makemake install
将zzip安装到交叉编译环境中。
在交叉编译kaffe时,提示找不到libltdl,因此在交叉编译环境中安装ltdl。
export path=/usr/local/arm-linux/bin:$path
/configure --prefix=/usr/local/arm-linux --host=arm-linux --build=i686-linux
makemake install
将ltdl安装到交叉编译环境中。
在交叉编译kaffe的过程中,需要的库的数量远远超出了我们的预期,有些库的安装又需要其他的库文件,形成了递归的交叉编译的局面,工作量实在太大。因此我们考虑是不是可以通过configure选项的方式,禁掉一些功能而解除库的依赖关系。
首先,kaffe上的图形组件需要x11或者qt,这两个组件在sitsang上均没有实现,因此加上相关的编译选项。
其次,指定zzip为我们交叉编译的zzip。
最终的编译过程如下:
export kaffeh=/usr/local/kaffe/bin/kaffeh
export path=/usr/local/arm-linux/bin:$path
/configure --prefix=/usr/local/arm-linux/kaffe --host=arm-linux --build=i686-linux --with-includes=/usr/local/arm-linux/include --with-libraries=/usr/local/arm-linux/lib --with-engine=intrp --enable-pure-j**a-math --disable-sound --without-x --disable-gtk-peer --without-classpath-gtk-awt --without-kaffe-qt-awt --without-kaffe-x-awt --enable-debug zzip_libs='/usr/local/arm-linux/lib/' disable-werror --enable-xscale
makemake install
并成功通过编译,在/usr/local/arm-linux/kaffe目录下生成了所需的各种文件。
先将编译生成的kaffe目录打包为并在主机上建立ftp服务器。
通过telnet和sitsang板进行通信,在sitsang上通过ftp客户端压缩包**到sitsang上。
通过命令。tar zvxf
将kaffe解压到/usr/local/arm-linux/kaffe目录下。
通过ftp上传一个编译好的helloworld程序的class文件。
进入/usr/local/arm-linux/kaffe/bin目录下,运行如下命令。
/j**a成功出现了帮助信息。
运行如下命令,/j**a hello
出现了错误提示,未找到j**a核心库等一系列错误。经过我们的分析,我们认为应该在sitsang平台上安装classpath。
编译classpath需要禁用classpath的一些功能,从而不需要sitsang上所没有的库文件。
经过不断的尝试,终于通过以下命令交叉编译classpath
export path=/usr/local/arm-linux/bin:$path
/configure --host=arm-linux --prefix=/usr/local/arm-linux --disable-gtk-peer --disable-gconf-peer --disable-plugin --with-jni
makemake instal
将位于/usr/local/arm-linux/lib/classpath目录下的各种j**a库文件移植到sitsang板上之后。
运行命令。/j**a hello
出现了一个为。
exceptioninitializererror
的异常,对于这个问题,我们认为应当是硬件的配置与**中的定义不符造成的,但是我们研究了很久依然没有找到解决的方法,因此最终放弃了kaffe1.1.9
我们仔细考察了kaffe的各个版本之后,认为,高版本的kaffe由于实现了很多的额外功能,移植**现的问题必然会多一些,因此我们决定移植一个低版本的kaffe试试看。
我们选择了kaffe1.1.4版本。
由于之前的kaffe1.1.9的工作,已经将各种需要的库文件移植到sitsang板上,因此,在编译kaffe1.
1.4的过程中,没有出现任何问题,很顺利的完成了编译工作。
进行kaffe的交叉编译,命令如下:
export kaffeh=/usr/local/kaffe/bin/kaffeh
export path=/usr/local/arm-linux/bin:$path
cc=arm-linux-gcc ac_cv_c_char_unsigned=yes ./configure --prefix=/usr/local/arm-linux/kaffe --host=arm-linux --build=i386-linux --target=arm-linux --enable-pure-j**a-math --with-awt=no --with-jar=/usr/local/arm-linux/classpath/share/classpath/ -with-engine=jit --disable-sound
makemake install
先将编译生成的kaffe目录打包为并在主机上建立ftp服务器。
通过telnet和sitsang板进行通信,在sitsang上通过ftp客户端压缩包**到sitsang上。
嵌入式系统实验报告
嵌入式系统实验报告内容。第一章 arm2410cl嵌入式系统基础实验。实验一arm2410cl嵌入式教学实验系统。实验报告要求 简述嵌入式linux开发的流程。实验二。嵌入式linux开发环境的配置。实验报告要求 1 简述嵌入式linux开发环境配置的具体步骤。2 简述网络文件系统 nfs 第二章 ...
嵌入式系统实验报告
本科实验报告。1.实验原理 本实验使用xmanager enterprise软件来连接老师配置好的linux服务器,以完成实验中使用linux完成编译和 运行一个嵌入式系统。实验中使用u boot作为系统的bootloader,使一个嵌入式linux系统完成编译并模拟在另一台机器上 并执行操作。u ...
嵌入式系统实验报告
姓名 班级 学号 实验一 流水灯。实验要求 编写一个程序,是开发板上的的3个led灯按流水灯方式闪烁。实验工具 超级终端开发板,电脑。实验程序如下 汇编指令实验 定义端口e寄存器预定义。rgpbcon equ 0x56000010 rgpbdat equ 0x56000014 rgpbup equ ...