您的位置 首页 产品

根据3c2410的linux2.6.22移植(1)

经历近2周的时间,查阅大量的参考资料和贴子,终于成功将linux2.6.22移植到ARM2410上。中间走了不少弯路,不过走弯路也是一种收获,因为可…

阅历近2周的时刻,查阅许多的参阅资料和贴子,总算成功将linux2.6.22移植到ARM2410上。中心走了不少弯路,不过走弯路也是一种收成,由于能够碰到和处理许多问题,增加常识。由于linux版别问题以及开发渠道的不同,网上的许多文章并不彻底合适自己的板子,需求自己探索和修正。写这点东西算是对前一阶段作业的总结,避免将来忘掉。
移植大体的过程首要有:
(1) 穿插编译环境的树立(我的主机体系是ubuntu7.04);
(2) 开发板(我用的是博创的2410)NAND flash 分区办理;
(3) LCD、网卡驱动的移植;
(4) linux内核装备和编译;
(5) rootfs的制造;
(6) 完结linux的发动和文件体系的挂载。
下面我会依照过程逐个介绍。
一、 穿插编译环境的树立
树立穿插编译环境便是在宿主机(也便是pc机)的体系上树立一个模仿ARM的作业环境,使得在这个环境下编译发生的程序能够顺畅的在ARM上的体系内运转。首要作业包含binutils、gcc以及glibc的编译生成,还有一些环境变量的设置。
(1) 预备作业:
下载源代码包: binutils-2.18.tar.bz2,gcc-4.2.1.tar.bz2,glibc-2.6.1.tar.bz2,glibc-ports-2.6.1.tar.gz,linux-2.6.22.tar.bz2
补丁包: binutils-2.18-genscripts_multilib-1.patch
binutils-2.18-posix-1.patch
gcc-4.2.1-cross_search_paths-1.patch
gcc-4.2.1-posix-1.patch
gcc-4.2.1-specs-1.patch
glibc-2.6.1-cross_hacks-1.patch
glibc-2.6.1-hppa_nptl-1.patch
glibc-2.6.1-libgcc_eh-1.patch
glibc-2.6.1-RTLD_SINGLE_THREAD_P-1.patch
glibc-2.6.1-sysdep_cancel-1.patch
glibc-csu.patch
注:Binutils 是一组开发东西,包含连接器,汇编器和其他用于方针文件和档案的东西;
GCC是C编译器,用来将C代码编译成汇编代码;
Glibc便是gcc编译时需求的库了,glibc-ports是供给glibc对ARM的支撑;
Linux-2.6.22.tar.bz2是内核源代码包。
需求留意的是gcc和glibc以及linux内核版别需求坚持对应。假如用比较老的编译器去编译新的内核,或许用新的编译器编译老版别的内核,会呈现一些不可思议的过错。别的补丁包也是必备的,不然编译过程中也会犯错。刚开始我就深受其害。
(2) 作业目录的树立:
目录的结构能够参阅《Building.Embedded.Linux.Systems》。引荐整个目录放到/usr/local下,这样一切的用户都有拜访权限。我最初没经历,直接放到home下了,后来会有些用户权限的小麻烦。这儿给出我的目录结构:
$root@host:/home# ls
arm host
其间host是我的一般登陆用户帐号目录,arm便是作业目录了。为了便利,我平常用root登陆。
$root@host:/home# cd arm
$root@host:/home/arm# mkdir build-tools kernel rootfs tmp tools
其间编译穿插东西时的首要作业都在build-tools目录下完结,kernel目录用来寄存内核源代码,rootfs目录是用来树立发动根文件体系的(后面会具体介绍),tmp是临时文件寄存目录,tools目录便是终究生成的编译器gcc和glibc寄存的当地。
(3) 设置环境变量:
$root@host:/home/arm# export PRJROOT=/home/arm
$root@host:/home/arm# TARGET=arm-linux
$root@host:/home/arm# PREFIX=${PRJROOT}/tools
$root@host:/home/arm# TARGET_PREFIX=${PREFIX}/${TARGET}
$root@host:/home/arm# PATH=${PREFIX}/bin:${PATH}
其间TARGET界说了穿插东西的作业渠道类型,PREFIX指定穿插东西的终究装置目录,PATH指定体系寻觅穿插东西可执行文件地点的途径。
(4) 编译前的预备:
$root@host:/home/arm# cd ${PRJROOT}/build-tools
$root@host:/home/arm/build-tools# mkdir build-binutils build-boot-gcc build-glibc build-gcc build-glibc-headers patch
将源码包放到这个目录下
$root@host:/home/arm/build-tools# ls
build-boot-gcc build-glibc build-binutils build-gcc build-glibc-headers patch
binutils-2.18.tar.bz2 gcc-4.2.1.tar.bz2 glibc-2.6.1.tar.bz2 glibc-ports-2.6.1.tar.gz
将补丁放到patch目录下:
$root@host:/home/arm/build-tools# cd patch
$root@host:/home/arm/build-tools/patch# ls
binutils-2.18-genscripts_multilib-1.patch binutils-2.18-posix-1.patch
gcc-4.2.1-cross_search_paths-1.patch gcc-4.2.1-posix-1.patch
glibc-2.6.1-cross_hacks-1.patch
glibc-2.6.1-hppa_nptl-1.patch glibc-2.6.1-libgcc_eh-1.patch
glibc-2.6.1-RTLD_SINGLE_THREAD_P-1.patch
glibc-2.6.1-sysdep_cancel-1.patch glibc-csu.patch
将内核源码包放到${PRJROOT}/kernel目录下
$root@host:/home/arm# cd kernel
$root@host:/home/arm/kernel# ls
linux-2.6.22.tar.bz2

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/xinpin/chanpin/264463.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部