版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、12AKA嵌入式兴趣小组系列专题Assabet/Sa1110开发板嵌入式Linux 移植简介姚文龙2003/09/0730 0 目录目录 简要说明简要说明 准备交叉编译工具准备交叉编译工具 编译编译redbootredboot 烧录烧录redboot redboot 使用使用redboot redboot 装载并执行装载并执行kernelkernel 装载并运行文件系统装载并运行文件系统 41 1 简要说明简要说明1.11.1 版权说明版权说明1.21.2 体例说明体例说明1.31.3 assabet / sa1110 assabet / sa11101.41.4 ecos / redboot
2、 ecos / redboot1.51.5 常用术语常用术语51.1 1.1 版权说明版权说明源码都来自源码都来自opensourceopensource社区,用社区,用googlegoogle可可以搜索到。所以,不再详细标明出处。版以搜索到。所以,不再详细标明出处。版权属于原作者。权属于原作者。本文档由本文档由Alan YaoAlan Yao为为AKAAKA嵌入式小组编写嵌入式小组编写,不得用于商业用途。,不得用于商业用途。具体的具体的AssabetAssabet开发板来自于中基教育软开发板来自于中基教育软件产品件产品SPCSPC。转载本文档时,不得损害该。转载本文档时,不得损害该公司的商业
3、利益。公司的商业利益。61.2 1.2 体例说明体例说明本文中提到的源码都放在本文档的同一目本文中提到的源码都放在本文档的同一目录下。录下。所提到的版本,基本上只能保证该版本可所提到的版本,基本上只能保证该版本可用,并不代表更新或更旧的版本可用。用,并不代表更新或更旧的版本可用。本文档的说明均以同一目录下的资料为依本文档的说明均以同一目录下的资料为依据,并且此存放目录是:据,并且此存放目录是:/opt/orig/opt/orig所有源码解压后,都放在所有源码解压后,都放在/opt/src/opt/src# #代表代表rootroot用户的操作;用户的操作;% %代表普通用户的代表普通用户的操作
4、操作71.3 assabet / sa11101.3 assabet / sa1110Intel公司的StrongARM 1110( SA-1110 )是一款通用RISC微处理器, arm体系结构。16KB的指令Cache、8KB的数据Cache、一个512B小型Cache、一个write buffer 、一个read buffer、一个内存管理单元(MMU)集成在一个芯片中。功耗是206M Hz/400mWAssabet开发板是基于sa1110的,有PCMCIA/CF插槽和JTAG接口,可以用来调试32M的内存和32M的flash详细说明参见sa1110的datasheet:sa1100-2
5、78240.pdf81.4 ecos / redboot1.4 ecos / redbootecos的源代码和相关工具可以从eCOS主页获得: eCos支持很多种平台,包括ARM/Hitachi /SH/NEC/PPC/MIPS/SPARC等 Redboot是ecos的bootloader,相当于PC上的biosRedboot支持JTAG和网卡调试,能够支持assabet上的flash, PCMCIA/CF网卡,串口/并口91.5 1.5 常用术语常用术语Host:一般指用来开发的PC机,这里是:PIII 1G 256M+redhat 7.3,即i686-pc-linux-gnuTarget:
6、指的是assabet开发板,即arm-linuxBuild:是指当前工作的编译工具所在的主机构建:一般不提倡在源码目录下直接编译,而是新建一个build目录,通过configure脚本程序生成build代码,然后编译。这里,所有的build目录,都在/opt/build下cross-compile:交叉编译工具,就是在host上编译能在target上运行的程序,这里放在/opt/arm下target根目录:target上运行的程序和系统存放在host上的根目录,这里是/opt/arm/arm-linux102 2 编译交叉编译工具编译交叉编译工具2 2 准备准备2.02.0 更新本地更新本地g
7、ccgcc编译器编译器2.1 2.1 建立建立KernelKernel的头文件的头文件2.22.2 编译编译BinutilsBinutils工具工具2.32.3 编译编译C C编译器编译器2.42.4 编译编译GLIBCGLIBC库库2.52.5 编译编译C+C+编译器编译器2.6 2.6 编译编译kernelkernel和和hello worldhello world112 2 准备准备建立相关目录建立相关目录% %mkdir mkdir p /opt/origp /opt/orig% %mkdir mkdir p /opt/srcp /opt/src% %mkdir mkdir p /op
8、t/build p /opt/build % %mkdir mkdir p /opt/armp /opt/arm将所有文件拷贝到将所有文件拷贝到/opt/orig/opt/orig下下122.0 2.0 更新本地更新本地gccgcc编译器编译器源文件源文件gcc-2.95.3.tar.gz gcc-2.95.3.tar.gz 以以rootroot用户编译:用户编译:# #cd /opt/srccd /opt/src# #tar -xzvf /opt/orig/gcc-2.95.3.tar.gztar -xzvf /opt/orig/gcc-2.95.3.tar.gz# #mkdir mkdir
9、 p /opt/build/gcc-localp /opt/build/gcc-local# #cd /opt/build/gcc-localcd /opt/build/gcc-local# #/opt/src/gcc-2.95.3/configure /opt/src/gcc-2.95.3/configure -prefix=/usr-prefix=/usr# #make ; make install make ; make install 确认确认GCCGCC版本是版本是5.3# #gcc -versiongcc -version132.1 2.1 建立建立KernelK
10、ernel的头文件的头文件源文件源文件linux-2.4.18.tar.gz linux-2.4.18.tar.gz patch-2.4.18-rmk3.gz patch-2.4.18-rmk3.gz diff-2.4.18-rmk3-pxa2.gzdiff-2.4.18-rmk3-pxa2.gz Patch%cd /opt/src%tar xzvf /opt/orig/linux-2.4.18.tar.gz%gzip -dc /opt/orig/patch-2.4.18-rmk3.gz | patch -p1 -d /opt/src/linux %gzip -dc /opt/orig /di
11、ff-2.4.18-rmk3-pxa2.gz | patch -p1 -d /opt/src/linux %mkdir p /opt/arm/arm-linux/includee142.1 2.1 建立建立KernelKernel的头文件的头文件配置配置ARM linux kernel ARM linux kernel % %cd /opt/src/linux/cd /opt/src/linux/% %cp arch/arm/def-configs/assabet .config cp arch/arm/def-configs/assabet .config % %yes yes “” | m
12、ake oldconfig ARCH=arm | make oldconfig ARCH=arm% %make depmake dep这里会出错,不影响!这里会出错,不影响!% %cp cp arf include/asm-arm arf include/asm-arm /opt/arm/arm-linux/include/asm/opt/arm/arm-linux/include/asm% %cp cp arf include/linux arf include/linux /opt/arm/arm-linux/include/linux/opt/arm/arm-linux/include/
13、linux152.2 2.2 编译编译BinutilsBinutils工具工具源文件源文件 binutils-2.12.tar.gz编译:%cd /opt/src%tar -xzvf src/binutils-2.12.tar.gz %mkdir -p opt/build/binutils %cd /opt/build/binutils%/opt/src/binutils-2.12/configure -target=arm-linux -prefix=/opt/arm%make ; make install162.2 2.2 编译编译BinutilsBinutils工具工具这里生成的Bin工
14、具是用于ELF执行格式的,前缀使用arm-linux将Bin工具添加的执行路径中:%export PATH=/opt/arm/bin:$PATH别忘了在$HOME/.bashrc_profile中添加上述语句,使路径修改长期有效172.3 2.3 编译编译C C编译器编译器编译编译C+C+编译器,必须在编译编译器,必须在编译GLIBCGLIBC之后,才能之后,才能进行。进行。在这里,要先编译在这里,要先编译C C编译器,然后用编译器,然后用C C编译器编编译器编译译GLIBCGLIBC,最后再编译,最后再编译C+C+编译器编译器要记住要记住hosthost类型(在后续工作中需要),一般类型(在
15、后续工作中需要),一般会在会在configureconfigure执行时的第一行:执行时的第一行:“configuring for a i686-pc-linux-gnu hostconfiguring for a i686-pc-linux-gnu host” 这里利用这里利用“编译本地编译本地GCCGCC”中的源码树中的源码树182.3 2.3 编译编译C C编译器编译器编译:% %mkdir mkdir p /opt/buld/gccp /opt/buld/gcc% %cd /opt/build/gcccd /opt/build/gcc% %/opt/src/gcc-2.95.3/con
16、figure /opt/src/gcc-2.95.3/configure -target=arm-linux -prefix=/opt/arm -target=arm-linux -prefix=/opt/arm -with-cpu=strongarm -disable-languages -with-cpu=strongarm -disable-languages -with-headers=/opt/src/linux/include-with-headers=/opt/src/linux/include% %make make i i ;make -i installmake -i in
17、stall这里这里makemake带上带上-i-i选项,是要忽略选项,是要忽略makemake过程中的所过程中的所有错误。如果不带这个参数,那么就不能正确编有错误。如果不带这个参数,那么就不能正确编译译glibcc.aglibcc.a文件,并在编译文件,并在编译GLIBCGLIBC时出错时出错 192.4 2.4 编译编译GLIBCGLIBC库库源文件源文件 glibc-2.2.5.tar.gz glibc-linuxthreads-2.2.5.tar.gz 准备源码:%cd /opt/src%tar -xzvf /opt/orig/glibc-2.2.5.tar.gz %cd glibc-2
18、.2.5%tar -xzvf /opt/orig/glibc-linuxthreads-2.2.5.tar.gz %mkdir p /opt/build/glibc%cd /opt/build/glibc202.4 2.4 编译编译GLIBCGLIBC库库编译C编译器时曾经记录host类型,在这里用作- -build类型,因为这个类型,configure不能自己识别出来。配置编译:%CC=arm-linux-gcc /opt/src/glibc-2.2.5/configure -target=arm-linux -build=i686-pc-linux-gnu -enable-add-ons
19、-prefix=/opt/arm/arm-linux %make ; make install212.4 2.4 编译编译GLIBCGLIBC库库刚才是给target编译GLIBC;但是交叉编译工具也需要GLIBC库,编译C+编译器配置编译:%CC=arm-linux-gcc /opt/src/glibc-2.2.5/configure -target=arm-linux -build=i686-pc-linux-gnu -enable-add-ons -prefix=/opt/arm %make ; make install222.4 2.4 编译编译GLIBCGLIBC库库其实也可以直接c
20、opy:%cp arf /opt/arm/arm-linux/include/* /opt/arm/include%cp arf /opt/arm/arm-linux/lib/* /opt/arm/lib但是这种情况下,就要手工修改文件/opt/arm/lib/libc.so:GROUP(/opt/arm/lib/libc.so.6 /opt/arm/lib/libc_nonshared.a)232.6 2.6 编译编译kernelkernel和和helloworldhelloworld编译kernel:%cd /opt/src/linux%make dep ARCH=arm%make zIm
21、age ARCH=arm源文件hello.c:#include int main() printf(hello worldn);return 0;使用交叉编译环境工具编译hello.c%arm-linux-gcc -v -o helloarm hello.c243 3 编译编译boot loaderboot loaderboot loader选用red hat 的redboot.详细用户:- docs_externes/redboot.pdf现成的二进制文件: redboot详细用户说明中关于assabet的部分是5.5 Intel SA1110 (Assabet)这里详细介绍如何用源码编译b
22、oot loader。253 3 编译编译redbootredboot3.13.1 准备主机环境准备主机环境3.23.2 编译编译ecosconfigecosconfig3.33.3 编译编译arm-elfarm-elf3.43.4 编译编译redbootredboot263.1 3.1 准备主机环境准备主机环境从获取最新Ecos现在使用放在/opt/src下的ecos.tgz:% cd /opt/src% tar zxvf /opt/orig/ecos.tgz% export ECOS_REPOSITORY=/opt/src/ecos/packages273.2 3.2 编译编译ecosco
23、nfigecosconfigEcosconfig是ecos的配置工具,编译生成的ecosconfig一般比直接下载的更不容易出问题:% mkdir p /opt/build/ecosconfig% mkdir p /opt/ecos-tools% cd /opt/build/ecosconfig % /opt/src/ecos/configure -prefix=/opt/ecos-tools -with-tcl=/usr % make ; make install %export PATH=/opt/ecos-tools/bin:$PATH283.3 3.3 编译编译arm-elfarm-e
24、lfEcos使用的是arm-elf工具,前面编译的arm-linux也是可以用的,但时常也会失灵。这里专门为ecos的redboot编译arm-elf工具,一般情况下,很难用于其它地方所用的源码,都是前面保留在/opt/src下的:/opt/src/gcc-2.95.3/opt/src/binutils-2.12Arm-elf的存放目录:/opt/arm-elf293.3 3.3 编译编译arm-elfarm-elf编译binutils:% mkdir /opt/build/binutils-elf% cd /opt/build/binutils-elf% /opt/src/binutils-
25、2.12/configure-target=arm-elf -prefix=/opt/arm-elf% make ; make install %export PATH=/opt/arm-elf/bin:$PATH303.3 3.3 编译编译arm-elfarm-elf编译GCC:% mkdir /opt/build/gcc-elf% cd /opt/build/gcc-elf% /opt/src/gcc-2.95.2/configure-target=arm-elf -prefix=/opt/arm-elf -with-gnu-as -with-gnu-ld % make all-gcc L
26、ANGUAGES=C C+ % make install-gcc LANGUAGES=C C+ 313.4 3.4 编译编译redbootredboot% mkdir /opt/assabet-redboot% cd /opt/assabet-redboot% ecosconfig new assabet redboot % ecosconfig import /opt/ecos/packages/hal/arm/sa11x0/assabet/current/misc/redboot_RAM.ecm % ecosconfig tree% make323.4 3.4 编译编译redbootred
27、boot如果是使用arm-linux,则:% make COMMAND_PREFIX=arm-linux- 生成的redboot在/opt/assabet-redboot/install/bin下。一共有四种格式,选择redboot.bin:$cp install/bin/redboot.bin /opt/334 4 烧录烧录redbootredboot使用Jflash-linux,通过JTAG(target)+并口(host)对assabet上的flash进行烧录选用Jflash-1.2-1,并作了修改,存为Jflash-1.2-1.tgz编译Jflash:#cd /opt/src#tar
28、zxvf /opt/orig/Jflash-1.2-1.tgz#cd Jflash-1.2-1#make f Make344 4 烧录烧录redbootredboot将JTAG数据线的16pin的Jtag接头接到assabet上,将JTAG数据线的串并口接头接在host上接通assabet的电源,烧录前面生成的redboot.bin:#./Jflash-linux /opt/redboot.bin# minicom配置串口:在minicom窗口内,ctrl+z,释放后,快速按下o,配置串口为(38400,8N1)然后将assabet重启,就会在minicom串口内出现redboot的界面。 3
29、5 5 5 使用使用redbootredboot 现在redboot已经在assabet的flash中redboot能通过串口/CF网卡下载文件到assabet的内存中,并可以将内存中的内容保存在flash上因为串口下载文件的速度太慢,这里只介绍CF网卡通过tftp下载文件365 5 使用使用redbootredboot 简单说明架设tftp服务器过程: 用rpm安装tftpd和tftp的rpm文件 $mkdir /t 用setup工具中的system service选项,启用t 用xinetd工具激活:#xinetd1. 将前面编译好的kernel放置在/t下:$cp /opt/src/li
30、nux/arch/arm/boot/zImage /t 375 5 使用使用redbootredboot 用ifconfig察看host pc的IP,这里记为:00将CF网卡插入assabet的CF插槽,并重启assabet,进入redboot操作界面。redboot操作界面中,设置target上redboot的CF网卡的IP为01:Redboot fconfigFconfig设置IP的详细说明,参阅redboot.pdf386 6 装载并执行装载并执行kernelkernel 下载下载kernelkernel:RedBootRedBoot load -m TFTP load -m TFTP h 00h 00 zImage - zImage -r -b 0 x100000r -b 0 x100000 烧录烧录kernelkernel:RedBootRedBoot fis create kernel -b 0 x100000 fis create kernel -b 0 x100000 l l 0 xc00000 xc0000 执行执行kernel
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 检验职称考试题目及答案
- 2026五年级数学上册 小数乘整数的意义
- 普通话水平测试语音知识考试及答案
- 2026四年级数学下册 观察组合体的遮挡关系
- 伙食管理会制度
- 企业服务包制度
- 产品开发委托制度
- 本科教学教师奖惩制度
- 员工培训课程奖惩制度
- 每日绩效考核奖惩制度
- 2026年宁夏葡萄酒与防沙治沙职业技术学院自主公开招聘工作人员考试参考试题及答案解析
- 2026中央台办所属事业单位招聘10人笔试备考试题及答案解析
- 2025年“安全生产月”《安全知识》培训考试题库及答案
- 2026浙江台州市港航事业发展中心招聘2人考试备考试题及答案解析
- 腹膜透析护理实践指南(2025年版)
- GB/T 1535-2026大豆油
- 2026年课件-冀人版二年级下册科学全册新质教学课件(2026年春改版教材)-新版
- DB34T∕ 2270-2014 铜阳极泥铜、金、银、硒、铋、铅含量的测定波长色散X射线荧光光谱法
- 医务人员批评与自我批评(通用7篇)
- 云南农业大学开题报告
- 特殊环境与运动能力
评论
0/150
提交评论