欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    嵌入式Linux的交叉编译环境的搭建.ppt

    • 资源ID:5970471       资源大小:424KB        全文页数:58页
    • 资源格式: PPT        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    嵌入式Linux的交叉编译环境的搭建.ppt

    嵌入式Linux交叉编译环境的搭建,2,嵌入式Linux交叉编译环境的构建 嵌入式开发环境的搭建 Bootloader介绍思考题,本章课程:,3,本地开发 vs 交叉平台开发,本地开发:一般软件的开发属于本地开发,也就是说开发软件的系统与运行软件的系统是相同的。交叉平台开发:本课程所涉及到的嵌入式系统开发属于交叉平台开发,也就是说开发软件的系统与运行软件的系统不同。,4,交叉开发平台,主机:开发软件的平台,称为主机,往往是通用电脑;目标机:运行软件的平台,称为目标机,在这里是嵌入式系统。,5,(嵌入式)交叉开发工具,掌握嵌入式开发工具的使用是进行嵌入式开发的前提条件之一与主流开发工具类似,嵌入式交叉开发工具也包括编译器,即能够把一个源程序编译生成一个可执行程序的软件调试工具,即能够对执行程序进行源码或汇编级调试的软件软件工程工具,用于协助多人开发或大型软件项目的管理的软件,6,嵌入式开发环境搭建的内容,一、安装交叉编译器二、使用通讯工具使用串口超级终端的使用Minicom的使用使用通讯工具TFTP方式NFS方式,7,一、安装交叉编译器-安装cross tool,安装cross-tool安装EABI工具(其中即包含交叉编译器等多种工具)以上二者皆可,8,一、安装交叉编译器-方法一-安装EABI工具,交叉编译器的安装搭建交叉编译环境是嵌入式开发的第一步,也是必备一步。交叉编译器完整的安装一般涉及到多个软件的安装(ftp:/pub/),包括binutils、gcc、glibc等binutils主要用于生成一些辅助工具,如objdump、as、ld等;gcc是用来生成交叉编译器,主要生成arm-linux-gcc交叉编译工具glibc主要是提供用户程序所使用的一些基本的函数库。包含以上所需要的工具,安装步骤:解压将解压后的工具包路径添加到系统路径,即如果将解压到/下,那么路径就是:,9,解压EABI工具包,就可以将已经编译好的交叉编译工具包的执行文件解压出来,如图:(注意对比书本P58的图)将编译好的执行文件的路径添加到系统路径中,10,方法二-用CROSSTOOL构建交叉编译工具链,准备工作配置脚本生成交叉编译工具链测试,11,准备工作:单独创建一工作目录下载所需要的软件包:Crosstool:crosstool-0.43.tar.gz(用于构建交叉编译工具)Linux源码:linux2.6.8.tar.gz(linux内核)Gcc.3.4.5.tar.gz(交叉编译器源代码)Glibc.2.3.2.tar.gz(交叉编译函数库)Linux-libc-headers.2.6.12.0.tar.gz(头文件库)(POSIX 线程库)Binutils-2.15.tar.gz(辅助工具库),12,配置脚本 所谓脚本:脚本(script)是使用一种特定的描述性语言,依据一定的格式编写的可执行文件,又称作宏或批处理文件。在这里,就是把编译移植过程中要执行的命令以及系统环境变量的设置等操作写在相应的文本中批量执行。,13,生成交叉编译工具Cd/home/ljd/downloads/crosstool-0.43#进入到解压后的cross包./ljd-arm.sh#运行安装脚本程序,批量执行安装过程所需要的所有命令。若生成成功则出现以下执行文件:参考书本P57 到此,就已经借用crosstool这个辅助工具将交叉编译工具的源代码编译成了执行文件,随后的操作与类似。,14,二、通讯工具的使用-串口,超级终端和Minicom配置及使用1超级终端 打开Windows下的“开始”“附件”“通讯”“超级终端”设置串口连接参数:波特率:115200,数据为8位,无奇偶校验位,停止位1,无硬件流把开发板的串口线和PC机相连,在超级终端的窗口里应能显示相关的串口信息。,15,通讯工具的使用-串口,超级终端和Minicom配置及使用2Minicom首先在命令行中键入“minicom”,这就启动了minicom软件。Minicom在启动时默认会进行初始化配置CTRL+A Z,来查看minicom的帮助CTRL-A O配置minicom的串口参数,选择“Serial port setup”子项,上面列出的配置是minicom启动是的默认配置,用户可以通过键入每一项前的大写字母,分别对每一项进行更改。要对波特率、数据位和停止位进行配置,键入“E”,在该配置界面中,可以键入相应波特率、停止位等对应的字母,即可实现配置,配置完成后按回车键就退出了该配置界面。在确认配置正确后,可键入回车返回上级配置界面,并将其保存为默认配置。可重新启动minicom使刚才配置生效,在连上开发板的串口线之后,就可在minicom中打印出正确的串口信息,16,通讯工具-网络,1、nfs方式的配置及使用安装nfs服务程序:运行命令:sudo apt-get install nfs-kernel-server(在线安装)启动nfs服务 sudo init.d/nfs-kernel-server start进行nfs配置 打开/etc/exports 写入/home/用户名/共享目录*(rw,no_root_squash,sync)重启nfs服务 sudo init.d/nfs-kernel-server restart测试 自己挂载自己,查看是否成功 mount nfs 本机IP:/home/用户名/共享目录/mnt,17,通讯工具-网络,2tftp,tftp协议是简单文件传输协议(1)Linux下tftp服务配置,Linux下tftp的服务器服务是由xinetd所设定的,默认情况下是处于关闭状态。首先,要修改tftp的配置文件,开启tftp服务vi/etc/xinetd.d/tftp#主要要将“disable=yes”改为“no”重启xinetd服务,使刚才的更改生效service xinetd restart使用命令“netstat-au”以确认tftp服务是否已经开启这时,用户就可以把所需要的传输文件放到“/tftpboot”目录下,这样,主机上的tftp服务就可以建立起来了。用直连线(注意:不可以使用网线)把目标板和宿主机连起来,并且将其配置成一个网段的地址,再在目标板上启动tftp客户端程序。,18,通讯工具-网络,(2)Windows下tftp服务配置单击tftpd32下方的设置按钮,进入设置界面,主要配置tftp服务器端地址,也就是本机的地址。重新启动tftpd32软件使刚才的配置生效,服务器端的配置完成了可以用直连线连接目标机和宿主机,在目标机上开启tftp服务进行文件传输。,19,2、Bootloader介绍,1.概念Bootloader就是在操作系统内核运行之前运行的一段程序,它类似于PC机中的BIOS程序(1)Bootloader所支持的CPU和嵌入式开发板(2)Bootloader的安装媒介(3)Bootloader的启动过程分为单阶段和多阶段两种(4)Bootloader的操作模式:“启动加载”和“下载”(5)Bootloader与主机之间进行文件传输所用的通信设备及协议,20,Bootloader是什么?Bootloader是在操作系统运行之前执行的一段小程序。通过这段小程序,我们可以初始化硬件设备、建立内存空间的映像表,从而建立适当的系统软硬件环境,为最终调用操作系统内核做好准备。,Bootloader,21,2.Bootloader启动流程,(1)Bootloader的stage1 基本的硬件初始化,包括屏蔽所有的中断、设置CPU的速度和时钟频率、RAM初始化、初始化LED、关闭CPU内部指令和数据cache灯。为加载stage2准备RAM空间,通常为了获得更快的执行速度,通常把stage2加载到RAM空间中来执行,因此必须为加载Bootloader的stage2准备好一段可用的RAM空间范围。拷贝stage2到RAM中,在这里要确定两点:stage2的可执行映像在固态存储设备的存放起始地址和终止地址;RAM空间的起始地址。设置堆栈指针sp,这是为执行stage2的C语言代码做好准备。(2)Bootloader的stage2 用汇编语言跳转到main入口函数 初始化本阶段要使用到的硬件设备,包括初始化串口、初始化计时器等。在初始化这些设备之前、可以输出一些打印信息。检测系统的内存映射,所谓内存映射就是指在整个4GB物理地址空间中有指出哪些地址范围被分配用来寻址系统的RAM单元。加载内核映像和根文件系统映像,这里包括规划内存占用的布局和从Flash上拷贝数据。设置内核的启动参数。,22,Bootloader的种类,开放源码的Linux引导程序,23,Bootloader介绍-U-Boot概述,1U-Boot简介U-Boot(UniversalBootloader),是遵循GPL条款的开放源码项目2U-Boot特点 开放源码;支持多种嵌入式操作系统内核,如Linux、NetBSD、VxWorks、QNX、RTEMS、ARTOS、LynxOS;支持多个处理器系列,如PowerPC、ARM、x86、MIPS、XScale;较高的可靠性和稳定性;高度灵活的功能设置,适合U-Boot调试,操作系统不同引导要求,产品发布等;丰富的设备驱动源码,如串口、以太网、SDRAM、FLASH、LCD、NVRAM、EEPROM、RTC、键盘等;较为丰富的开发调试文档与强大的网络技术支持。,24,Bootloader介绍-U-Boot概述,3U-Boot主要功能 系统引导:支持NFS挂载、RAMDISK(压缩或非压缩)形式的根文件系统。支持NFS挂载,并从FLASH中引导压缩或非压缩系统内核。基本辅助功能:强大的操作系统接口功能;可灵活设置、传递多个关键参数给操作系统,适合系统在不同开发阶段的调试要求与产品发布,尤其对Linux支持最为强劲;支持目标板环境参数多种存储方式,如FLASH、NVRAM、EEPROM;CRC32校验,可校验FLASH中内核、RAMDISK镜像文件是否完好。设备驱动:串口、SDRAM、FLASH、以太网、LCD、NVRAM、EEPROM、键盘、USB、PCMCIA、PCI、RTC等驱动支持。上电自检功能:SDRAM、FLASH大小自动检测;SDRAM故障检测;CPU型号。特殊功能:XIP内核引导。,25,Bootloader介绍-U-Boot概述,4 U-Boot的烧写JTAG接口需要专用的硬件工具来连接。最简单的方式就是通过JTAG电缆,转接到计算机并口连接。开发板加电(或者复位)时,烧写程序探测到处理器是否存在,并开始通信,然后把Bootloader下载并烧写到Flash中。这种方式速率很慢,平均每秒钟可以烧写100200个字节,不过价格却非常便宜。烧写完成后,复位实验板,串口终端应该显示U-Boot的启动信息。,26,Bootloader介绍-U-Boot概述,11.2.2 U-Boot的常用命令0.help命令bootm命令可以引导启动存储在内存中的程序映像bootp命令通过bootp请求,要求DHCP服务器分配IP地址,然后通过TFTP协议下载指定的文件到内存。cmp命令可以比较两块内存中的内容。.b以字节为单位;.w以字为单位;.l以长字为单位。cp命令可以在内存中复制数据块,包括对Flash的读写操作。crc32命令可以计算存储数据的校验和。echo命令回显参数。erase命令可以擦除Flash。参数必须指定Flash擦除的范围。nand命令可通过不同的参数实现对Nand Flash的擦除、读、写操作flinfo命令打印全部Flash组的信息,也可以只打印其中某个组。,27,Bootloader介绍-U-Boot概述,11.2.2 U-Boot的常用命令go命令可以执行应用程序。iminfo可以打印程序映像的开头信息,包含了映像内容的校验(序列号、头和校验和)。loadb命令可以通过串口线下载二进制格式文件。loads命令可以通过串口线下载S-Record格式文件。mw命令可以按照字节、字、长字写内存,.b、.w、.l的用法与cp命令相同。nm命令可以修改内存,可以按照字节、字、长字操作。printenv命令打印环境变量。protect命令是对Flash写保护的操作,可以使能和解除写保护。rarpboot命令把指定的文件下载到指定地址,然后执行。run命令执行环境变量中的命令,后面参数可以跟几个环境变量名。setenv命令可以设置环境变量。sleep命令可以延迟N秒钟执行,N为十进制数。,28,U-Boot的编译和使用,什么是U-Boot 最早,DENX软件工程中心的Wolfgang Denk基于8xxrom的源码创建了PPCBOOT工程,并且不断添加处理器的支持。后来,Sysgo Gmbh把PPCBOOT移植到ARM平台上,创建了ARMBOOT工程。然后以PPCBOOT工程和ARMBOOT工程为基础,创建了U-Boot工程。,29,U-Boot的编译和使用,U-Boot编译 U-Boot目录可以分为三类:与处理器体系结构或者开发板硬件直接相关。一些通用的函数或驱动。U-Boot的应用程序、工具或者文件。,30,U-Boot的编译和使用,U-Boot目录结构,31,U-Boot的编译和使用,U-Boot的源码是通过gcc和Makefile组织编译的。顶层目录下的Makefile首先可以设置开发板的定义,然后递归地调用各级子目录下的Makefile,最后把编译过的程序链接成U-Boot映像。顶层目录下的 Makefile它负责u-boot整体配置编译。每一种开发板在Makefile都需要有板子配置的定义。配置u-boot:make smdk2410_config编译:make,32,U-Boot的编译和使用,U-Boot生成镜像文件,33,U-Boot的编译和使用,U-Boot工具,34,U-Boot的编译和使用,U-Boot命令介绍bootm命令 bootm命令可以引导启动存储在内存中的程序映像。这些内存包括RAM和可以永久保存的Flash。第1个参数addr是程序映像的地址,这个程序映像必须转换成U-Boot的格式。第2个参数对于引导Linux内核有用,通常作为U-Boot格式的RAMDISK映像存储地址;也可以是传递给Linux内核的参数(默认情况下传递bootargs环境变量给内核)。,35,U-Boot的编译和使用,U-Boot命令介绍bootp命令bootp命令通过bootp请求,要求DHCP服务器分配IP地址,然后通过TFTP协议下载指定的文件到内存。第1个参数是下载文件存放的内存地址。第2个参数是要下载的文件名称,这个文件应该在开发主机上准备好。,36,U-Boot的编译和使用,U-Boot命令介绍cmp命令cmp命令可以比较两块内存中的内容。.b以字节为单位;.w以字为单位;.l以长字为单位。注意:cmp.b中间不能保留空格,需要连续输入命令。第1个参数addr1是第一块内存的起始地址。第2个参数addr2是第二块内存的起始地址。第3个参数count是要比较的数目,单位是字节、字或者长字。,37,U-Boot的编译和使用,U-Boot命令介绍cp命令cp命令可以在内存中复制数据块,包括对Flash的读写操作。第1个参数source是要复制的数据块起始地址。第2个参数target是数据块要复制到的地址。这个地址如果在Flash中,那么会直接调用写Flash的函数操作。所以U-Boot写Flash就使用这个命令,当然需要先把对应Flash区域擦干净。第3个参数count是要复制的数目,根据cp.b、cp.w、cp.l分别以字节、字、长字为单位。,38,U-Boot的编译和使用,U-Boot命令介绍crc32命令crc32命令可以计算存储数据的校验和。第1个参数address是需要校验的数据起始地址。第2个参数count是要校验的数据字节数。第3个参数addr用来指定保存结果的地址。,39,U-Boot的编译和使用,U-Boot命令介绍echo命令echo命令回显参数,40,U-Boot的编译和使用,U-Boot命令介绍erse命令erase命令可以擦除Flash。参数必须指定Flash擦除的范围。按照起始地址和结束地址,start必须是擦除块的起始地址;end必须是擦除末尾块的结束地址。这种方式最常用。,41,U-Boot的编译和使用,U-Boot命令介绍nand命令nand命令可以通过不同的参数实现对Nand Flash的擦除、读、写操作。常见的几种命令的含义如下(具体格式见help nand)。nand erase:擦除Nand Flash。nand read:读取Nand Flash,遇到flash坏块时会出错。nand read.jffs2:读取Nand Flash,遇到坏块时会把坏块部分对应的内容填充为0 xff,不会出错。nand read.jffs2s:读取Nand Flash,遇到坏块时自动跳过(建议使用)。nand write:写Nand Flash,nand write命令遇到flash坏块时会出错。nand write.jffs2:写Nand Flash,可自动跳过坏块(建议使用)。,42,U-Boot的编译和使用,U-Boot命令介绍flinfo命令nand命令可以通过不同的参数实现对Nand Flash的擦除、读、写flinfo命令打印全部Flash组的信息,也可以只打印其中某个组。一般嵌入式系统的Flash只有一个组。,43,U-Boot的编译和使用,U-Boot命令介绍go命令go命令可以执行应用程序。第1个参数是要执行程序的入口地址。第2个可选参数是传递给程序的参数,可以不用。,44,U-Boot的编译和使用,U-Boot命令介绍iminfo命令iminfo可以打印程序映像的开头信息,包含了映像内容的校验(序列号、头和校验和)。第1个参数指定映像的起始地址。可选的参数是指定更多的映像地址。,45,U-Boot的编译和使用,U-Boot命令介绍loadb命令loadb命令可以通过串口线下载二进制格式文件。,46,U-Boot的编译和使用,U-Boot命令介绍loads命令loads命令可以通过串口线下载S-Record格式文件。,47,U-Boot的编译和使用,U-Boot命令介绍mw命令mw命令可以按照字节、字、长字写内存,.b、.w、.l的用法与cp命令相同。第1个参数address是要写的内存地址。第2个参数value是要写的值。第3个可选参数count是要写单位值的数目。,48,U-Boot的编译和使用,U-Boot命令介绍nfs命令nfs命令可以使用NFS网络协议通过网络启动映像。,49,U-Boot的编译和使用,U-Boot命令介绍printenv命令printenv命令打印环境变量。可以打印全部环境变量,也可以只打印参数中列出的环境变量。,50,U-Boot的编译和使用,U-Boot命令介绍protect命令protect命令是对Flash写保护的操作,可以使能和解除写保护。第1个参数on代表使能写保护;off代表解除写保护。第2、第3个参数是指定Flash写保护操作范围,跟擦除的方式相同。,51,U-Boot的编译和使用,U-Boot命令介绍rarpboot命令rarpboot命令可以使用TFTP协议通过网络启动映像。也就是把指定的文件下载到指定地址,然后执行。第1个参数是映像文件下载到的内存地址。第2个参数是要下载执行的镜像文件。,52,U-Boot的编译和使用,U-Boot命令介绍run命令run命令可以执行环境变量中的命令,后面参数可以跟几个环境变量名。,53,U-Boot的编译和使用,U-Boot命令介绍setenv命令setenv命令可以设置环境变量。第1个参数是环境变量的名称。第2个参数是要设置的值,如果没有第2个参数,表示删除这个环境变量。,54,U-Boot的编译和使用,U-Boot命令介绍sleep命令tftpboot命令可以使用TFTP协议通过网络下载文件。按照二进制文件格式下载。另外使用这个命令,必须配置好相关的环境变量。例如serverip和ipaddr。第1个参数loadAddress是下载到的内存地址。第2个参数是要下载的文件名称,必须放在TFTP服务器相应的目录下。,55,U-Boot移植,在顶层Makefile中为开发板添加新的配置选项创建一个新目录存放开发板相关的代码,并且添加新文件 为开发板添加新的配置文件 配置开发板 编译U-Boot 添加驱动或者功能选项 调试U-Boot源代码,直到U-Boot在开发板上能够正常启动,56,思考题,什么是交叉工具链?如何创建?超级终端在嵌入式开发中起到的作用是什么?如何配置?什么是Bootloader?什么是U-Boot?简述其主要的目录结构。如何编译U-Boot?,57,小结,本章主要讲解搭建嵌入式Linux开发的环境的整个流程。本章首先讲解如何搭建嵌入式交叉开发环境,包括交叉编译环境、各种服务程序和应用程序的安装、配置和使用。为了驱动目标板,我们必须要先做好Bootloader、操作系统内核以及文件系统。本章介绍Bootloader的概念以及U-Boot的编译和移植的方法;接下来讲解Linux内核的相关知识,主要讲解了内核编译和移植的方法;本章最后还介绍了Linux根文件系统的构建。因为嵌入式系统的特点,它的开发与PC机上开发相比有很多复杂的前提工作,这正是嵌入式开发的难点之一,希望读者熟悉开发环境搭建的每个环节。,58,思考与练习,在读者的主机上搭建交叉编译环境,并用交叉编译器编译hello.c程序。移植与编译FS2410目标板平台的U-Boot、内核。在主机上安装和配置minicom、tftp、nfs等应用程序和服务器,并通过这些软件进行嵌入式系统的应用程序开发。,

    注意事项

    本文(嵌入式Linux的交叉编译环境的搭建.ppt)为本站会员(牧羊曲112)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开