构建嵌入式Linux开发平台.ppt
《构建嵌入式Linux开发平台.ppt》由会员分享,可在线阅读,更多相关《构建嵌入式Linux开发平台.ppt(68页珍藏版)》请在三一办公上搜索。
1、第6章 构建嵌入式Linux开发平台,6.1 嵌入式交叉编译环境搭建,交叉编译的含义:就是在一个平台上生成另一个平台上可执行的目标代码。平台的含义:处理器的体系结构;运行的操作系统。说明:操作系统或处理器体系结构不同则是不同的平台,嵌入式交叉编译,在嵌入式系统开发过程中一般把进行交叉编译的主机称为宿主机,也就是普通的通用计算机,而把程序实际的运行环境称为目标机,也就是嵌入式系统环境。编译的过程包括编译、汇编、链接等几个阶段,因此,嵌入式的交叉编译也包括交叉编译、交叉汇编、交叉链接等过程。,嵌入式交叉编译环境模型,交叉编译器的安装过程 1)在/usr/local/目录下新建arm目录,并进入该目
2、录。rootvm-dev local#mkdir armrootvm-dev local#cd arm 2)使用cp命令,把拷贝到新建立的/usr/local/arm目录下。3)解压交叉编译器安装文件()。rootvm-dev arm#说明:上述命令执行完毕,在当前目录下将会增加文件夹,这就是交叉编译器所在目录。,4)增加编译器路径。rootvm-dev arm#vi/etc/profile.#Path manipulationIf id-u=0;thenpathmunge/sbinpathmunge/usr/sbinpathmunge/usr/local/sbinFi 说明:编译路径保存在/
3、etc/的profile文件中,因此打开的是profile文件,并在路径字段添加上,示例中的下划线语句。也可以使用环境变量添加编译器路径。,6.2 U-Boot移植,系统启动程序Bootloader是在操作系统内核运行之前运行的一段程序,类似于通用计算机中的BIOS程序。通过这段程序,可以完成硬件设备的初始化,并建立内存空间的映射图的功能,从而将系统的软硬件环境带到一个合适的状态,为最终调用操作系统内核做好准备,通常称之为引导系统。,6.2.1 引导系统简介,BootLoader就是在操作系统内核运行之前运行的一段小程序。通过这段小程序初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环
4、境带到一个合适的状态,为调用操作系统内核准备好正确的环境。大多数引导系统都分为stage1和stage2两个阶段。Stage1:依赖于处理器体系结构和板级初始化的代码通常都放在stage1阶段,用汇编语言实现;Stage2:则通常用C语言来实现,这样可以实现更复杂的功能,同时具有更好的可读性和可移植性。,引导系统stage1实现的功能(按先后顺序):硬件设备初始化;为加载引导系统的stage2准备RAM空间;拷贝引导系统的stage2程序到RAM空间中;设置好堆栈;跳转到stage2的C程序入口点。,引导系统stage2实现的功能(按先后顺序):初始化本阶段要用到的硬件设备;检测系统内存映射(
5、memory map);将操作系统内核映像和根文件系统映像从Flash读到RAM空间中;为操作系统内核设置启动参数;调用操作系统内核。,由于引导系统是完全依赖于硬件实现的,不同类别的处理器有不同的汇编语言,不同的开发平台有不同的硬件资源。因此,在嵌入式世界里建立一个通用的Bootloader几乎是不可能的。尽管如此,仍然可以对Bootloader归纳出一些通用的概念来指导特定的Bootloader设计与实现。,Bootloader共性分析,1)CPU体系结构:每一种体系结构的处理器都大量面世。2)Bootloader的安装媒介:处理器的复位地址大多统一。3)Bootloader的启动过程分为单
6、阶段和多阶段两种。4)Bootloader 的操作模式。启动加载模式下载模式5)Bootloader的烧写加载:统一使用JTAG接口。,6.2.2 U-Boot概述,U-Boot(Universal Boot Loader)是遵循GPL条款的开放源码项目。其源码目录、编译形式与Linux内核很相似,事实上,不少U-Boot源码就是相应的Linux内核源程序的简化,尤其是一些设备的驱动程序。U-Boot支持多种类别的嵌入式操作系统的引导。U-Boot支持多种系列的处理器体系结构。U-Boot的前身是PPCBOOT。经由德国DENX软件工程中心的Wolfgang Denk发起并完善起来。,1U-B
7、oot的主要特点开放源码;支持多种嵌入式操作系统内核:如Linux、NetBSD、VxWorks、QNX、RTEMS、ARTOS、LynxOS;支持多个处理器系列:如PowerPC、ARM、x86、MIPS、XScale;较高的可靠性和稳定性;高度灵活的功能设置,适合U-Boot调试、不同操作系统引导要求、产品发布等;丰富的设备驱动源码,如串口、以太网、SDRAM、FLASH、LCD、NVRAM、EEPROM、RTC、键盘等;较为丰富的开发调试文档与强大的网络技术支持。,2U-Boot主要目录结构 board:目标板相关文件,主要包含SDRAM、FLASH驱动等;common:独立于处理器体系
8、结构的通用代码;cpu:CPU相关文件;driver:通用设备驱动,如CFI FLASH驱动;doc:U-Boot的说明文档;examples:可在U-Boot下运行的示例程序;lib_xxx:处理器体系相关的库文件;net:与网络功能相关的文件目录;post:上电自检文件目录;rtc:RTC驱动程序;tools:用于创建U-Boot S-RECORD和BIN镜像文件的工具;,3U-Boot主要功能 系统引导:支持NFS挂载、RAMDISK(压缩或非压缩)形式的根文件系统。基本辅助功能:强大的操作系统接口功能;可灵活设置、传递多个关键参数给操作系统;支持目标板环境参数多种存储方式,如FLASH
9、、NVRAM、EEPROM;CRC32校验,可校验FLASH中内核、RAMDISK镜像文件是否完好。设备驱动:串口、SDRAM、FLASH、以太网、LCD、NVRAM、EEPROM、键盘、USB、PCMCIA、PCI、RTC等驱动支持。上电自检功能:SDRAM、FLASH大小自动检测;SDRAM故障检测;CPU型号。,6.2.3 U-Boot移植过程,1获得U-Boot源码 直接从U-Boot的官方网站下载的源码包,笔者下载的源码包版本为。将源码包拷贝到自己的工作目录下,并解压源码包。rootvm-dev 2410-s#rootvm-dev 2410-s#说明:解压后,当前目录下产生子目录,可
10、进入该目录查看相关信息。,2建立板级支撑包,在board目录下,每一块开发板都有一个对应的目录;需要为自己的开发板建立一个目录;rootvm-dev u-boot-1.3.2#cd board/rootvm-dev board#mkdir up2410rootvm-dev board#cp./smdk2410/*./up2410/rootvm-dev board#cd.说明:为了体现开发板所使用的S3C2410处理器,这里取名up2410,并创建相应的文件。/smdk2410/是U-Boot专门针对S3C2410处理器设计。,U-Boot源码中,专门为S3C2410处理器的开发板建立有一个目录
11、,名为smdk2410,并提供相关的文件支撑。U-Boot为每个开发板都提供有一个独立的配置文件,为smdk2410提供的的配置文件为include/configs/smdk2410.h。用户自己建立的开发板up2410的配置文件可以直接从smdk2410开发板的配置文件修改得到。拷贝操作如下:rootvm-dev u-boot-1.3.2#cp./include/configs/smdk2410.h./include/configs/up2410.h,修改Makefile,使得可以配置自己的开发板:rootvm-dev u-boot-1.3.2#vi Makefile 在Makefile中找
12、到smdk2400的配置项,具体内容如下:smdk2400_config:unconfig$(MKCONFIG)$(:_config=)arm arm920t smdk2400 NULL s3c24x0 在smdk2400配置项下添加用户的开发板配置,添加如下:up2410_config:unconfig$(MKCONFIG)$(:_config=)arm arm920t up2410 NULL s3c24x0这样,用户自己的板级支持包就建好了。,3添加代码,支持从Nand Flash启动 S3C2410开发板通常都没有Nor Flash,只能从Nand Flash启动。而U-Boot默认不支
13、持从Nand Flash启动,需要自己添加代码来实现从Nand Flash启动。,1)修改start.S文件,位于cpu/arm920t/目录下的start.S文件是开发板上电后运行的第一段代码。在start.s文件中添加支持从Nand Flash启动的代码。把Nand Flash里面的代码拷贝到SDRAM中去,而U-Boot本身并没有实现该功能,因此,还需要编写一段代码以实现程序拷贝。,start.S文件实现对nand flash的支持以及使用的同时,要确保nand flash能正常工作。相当于nand flash驱动功能正常。start.S对nand flash操作包括初始化和数据读取。添
14、加nand flash初始化和数据读取功能代码。并形成文件nand.c。nand.c文件作为新增文件,原U-Boot工程管理器尚未包含该文件,需修改Makefile文件。,2)添加nand.c文件,新增加nand.c文件通常涉及一些宏定义、全局变量、系统参数等系统信息。这些系统信息通常用头文件来定义,因此将nand.c程序中用到的一些宏增加到头文件up2410.h中。说明:具体添加内容根据编程者编写的代码情况确定。,3)修改up2410.h文件,up2410.h是开发板的配置文件,而U-Boot的一个重要功能就是基础硬件初始化,因此,需要在up2410.h文件中增加一些初始化配置信息。1)网卡
15、配置(U-Boot自带对CS8900网卡芯片的支持)2)添加命令便于调试及使用 3)修改环境变量主要包括启动延时、串口波特率、MAC地址、TCP/IP属性等。4)修改命令提示符目标机开机后的提示信息。5)修改默认下载地址需要跟开发板硬件的SDRAM地址保持一致。6)修改环境变量在Flash中的存储地址,4开发板硬件配置,5修改网卡驱动 开发板厂商通常都在配套光盘里提供有网卡芯片的驱动程序,如Magic ARM2410开发板配套光盘里提供有dm9000 x.c和dm9000 x.h两个文件,把这两个文件拷贝到u-boot源代码目录下的drivers/net下,替换掉U-Boot自身的网卡驱动文件
16、。,6编译U-Boot,首先make开发板的配置文件:rootvm-dev u-boot-1.3.2#make up2410_configConfiguring for up2410 board.rootvm-dev u-boot-1.3.2#然后运行make命令进行U-Boot编译:rootvm-dev u-boot-1.3.2#make 编译完成后,会在U-Boot的源代码目录下生成u-boot.bin文件。这个文件就是最终生成的bootloader目标文件。,7加载U-Boot 用JTAG加载器连接宿主机和目标机,并接通目标机电源。将编译得到的u-boot.bin和烧写器文件sjf241
17、0-s.exe(通常随开发板配套光盘附带,即使光盘里面没有该文件,也可以通过安装givieo获得)拷贝到windows环境下的某个指定位置(如E盘)。在windows环境下打开一个DOS对话框,并进入到u-boot.bin 和sjf2410-s.exe存放位置,运行sjf2410-s.exe程序进行u-boot.bin加载。,8测试U-Boot 现在U-Boot已经加载到开发板上,可以启动开发板检测是否加载正确。,连接好开发板和主机之间的串口;断开开发板的JTAG下载线;打开windows系统提供的超级终端软件;设置串口连接参数。包括波特率、每帧数据位数、奇偶校验方式、停止位数、数据流控制方式
18、等;启动开发板。,U-Boot 1.3.2(Dec 5 2010-10:35:38)DRAM:64 MBFlash:512 kBNAND:64 MB*Warning-bad CRC or NAND,using default environment In:serialOut:serialErr:serialHit any key to stop autoboot:0 xch-2410-S#,如果加载成功,会在超级终端界面上出现如下内容:,说明:产生警告原因,主要是因为没有把环境变量写入Flash。,6.3 Linux内核移植,6.3.1 概述,嵌入式系统启动过程,典型的Flash存储空间分配
19、操作系统作为一组管理软硬件资源的程序,它能够管理内存、决定系统资源分配、控制输入/输出设备以及管理网络文件等,是系统软硬件之间的纽带,其典型存储地址结构如图所示。,6.3.2 Linux内核移植过程,1获得Linux源码(http:/)将得到的Linux源码拷贝到对应的工作目录下,解压。rootvm-dev 2410-s#tar-jxvf说明:这里以为示例,内核解压后,当前目录下自动新建一个名为的子目录,可进入该目录查看Linux目录结构。rootvm-dev 2410-s#cdrootvm-dev linux-2.6.24.4#ls,2修改Makefile文件 Magic ARM2410的主
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 构建 嵌入式 Linux 开发 平台
链接地址:https://www.31ppt.com/p-5061995.html