这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » 关于ARM target的cross compile toolchain和roo

共4条 1/1 1 跳转至

关于ARM target的cross compile toolchain和root builder的选择 zz

助工
2008-03-19 14:21:17     打赏

当然是在x86 host上的。
首先试了uclibc的buildroot,可编译toolchain和rootfs,svn更新。使用很方便,用了类似内核和busybox的配置界面menuconfig,可定制项目较细,自动化程度好。但是有个硬伤,不能选择使用glibc,强制使用uclibc。。。。但可能有patch能去掉这个限制。考虑到这个项目的主页也是buildroot.uclibc.org就不难理解这个限制了。对于使用uclinux的用户倒是很合适。

http://buildroot.uclibc.org

其次是timesys的商业套件,直接提供成品toolchain和BSP。大致每个季度更新,可以下载个人版,基本的工具还是全的。这公司似乎同atmel和arm联系较紧密 ,技术应该很可靠,但是要真正做项目个人版还是不够的,不过个人版提供的一些资料还是很由用处。顺便说一句,我的ebd9261就是提供了这个作为开发工具。

http://www.timesys.com

接着是open embedded,可编译toolchain和target package。总得来说做得不错,自动化程度很高,随时更新(用户从版本库检出更新),使用配置文件进行基本配置,可以选择任意包编译。build package的时候会把需安装的文件单独存放,而且粒度很细,比如vim就分放在vim vim-common vim-doc vim-dev vim-syntax vim-dbg vim-help等目录下,同时也提供存放完整vim文件的目录,还提供上述所有的ipk包,总之很是贴心。但是本项目使用的版本管理工具略显怪异。。

http://www.openembedded.org

随后是gentoo自己的crossdev,这个没什么可说的,四海一家的方案。。。

http://www.gentoo.org/proj/en/base/embedded/handbook




关键词: 关于     target     cross     compile     t    

助工
2008-03-19 14:21:49     打赏
2楼

只有从源码建立才能最大限度保证兼容和稳定,尤其是现在各个发行套件使用的glibc甚至ABI版本都不同,因此必须使用一个buildroot套件进行工作。我选的是OpenEmbeded ( http://www.openembedded.org ),使用12/2007发布的stable版本,库和程序较新,又很稳定,可以轻松建立从bootstrap到desktop的环境,同时保持很不错的可定制能力,最难得的是这个套件生成的rootfs几乎是最省空间的。

为了开发方便,可以把rootfs根目录直接挂上工作站的某个 NFS path,这样对文件系统的修改就方便很多。NFS的参数要作为args传给内核,内核中必须打开IP自动配置和NFS支持。挂载上rootfs开始init后系统会remount一次,这回用的不是kernel args里面指定的IP配置了,因此要修改启动脚本让网络环境设置正确。我在这里卡了一点时间,由于dhcp程序不能正常工作,将之nuke掉就好了。

一开始rootfs不用太精简,略微臃肿一些无妨,反正是用NFS rootfs。这样可以避免缺少某些包而启动失败,等系统运行正常再开始剪裁也不迟。注意OE的一些bootstrap-image helloworld-image等等精简系统似乎不能适应NFS rootfs环境,我在这里转了很大一圈,现在确定可以使用的最简配置如下:

ANGSTROM_EXTRA_INSTALL ?= ""
#DISTRO_SSH_DAEMON ?= "dropbear"
IMAGE_INSTALL =" \
base-files \
base-passwd \
busybox \
mdev \
cron \
initscripts \
#modutils-initscripts \
netbase \
update-alternatives \
sysvinit \
sysvinit-pidof \
tinylogin \
angstrom-version \
#ppp \
setserial \
#nfs-utils \
#portmap \
mtd-utils"

export IMAGE_BASENAME = "seerhut-test-image"
IMAGE_LINGUAS = ""
inherit image

同时/bin/login的owner必须是root。设置成u+s也不行。这样基本就完成了。

商业发布的套件几乎全是生成old arm abi二进制文件 的,而且同时发布的rootfs都很臃肿,不便剪裁。如果一定要使用商业套件,推荐timesys的toolchain,但是它的rootfs太大了,<32M的NAND几乎无法使用。


工程师
2008-03-19 16:45:35     打赏
3楼

实用,支持!~虽然我好像用不到!~


助工
2008-03-20 14:22:30     打赏
4楼
能不能给出一个详细的文档?

共4条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]