Emvideo亿维东方亿维东方亿维东方亿维东方领先嵌入式视频解决方案嵌入式linux在arm开发板上的移植北京亿维东方科技有限公司亿维东方亿维东方亿维东方亿维东方领先嵌入式视频解决方案服务商嵌入式嵌入式嵌入式嵌入式linux在在在在arm开发板上的移植开发板上的移植开发板上的移植开发板上的移植linux在嵌入式设备上的应用越来越广泛,非常多的嵌入式设备都开始由使用其它嵌入式OS向使用linux转变。随着嵌入式技术的发展,现在有越来越多的人才投入到嵌入式开发队伍中来,为了初学者能更快的踏进嵌入式开发的大门,有大量的开发板、学习板也应运而生,以基于arm处理器的最多,所以今天所介绍的主题就是“嵌入式linux在arm开发板上的移植”,希望能对刚开始接触嵌入式开发的爱好者们提供一些微薄的帮助。Emvideo亿维东方亿维东方亿维东方亿维东方领先嵌入式视频解决方案服务商Arm系列微处理器系列微处理器系列微处理器系列微处理器Arm家族基本分为家族基本分为家族基本分为家族基本分为arm7、、、、arm9和和和和arm10几个系列几个系列几个系列几个系列,,,,其中其中其中其中arm7和和和和arm9应用最为广泛应用最为广泛应用最为广泛应用最为广泛。。。。ARM7的处理速度为0.9MIPS/MHz,常见的ARM7芯片系统主时钟为20MHz-133MHzARM9的处理速度为1.1MIPS/MHz,常见的ARM9的系统主时钟为100MHz-233MHzARM10最高可以达到700MHzEmvideo亿维东方亿维东方亿维东方亿维东方领先嵌入式视频解决方案服务商Target嵌入式开发基本模型嵌入式开发基本模型嵌入式开发基本模型嵌入式开发基本模型HostICESerial并口JTAGEmvideo亿维东方亿维东方亿维东方亿维东方领先嵌入式视频解决方案服务商嵌入式系统的引导文件的下载嵌入式系统的引导文件的下载嵌入式系统的引导文件的下载嵌入式系统的引导文件的下载不同种类的芯片具有不同下载方式使用JTAG或ICE特殊芯片的特殊引导方法Emvideo亿维东方亿维东方亿维东方亿维东方领先嵌入式视频解决方案服务商嵌入式系统的引导文件的下载嵌入式系统的引导文件的下载嵌入式系统的引导文件的下载嵌入式系统的引导文件的下载1.通过JTAG口下载通常ARM处理器都支持JTAG调试端口,通过JTAG口下载引导程序到RAM或Flash中,一般都需要专用或通用的ICE系统来支持。Emvideo亿维东方亿维东方亿维东方亿维东方领先嵌入式视频解决方案服务商嵌入式系统的引导文件的下载嵌入式系统的引导文件的下载嵌入式系统的引导文件的下载嵌入式系统的引导文件的下载JTAG主要的信号线主要的信号线主要的信号线主要的信号线TDOInputTestDataOutfromtargettoICETDIOutputTestDataInfromICEtotargetTCKOutputTestClockoutputfromICEtothetargetTMSOutputTestModeSelectNSRSTInput/Output(可选项)SystemReset,与目标板上的系统复位信号相连。可以直接对目标系统复位,同时可以检测目标系统的复位情况。为了防止误触发,应在目标端加上适当的上拉电阻nTRSTOutput(可选项)JTAG复位。在目标端应加适当的上拉电阻以防止误触发Emvideo亿维东方亿维东方亿维东方亿维东方领先嵌入式视频解决方案服务商嵌入式系统的引导文件的下载嵌入式系统的引导文件的下载嵌入式系统的引导文件的下载嵌入式系统的引导文件的下载2.通用的ICEARM的硬件开发工具主要包括两类仿真器,一是JTAG仿真器,二是全功能在线仿真器。JTAG仿真器是利用ARM处理器中的调试模块的功能,通过其JTAG边界扫描口来与仿真器连接,如MultiICE、JEENI仿真器等全功能在线仿真器,由于其信真头完全取代目标板上的CPU,因而功能非常强大Emvideo亿维东方亿维东方亿维东方亿维东方领先嵌入式视频解决方案服务商嵌入式系统的引导文件的下载嵌入式系统的引导文件的下载嵌入式系统的引导文件的下载嵌入式系统的引导文件的下载特殊芯片的特殊引导方法很多嵌入式处理器都提供了自举模式(Bootstrap),供用户写入引导代码。自举模式利用了固化在芯片内部的一段引导程序,当处理器复位时,如果在特定引脚上加信号,则处理器将在复位后执行固化ROM中的程序。自举ROM中的程序完成串口的初始化,然后等待用户从串口写入用户代码。Emvideo亿维东方亿维东方亿维东方亿维东方领先嵌入式视频解决方案服务商嵌入式系统的引导文件的下载嵌入式系统的引导文件的下载嵌入式系统的引导文件的下载嵌入式系统的引导文件的下载CirrusLogic的clps7111~Ep9312系列ARMcore的CPU内置128字节的boot程序。这个这个这个这个boot程序的功能是程序的功能是程序的功能是程序的功能是:设置串行口的参数为:9600,8N1,NoFlowControl。然后送出一个字符开始接收2K字节程序(Bootloader)送出一个字符跳转去执行这2K的程序。Emvideo亿维东方亿维东方亿维东方亿维东方领先嵌入式视频解决方案服务商嵌入式系统的引导文件的下载嵌入式系统的引导文件的下载嵌入式系统的引导文件的下载嵌入式系统的引导文件的下载MX1的bootstrap模式MX1提供了4条复位引脚,复位时引脚不同的电平组合可以从不同的片选端启动系统。自举模式所能接受的是一种专门格式的文本文件,包括数据和要写入/读出的地址。通过usb接口下载Emvideo亿维东方亿维东方亿维东方亿维东方领先嵌入式视频解决方案服务商引导程序引导程序引导程序引导程序((((bootloader))))PC机中的引导加载程序由BIOS(其本质就是一段固件程序)和位于硬盘MBR中的OSBootLoader(比如,LILO和GRUB等)一起组成嵌入式系统中,加载启动任务就完全由BootLoader来完成,BootLoader就是在操作系统内核运行之前运行的一段小程序BootLoader一般由硬件初始化、通信设备驱动、通信协议处理几个部分构成,有些bootloader还具有写flash的功能Emvideo亿维东方亿维东方亿维东方亿维东方领先嵌入式视频解决方案服务商引导程序引导程序引导程序引导程序((((bootloader))))PC机引导方式:BIOS在完成硬件检测和资源分配后,将硬盘MBR中的BootLoader读到系统的RAM中,然后将控制权交给OSBootLoader。BootLoader的主要运行任务就是将内核映象从硬盘上读到RAM中,然后跳转到内核的入口点去运行,也即开始启动操作系统。Emvideo亿维东方亿维东方亿维东方亿维东方领先嵌入式视频解决方案服务商引导程序引导程序引导程序引导程序((((bootloader))))嵌入式bootloader在嵌入式系统中,通常并没有像BIOS那样的固件程序(注,有的嵌入式CPU也会内嵌一段短小的启动程序),因此整个系统的加载启动任务就完全由BootLoader来完成。系统在上电或复位时通常都从地址0x00000000处开始执行,而在这个地址处安排的通常就是系统的BootLoader程序。Emvideo亿维东方亿维东方亿维东方亿维东方领先嵌入式视频解决方案服务商引导程序引导程序引导程序引导程序((((bootloader))))嵌入式bootloader的作用与特点Bootloader的作用是初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。BootLoader是严重地依赖于硬件而实现的,不可能实现一个通用的bootloader。Emvideo亿维东方亿维东方亿维东方亿维东方领先嵌入式视频解决方案服务商引导程序引导程序引导程序引导程序((((bootloader))))Bootloader的实现:由于BootLoader的实现依赖于CPU的体系结构,因此大多数BootLoader都分为stage1和stage2两大部分。依赖于CPU体系结构的代码,比如设备初始化代码等,通常都放在stage1中,而且通常都用汇编语言来实现,以达到短小精悍的目的。而stage2则通常用C语言来实现,这样可以实现给复杂的功能,而且代码会具有更好的可读性和可移植性。Emvideo亿维东方亿维东方亿维东方亿维东方领先嵌入式视频解决方案服务商引导程序引导程序引导程序引导程序((((bootloader))))BootLoader的的的的stage1通常包括以下步骤通常包括以下步骤通常包括以下步骤通常包括以下步骤(以执行的以执行的以执行的以执行的先后顺序先后顺序先后顺序先后顺序)::::硬件设备初始化为加载BootLoader的stage2准备RAM空间拷贝BootLoader的stage2到RAM空间中设置好堆栈跳转到stage2的C入口点Emvideo亿维东方亿维东方亿维东方亿维东方领先嵌入式视频解决方案服务商引导程序引导程序引导程序引导程序((((bootloader))))BootLoader的的的的stage2通常包括以下步骤通常包括以下步骤通常包括以下步骤通常包括以下步骤(以执行的以执行的以执行的以执行的先后顺序先后顺序先后顺序先后顺序)::::初始化本阶段要使用到的硬件设备检测系统内存映射(memorymap)将kernel映像和根文件系统映像从flash上读到RAM空间中为内核设置启动参数Emvideo亿维东方亿维东方亿维东方亿维东方领先嵌入式视频解决方案服务商引导程序引导程序引导程序引导程序((((bootloader))))常用的bootloaderBlobRedboot亿维东方亿维东方亿维东方亿维东方领先嵌入式视频解决方案服务商交叉编译环境的建立交叉编译环境的建立交叉编译环境的建立交叉编译环境的建立安装linux服务器或windows下的cygwin环境Gcc和glibc的获取与安装Emvideo亿维东方亿维东方亿维东方亿维东方领先嵌入式视频解决方案服务商交叉编译环境的建立交叉编译环境的建立交叉编译环境的建立交叉编译环境的建立Linux服务器,通常选择Redhat或Debian。安装成个人桌面、工作站和Server都可以。Cygwin主要是针对在windows下建立交叉开发环境而提供的一种虚拟的unix模拟环境。Emvideo亿维东方亿维东方亿维东方亿维东方领先嵌入式视频解决方案服务商交叉编译环境的建立交叉编译环境的建立交叉编译环境的建立交叉编译环境的建立Cygwin是CygnusSolutions公司开发的自由软件。核心是写了一个共享库(cygwin.dll),把win32API没有的unix风格的调用(fork,signals,select)等封装在里面。也就是说基于win32API写了一个unix系统库的模拟层。下载网址:亿维东方亿维东方亿维东方亿维东方领先嵌入式视频解决方案服务商交叉编译环境的建立交叉编译环境的建立交叉编译环境的建立交叉编译环境的建立工具链由一套用于编译、汇编和链接内核及应用程序的组件组成。这些组件包括:Binutils—用于操作二进制文件的实用程序集合。它们包括诸如ar、as、objdump、objcopy这样的实用程序。Gcc—GNUC编译器。Glibc—所有用户应用程序都将链接到的C库。避免使用任何C库函数的内核和其它应用程序可以在没有该库的情况下进行编译。Em