您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 其它行业文档 > 嵌入式Linux在ARM开发板上的移植
嵌入式linux在arm开发板上的移植北京泰科威科技有限公司嵌入式linux在arm开发板上的移植linux在嵌入式设备上的应用越来越广泛,非常多的嵌入式设备都开始由使用其它嵌入式OS向使用linux转变。随着嵌入式技术的发展,现在有越来越多的人才投入到嵌入式开发队伍中来,为了初学者能更快的踏进嵌入式开发的大门,有大量的开发板、学习板也应运而生,以基于arm处理器的最多,所以今天所介绍的主题就是“嵌入式linux在arm开发板上的移植”,希望能对刚开始接触嵌入式开发的爱好者们提供一些微薄的帮助。Arm系列微处理器Arm家族基本分为arm7、arm9和arm10几个系列,其中arm7和arm9应用最为广泛。ARM7的处理速度为0.9MIPS/MHz,常见的ARM7芯片系统主时钟为20MHz-133MHzARM9的处理速度为1.1MIPS/MHz,常见的ARM9的系统主时钟为100MHz-233MHzARM10最高可以达到700MHzTarget嵌入式开发基本模型HostICESerial并口JTAG嵌入式系统的引导文件的下载不同种类的芯片具有不同下载方式使用JTAG或ICE特殊芯片的特殊引导方法嵌入式系统的引导文件的下载1.通过JTAG口下载通常ARM处理器都支持JTAG调试端口,通过JTAG口下载引导程序到RAM或Flash中,一般都需要专用或通用的ICE系统来支持。嵌入式系统的引导文件的下载JTAG主要的信号线TDOInputTestDataOutfromtargettoICETDIOutputTestDataInfromICEtotargetTCKOutputTestClockoutputfromICEtothetargetTMSOutputTestModeSelectNSRSTInput/Output(可选项)SystemReset,与目标板上的系统复位信号相连。可以直接对目标系统复位,同时可以检测目标系统的复位情况。为了防止误触发,应在目标端加上适当的上拉电阻nTRSTOutput(可选项)JTAG复位。在目标端应加适当的上拉电阻以防止误触发嵌入式系统的引导文件的下载2.通用的ICEARM的硬件开发工具主要包括两类仿真器,一是JTAG仿真器,二是全功能在线仿真器。JTAG仿真器是利用ARM处理器中的调试模块的功能,通过其JTAG边界扫描口来与仿真器连接,如MultiICE、JEENI仿真器等全功能在线仿真器,由于其信真头完全取代目标板上的CPU,因而功能非常强大嵌入式系统的引导文件的下载特殊芯片的特殊引导方法很多嵌入式处理器都提供了自举模式(Bootstrap),供用户写入引导代码。自举模式利用了固化在芯片内部的一段引导程序,当处理器复位时,如果在特定引脚上加信号,则处理器将在复位后执行固化ROM中的程序。自举ROM中的程序完成串口的初始化,然后等待用户从串口写入用户代码。嵌入式系统的引导文件的下载CirrusLogic的clps7111~Ep9312系列ARMcore的CPU内置128字节的boot程序。这个boot程序的功能是:设置串行口的参数为:9600,8N1,NoFlowControl。然后送出一个字符开始接收2K字节程序(Bootloader)送出一个字符跳转去执行这2K的程序。嵌入式系统的引导文件的下载MX1的bootstrap模式MX1提供了4条复位引脚,复位时引脚不同的电平组合可以从不同的片选端启动系统。自举模式所能接受的是一种专门格式的文本文件,包括数据和要写入/读出的地址。通过usb接口下载引导程序(bootloader)PC机中的引导加载程序由BIOS(其本质就是一段固件程序)和位于硬盘MBR中的OSBootLoader(比如,LILO和GRUB等)一起组成嵌入式系统中,加载启动任务就完全由BootLoader来完成,BootLoader就是在操作系统内核运行之前运行的一段小程序BootLoader一般由硬件初始化、通信设备驱动、通信协议处理几个部分构成,有些bootloader还具有写flash的功能引导程序(bootloader)PC机引导方式:BIOS在完成硬件检测和资源分配后,将硬盘MBR中的BootLoader读到系统的RAM中,然后将控制权交给OSBootLoader。BootLoader的主要运行任务就是将内核映象从硬盘上读到RAM中,然后跳转到内核的入口点去运行,也即开始启动操作系统。引导程序(bootloader)嵌入式bootloader在嵌入式系统中,通常并没有像BIOS那样的固件程序(注,有的嵌入式CPU也会内嵌一段短小的启动程序),因此整个系统的加载启动任务就完全由BootLoader来完成。系统在上电或复位时通常都从地址0x00000000处开始执行,而在这个地址处安排的通常就是系统的BootLoader程序。引导程序(bootloader)嵌入式bootloader的作用与特点Bootloader的作用是初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。BootLoader是严重地依赖于硬件而实现的,不可能实现一个通用的bootloader。引导程序(bootloader)Bootloader的实现:由于BootLoader的实现依赖于CPU的体系结构,因此大多数BootLoader都分为stage1和stage2两大部分。依赖于CPU体系结构的代码,比如设备初始化代码等,通常都放在stage1中,而且通常都用汇编语言来实现,以达到短小精悍的目的。而stage2则通常用C语言来实现,这样可以实现给复杂的功能,而且代码会具有更好的可读性和可移植性。引导程序(bootloader)BootLoader的stage1通常包括以下步骤(以执行的先后顺序):硬件设备初始化为加载BootLoader的stage2准备RAM空间拷贝BootLoader的stage2到RAM空间中设置好堆栈跳转到stage2的C入口点引导程序(bootloader)BootLoader的stage2通常包括以下步骤(以执行的先后顺序):初始化本阶段要使用到的硬件设备检测系统内存映射(memorymap)将kernel映像和根文件系统映像从flash上读到RAM空间中为内核设置启动参数引导程序(bootloader)常用的bootloaderBlobRedboot交叉编译环境的建立安装linux服务器或windows下的cygwin环境Gcc和glibc的获取与安装交叉编译环境的建立Linux服务器,通常选择Redhat或Debian。安装成个人桌面、工作站和Server都可以。Cygwin主要是针对在windows下建立交叉开发环境而提供的一种虚拟的unix模拟环境。交叉编译环境的建立Cygwin是CygnusSolutions公司开发的自由软件。核心是写了一个共享库(cygwin.dll),把win32API没有的unix风格的调用(fork,signals,select)等封装在里面。也就是说基于win32API写了一个unix系统库的模拟层。下载网址:交叉编译环境的建立工具链由一套用于编译、汇编和链接内核及应用程序的组件组成。这些组件包括:Binutils—用于操作二进制文件的实用程序集合。它们包括诸如ar、as、objdump、objcopy这样的实用程序。Gcc—GNUC编译器。Glibc—所有用户应用程序都将链接到的C库。避免使用任何C库函数的内核和其它应用程序可以在没有该库的情况下进行编译。交叉编译环境的建立获取途径:一些比较流行的已预编译的工具链包括那些来自Compaq(FamiliarLinux)、LART(LARTLinux)和Embedian(基于Debian但与它无关)的工具链—所有这些工具链都用于基于ARM的平台。armLinux内核的构建获取linux内核根据需要选取armlinuxpatch文件并安装patch配置和编译内核armLinux内核的构建获得linux内核与armpatchlinux内核参考下载网址:或linux-2.4.18-tar.bz2armpatch参考下载网址:://kernel.pr.kr/pub/armlinux/v2.4patch-2.4.18-rmk1.gzarmLinux内核的构建解压缩内核,打armpatchtar–xvzflinux-2.4.18.tar.gz或tar–xvjflinux-2.4.18-tar.bz2cdlinuxzcat../patch-2.4.18-rmk1.gz|patch–p1另一种打patch的方法:gzippatch-2.4.18-rmk1.gz产生patch-2.4.18-rmk1文件cdlinuxpatch–p1../patch-2.4.18-rmk1armLinux内核的构建内核编译过程makemrpropermake‘target-devices’_config(linux/arch/arm/def-config/mx1ads)makeoldconfigmakedepmakezImage将在arch/arm/boot/下生成zImage内核文件。随时可以通过makemenuconfig或makexconfig来配置内核。内核配置系统内核配置系统基本结构Makefile:分布在Linux内核源代码中的Makefile,定义Linux内核的编译规则配置文件(config.in):给用户提供配置选择的功能;配置工具:包括配置命令解释器和配置用户界面(提供基于字符界面、基于Ncurses图形界面以及基于Xwindows图形界面的用户配置界面,各自对应于Makeconfig、Makemenuconfig和makexconfig)。内核配置系统Linux内核中的Makefile以及与Makefile直接相关的文件Makefile:顶层Makefile,是整个内核配置、编译的总体控制文件.config:内核配置文件,包含由用户选择的配置选项,用来存放内核配置后的结果(如makeconfig)arch/*/Makefile:位于各种CPU体系目录下的Makefile,如arch/arm/Makefile,是针对特定平台的Makefile各个子目录下的Makefile:比如drivers/Makefile,负责所在子目录下源代码的管理Rules.make:规则文件,被所有的Makefile使用内核配置系统顶层Makefile有两个主要的任务:产生vmlinux文件内核模块(module)为了达到此目的,顶层Makefile递归的进入到内核的各个子目录中,分别调用位于这些子目录中的Makefile。嵌入式linux的root文件系统几种主要的文件系统Ext2文件格式的ramdiskRomfsCramfs嵌入式linux的root文件系统mke2fs-vm0/dev/ram4096mount-text2/dev/ram/mntcd/mntcp/bin,/sbin,/etc,/dev...filesinmntcd../umount/mntddif=/dev/rambs=1kcount=4096of=ext2ramdisk嵌入式linux的root文件系统一些要包含在Ramdisk中
本文标题:嵌入式Linux在ARM开发板上的移植
链接地址:https://www.777doc.com/doc-3972932 .html