当时选择嵌入式这个方向,我只考虑了2秒钟...
从前天晚上开始便开始自己搭建ARM的开发、模拟平台,这时候开始,一直到现在结束,对ARM还并不了解。我选择了skyeye+uclinux这条路。于是我必须从0开始搭建。
首先我必须解决编译器。一开始我选择了自己从0开始编译gnu工具链:最基本的,也需要binutils+gcc+glibc吧。binutils编译过了,然而问题出现了,gcc 4.2.2死活编译不过去。只好作罢,从 http://ftp.snapgear.org/pub/snapgear/tools/arm-linux/arm-linux-tools-20061213.tar.gz 下载了整套编译好的工具链,解压后就能用。为什么我还要这样去折腾自己去编译呢?有保障点的pre-compiled tool-chain都是gcc<4的,所以我想自己弄一个。可是,对我来说gcc4和gcc<4有什么差别呢?至少我用起来并没有差别……
就这样cross-compiler的问题就初步解决了。接着是编译模拟器skyeye和操作系统uClinux。skyeye的编译相当的顺利,而uClinux的编译却困难重重。最一开始,我从 http://www.uclinux.org/pub/uClinux/dist/uClinux-dist-test-20070823.tar.bz2 下载uclinux就花了我几天的时间,不能用多线程,总共接近300M速度一直保持在1K以下,我真佩服我的执着追求的精神。下完了,解压花了我一个多小时的时间才完成,一共1.6G的source。一看到就汗,这都编译该编译多久哦!我选择了GDB/Skyeye进行编译,结果这个test版本我却怎么编译都编译不过去。我使用了各种手段来消除各种编译错误,结果还是失败了。我在想,会不会是因为这个test版还有比较大的问题的原因,于是重新下载了 http://www.uclinux.org/pub/uClinux/dist/uClinux-dist-20070130.tar.gz ,选择GDB/Skyeye结果仍然死活过不去,无论我怎么去消除各种编译期的错误……于是我尝试改成GDB/Armulator进行编译,结果……当时是非常顺利咯!就这样,uclinux编译过去了。
编译完了,很是高兴,出现了两个文件,images/boot.rom和images/linux,一个是ROM,一个是linux内核(应该是滴)。但是,images/linux并没有包含在images/boot.rom中。生成romfs需要用genromfs程序来生成,这需要单独从新立得软件包管理器里面安装。romfs的内容在romfs/目录里面,genromfs根据这个目录来生成romfs,用来生成的命令如下:
然后就是要来启动这个OS了。先按照skyeye的说明写上默认的配置(去掉loader那一行),结果怎么运行都会出现配置错误。这让我很郁闷。后来在一个网页上看到一个配置,抄了下来,就能用了。注意,skyeye.conf必须在你当前运行的目录之下,也就是在$PWD中。由于boot.rom在uClinux-dist/中,所以建了个连接到images/boot.rom。
从前天晚上开始便开始自己搭建ARM的开发、模拟平台,这时候开始,一直到现在结束,对ARM还并不了解。我选择了skyeye+uclinux这条路。于是我必须从0开始搭建。
首先我必须解决编译器。一开始我选择了自己从0开始编译gnu工具链:最基本的,也需要binutils+gcc+glibc吧。binutils编译过了,然而问题出现了,gcc 4.2.2死活编译不过去。只好作罢,从 http://ftp.snapgear.org/pub/snapgear/tools/arm-linux/arm-linux-tools-20061213.tar.gz 下载了整套编译好的工具链,解压后就能用。为什么我还要这样去折腾自己去编译呢?有保障点的pre-compiled tool-chain都是gcc<4的,所以我想自己弄一个。可是,对我来说gcc4和gcc<4有什么差别呢?至少我用起来并没有差别……
就这样cross-compiler的问题就初步解决了。接着是编译模拟器skyeye和操作系统uClinux。skyeye的编译相当的顺利,而uClinux的编译却困难重重。最一开始,我从 http://www.uclinux.org/pub/uClinux/dist/uClinux-dist-test-20070823.tar.bz2 下载uclinux就花了我几天的时间,不能用多线程,总共接近300M速度一直保持在1K以下,我真佩服我的执着追求的精神。下完了,解压花了我一个多小时的时间才完成,一共1.6G的source。一看到就汗,这都编译该编译多久哦!我选择了GDB/Skyeye进行编译,结果这个test版本我却怎么编译都编译不过去。我使用了各种手段来消除各种编译错误,结果还是失败了。我在想,会不会是因为这个test版还有比较大的问题的原因,于是重新下载了 http://www.uclinux.org/pub/uClinux/dist/uClinux-dist-20070130.tar.gz ,选择GDB/Skyeye结果仍然死活过不去,无论我怎么去消除各种编译期的错误……于是我尝试改成GDB/Armulator进行编译,结果……当时是非常顺利咯!就这样,uclinux编译过去了。
编译完了,很是高兴,出现了两个文件,images/boot.rom和images/linux,一个是ROM,一个是linux内核(应该是滴)。但是,images/linux并没有包含在images/boot.rom中。生成romfs需要用genromfs程序来生成,这需要单独从新立得软件包管理器里面安装。romfs的内容在romfs/目录里面,genromfs根据这个目录来生成romfs,用来生成的命令如下:
genromfs
-
v
-
V
"
ROMdisk
"
-
f
/
home
/
stlxv
/
from_src
/
arm
/
uClinux
-
dist
/
images
/
boot.rom
-
d
/
home
/
stlxv
/
from_src
/
arm
/
uClinux
-
dist
/
romfs
stlxv@stlxvcomputer:
~/
from_src
/
arm
/
uClinux
-