《交叉编译环境》PPT课件.ppt_第1页
《交叉编译环境》PPT课件.ppt_第2页
《交叉编译环境》PPT课件.ppt_第3页
《交叉编译环境》PPT课件.ppt_第4页
《交叉编译环境》PPT课件.ppt_第5页
已阅读5页,还剩61页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第4章:嵌入式交叉编译环境及系统裁剪,4.1 嵌入式交叉编译环境构建 4.2 Bootloader程序 4.3 Linux操作系统的裁剪和编译,第4章:嵌入式交叉编译环境及系统裁剪,4.1 嵌入式交叉编译环境构建 4.2 Bootloader程序 4.3 Linux操作系统的裁剪和编译,在通用计算机上开发软件时,一般是软件开发环境(编译、调试)与软件运行环境相同。,(1)什么叫交叉编译? (2)为什么要使用交叉编译?,1、交叉编译概述,交叉开发(Cross Developing)的模式是指: 开发系统在PC机(一般称为宿主机或host)上,即完成软件的编辑、编译、链接等工作;软件的运行是在嵌入式设备(一般称为目标机或target)上。,宿主机,目标机,交叉编译定义: 交叉编译是指:在宿主机上进行软件编辑、编译、链接等,并生成能够在目标机上运行的可执行程序的过程。,宿主机,目标机,使用交叉编译的原因: 由于嵌入式系统的硬件资源有限,不能安装编译所需要的资源。,开发机与目标机的不同,体系结构不同 处理能力不同 运行的操作系统不同 输入输出方式不同,(1)实时在线仿真 (2)模拟调试 (3)软件调试 (3)OCD调试,2、嵌入式常用的调试方法,(1)实时在线仿真(ICE)方式 实时在线仿真(In-Circuit Emulator,ICE)是一种用于替代目标上CPU的设备,可以执行目标机CPU指令,能够将内部的信号输出到被控的目标机,ICE上的内存也可以被映射到用户的程序空间。这样,即使目标机不存在,也可以进行代码调试。,实时在线仿真具有以下优缺点: 优点:功能非常强大,软硬件均可做到完全实时在线调试。 缺点:价格昂贵。,(2)模拟调试 调试工具和待调试的嵌入式软件都在宿主机上运行,由宿主机提供一个模拟的目标运行环境,可以进行语法和逻辑上的调试。,优点:简单方便,不需要目标机,成本低。 缺点:功能非常有限,无法实时调试。,(3)软件调试 宿主机和目标机通过某种接口(通常是串口)连接,宿主机上提供调试界面,待调试软件下载到目标机上运行。这种方式的先决条件是在宿主机和目标机之间建立起通信联系(目标机上需要固化监控程序),将一段称为ROM Monitor的程序固化在目标机上,负责监控目标机上被调试程序的运行。,优点:纯软件,价格较低,简单,软件调试能力较强。 缺点:需要事先在目标机上烧写监控程序(往往需多次试验才能成功),且目标机能正常工作,功能有限,特别是硬件调试能力较差。,(4)OCD方式 OCD(片上调试器)将ICE提供的实时跟踪和运行控制分开,使用很少的实时跟踪功能放弃,而大量使用的运行控制放到目标机的CPU核内,由一个专门的调试控制逻辑模块来实现,并用一个专用的串行信号接口开放给用户。这样,OCD可以提供ICE80%的功能,成本还不到ICE的20%。,由于历史原因,OCD有许多不同的实现方式,标准并不统一。 比较典型的有: IBM和TI公司提出的连接测试存取组(Joint Test Action Group,JTAG)。 Motorola公司提出的后台调试模式(Background Debugging Method, BDM),JTAG仿真器的功能有2种. 第一是完成程序仿真调试; 第二,完成对Flash存储器的烧写。,本课程使用的调试方法是:软件调试方式。 其中:ROM Monitor程序是利用JTAG写入Flash存储器。,嵌入式交叉编译硬件连接图,串口线,网线,JTAG,3、交叉编译环境构建,交叉编译环境构建包括2个部分: 第一部分是:宿主机(嵌入式交叉编译环境) PC+Linux+交叉编译器+库函数。 第二部分是:目标机(嵌入式软件运行环境) 实验箱+引导程序+嵌入式操作系统。,方案1: 宿主机上应安装的软件有: Linux操作系统 软件开发工具包 交叉编译工具包,宿主机交叉编译软件配置,方案2: 宿主机上应安装的软件有: Windows操作系统+虚拟机(Linux操作系统)+Samba服务 软件开发工具包 交叉编译工具包,串口线 (终端方式操作),网线 (将硬盘,让实验箱使用),宿主机(host),目标板(target),1、在宿主机上,安装好Linux操作系统 Linux操作系统,如果安装了gcc编译。就可以进行c语言程序编译。,1、在宿主机上,安装好Linux操作系统 Linux操作系统,如果安装了gcc编译。就可以进行c语言程序编译。,2、安装NFS服务器,3、安装交叉编译软件包 主要目的是:提供一套与目标机一致的库函数和编译器。,要实现交叉编译需要的软件有: 交叉编译工具(一组编译器、库函库和头文件),安装步骤: 博创公司提供了一套开发工具光盘。光盘中有一个安装批处理文件install.sh。运行安装程序后,会自动新建2个目录。,arm2410s目录主要存放:linux内核源代码、各种实验源程序等。,opt目录主要存放:交叉编译器、资源库、头文件等。,1、交叉主编译器:armv4l-unknown-linux-gcc 2、主编译器存放的目录:/opt/host/armv4l/bin/ 3、自动搜索主编译器的方法: 在文件/root/.bash_profile中,修改PATH变量,变成 PATH=$PATH:$HOME/bin:/opt/host/armv4l/bin/ 存盘后运行/root/.bash_profile文件使其生效。,开发环境相关说明:,Linux开发软件的目录介绍 /arm2410s/exp 各种实验的源代码 /arm2410s/minigui minigui应用程序和库的源代码 /arm2410s/kernel-2410s 2410-s平台Linux内核源代码 /arm2410s/img/vivi 系统引导程序 /arm2410s/img/zImage ARMLinux-2.4内核压缩映象文件 /arm2410s/img/root.cramfs 根文件系统象文件 /arm2410s/img/yaffs.tar.bz2 demos演示程序的压缩文件/arm2410s/kernel-2410s/include 交叉编译时头文件目录 /opt/host/armv4l/bin/armv4l-unknown-linux-gcc 主编译器,在进行嵌入式软件开发调试时,需要使用工具充当目标机的信息输出监视器,这个工具通常是串口通信软件。 (1)如果宿主机安装的是Windows操作系统,则可以选择超级终端串口通信软件; (2)缩主机安装的是Linux操作系统,则可以选择minicom串口通信软件。,4、串口通信软件配置,选项: (1)选串口。在linux系统中COM1的设备文件名为/dev/ttyS0。 (2)速度等参数。“115200 8N1”,5、Flash程序烧写,在宿主机上编译好引导程序、Linux系统内核、根文件系统、应用程序。然后,将它们烧写到目标机的Flash中。,比较典型的是将Flash分成5个分区,分别用于保存引导程序(BootLoader)、启动参数、系统内核、根文件系统和应用程序等,,1、确定flash空间如何分配。,2、准备好以下软件: 引导程序(vivi)-vivi 参数(param) 内核(kernel)-zImage 根文件系统(root)-root.cramfs 应用程序-yaffs.tar,(3)硬件连接,Windows操作系统,(4)安装驱动程序(P99),(5)设置超级终端(P99),(6)烧写vivi步骤,第1步: sjf2410 /f:vivi,第2步:分区 vivibon part 0 128k 192k 1216k 4288k:m 64704k,第3步:查看分区(bon分区) vivibon part info,No offset size flags bad 0: 0x0000 0000 0x0002 0000 0000 0000 0 128k 1: 0x0002 0000 0x0001 0000 0000 0000 0 64k 2: 0x0003 0000 0x0010 0000 0000 0000 0 1M 3: 0x0013 0000 0x0030 0000 0000 0000 0 3M 4: 0x0043 0000 0x03b0 0000 0000 0001 0 59M 5: 0x03F3 0000 0x000c c000 0000 0000 0 816k,第4步:查看分区(mtd分区) vivi part show,Name offset size flags vivi 0x0000 0000 0x0002 0000 0 128k param 0x0002 0000 0x0001 0000 0 64k kernel 0x0003 0000 0x0010 0000 0 1M root 0x0013 0000 0x0030 0000 4 3M yaffs 0x0043 0000 0x03b0 0000 8 59M ucos 0x03F3 0000 0x000c c000 0 816k,第6步:分区后,flash内的数据全部被删除,所以要重新写入vivi,可以采用前面的方法,也可以用 vivi load flash vivi x 当出现: Ready for downloading using xmodem Waiting ,第6步:分区后,flash内的数据全部被删除,所以要重新写入vivi,可以采用前面的方法,也可以用 vivi load flash vivi x,第7步:烧写入内核 vivi load flash kernel x,第8步:烧写入根文件系统 vivi load flash root x,第9步:烧写入根应用程序 不使用串口,而用ftf服务器,第4章:嵌入式交叉编译环境及系统裁剪,4.1 嵌入式交叉编译环境构建 4.2 Bootloader程序 4.3 Linux操作系统的裁剪和编译,一、初识BootLoadert程序,从Linux系统角度看,通常可以分为四个层次,即:,引导加载程序(BootLoader) Linux内核 根文件系统 用户应用程序,嵌入式软件系统分四层,嵌入式系统的BootLoader程序相当于PC中的什么程序?,相当于:BIOS+MBR,大多数BootLoader程序都包括两种不同的操作模式:,启动加载模式(Bootloading) 下载模式(Downloading),1、按Enter按进行启动加载模式。 2、按其它键进行下载模式。,1、启动加载模式。,2、下载模式。,下载模式能够做什么?,1、分区,2、从宿主机上下载文件到SDRAM或FLASH,3、引导系统,查看FLASH分区命令(part show),BootLoader程序的结构框架分两部分:,Stage1(用汇编语言来实现,主要进行设备的初始化) Stage2下载模式(用C语言来实现,增强程序的移植性和可读性),二、BootLoadert程序结构,Stage1通常包括以下步骤: 硬件设备初始化 为Stage2准备RAM空间 拷贝Stage2到RAM中 设置好堆栈 跳转到Stage2的入口,Stage2通常包括以下步骤: 初始化本阶段使用到的硬件设备 检测系统内存映射(Memory Map) 将Kernel和根文件系统从Flash上读到RAM空间 设置内核启动参数 引导内核,常用的引导程序有: u-boot Blob ARMboot RedBoot vivi,三、常用的BootLoadert程序,(1)U-Boot U-Boot,全称 Universal BootLoader,是遵循GPL条款的开放源码项目。 支持的操作系统:Linux, VxWorks, QNX等。 支持的处理器:ARM、PowerPC、MIPS、 x86等。 源码下载:,(2)Blob Blob是Boot Loader Object的缩写。它遵循GPL,源泉代码完全开放。 Blob最初是为一块专用开发板写的(处理器是StrongARM SA-1100)。现在Blob已经被移植到了很多CPU上。 源码下载:/projects/blob,(3)ARMBoot Armboot是一个bootloader,是为基于ARM或者StrongARM CPU的嵌入式系统所设计的。它支持多种类型的Flash。 源码下载:/projects/armboot,(4)RedBoot Redboot 是Red Hat公司开发的一个独立运行在嵌入式系统上的BootLoader程序,是目前比较流行的一个功能、可移植性好的BootLoader。 源码下载:/rdboot,(5)vivi vivi 是韩国mizi 公司开发的bootloader, 适用于ARM9处理器。 目前实验箱上使用的Bootloader是vivi 源码下载:,vivi(下载模式)使用的典型命令 load :用于加载文件到内存或Flash中 part:显示Flash的分区,包括vivi,kernel,rootfs等的位置 param:修改vivi的参数,如核心命令行参数 f

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论