嵌入式Linux开发环境的搭建ppt课件_第1页
嵌入式Linux开发环境的搭建ppt课件_第2页
嵌入式Linux开发环境的搭建ppt课件_第3页
嵌入式Linux开发环境的搭建ppt课件_第4页
嵌入式Linux开发环境的搭建ppt课件_第5页
已阅读5页,还剩48页未读 继续免费阅读

下载本文档

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

文档简介

嵌入式应用程序设计第四章嵌入式Linux开发环境的搭建,.,2,4.1搭建嵌入式Linux交叉开发环境4.2Bootloader4.3Linux内核与移植4.4嵌入式文件系统的构建4.5小结4.6思考与练习,本章课程:,.,3,4.1构建嵌入式Linux开发环境,构建一个Linux系统,需仔细考虑下面几点。(1)选择嵌入式Linux发行版。(2)熟悉开发环境和工具。(3)熟悉Linux内核。(4)熟悉目标板引导方式。(5)熟悉Linux根文件系统。(6)理解Linux内存模型。(7)理解Linux调度机制和进程线程编程。,.,4,4.1.1嵌入式交叉编译环境搭建,交叉编译环境的意义如何搭建嵌入式交叉编译环境嵌入式交叉编译环境包括哪些内容,.,5,4.1.2主机交叉开发环境的配置,配置控制台程序Windows操作系统中有超级终端(HyperTerminal)工具;Linux/Unix操作系统有minicom(使用“minicom”命令启动该软件)等工具,超级终端配置,minicom配置,.,6,4.1.2主机交叉开发环境的配置,配置TFTP服务tftp是一个传输文件的简单协议,它基于UDP协议而实现。此协议设计的时候是进行小文件传输的tftp传输中有3种模式。netascii:8位的ASCII码形式。octet:8位源数据类型。mail:这种模式已经不再支持,它将返回的数据直接返回给用户,而不是保存为文件。,.,7,4.1.2主机交叉开发环境的配置,Linux下TFTP服务配置tftp是一个传输文件的简单协议,它基于UDP协议而实现。此协议设计的时候是进行小文件传输的vim/etc/xinetd.d/tftpservicetftpsocket_type=dgramprotocol=udpwait=yesuser=rootserver=/usr/sbin/in.tftpdserver_args=-s/tftpbootdisable=noper_source=11cps=1002flags=IPv4,.,8,4.1.2主机交叉开发环境的配置,启动TFTP服务$/etc/init.d/xinetdstart关闭TFTP服务$/etc/init.d/xinetdstop重启TFTP服务$/etc/init.d/xinetdrestart查看TFTP状态$netstatau|greptftpProtoRecv-QSend-QLocalAddressForeignAddressStateudp00*:tftp*:*,.,9,4.1.2主机交叉开发环境的配置,Windows下TFTP服务配置在Windows下配置tftp服务需要安装使用tftp服务器软件,常见的可使用tftpd32,网上有很多下载该软件的地方,读者可以自行下载。要注意的是,该软件是tftp的服务器端,而目标板上则是tftp的客户端,.,10,4.1.2主机交叉开发环境的配置,NFS文件系统NFS为NetworkFileSystem的简称,最早是由Sun公司提出发展起来的,其目的就是让不同的机器、不同的操作系统之间可以彼此共享文件。NFS的使用分为服务器端和客户端,其中服务器端提供要共享的文件,而客户端则通过挂载“mount”这一动作来实现对共享文件的访问操作。在嵌入式开发中,通常NFS服务端在宿主机上运行,而客户端在目标板上运行。NFS服务器端是通过读入它的配置文件“/etc/exports”来决定所共享的文件目录的.,.,11,4.1.2主机交叉开发环境的配置,NFS配置配置文件:/etc/exports配置文件每一行格式:共享的目录客户端主机名称或IP(参数1,参数2)NFS配置文件常用参数:NFS配置文件举例:cat/etc/exports/home/david/project*(rw,sync,no_root_squash),.,12,4.1.2主机交叉开发环境的配置,NFS服务启动设置NFS服务在每次系统引导时自动开启:#/sbin/chkconfignfson(在Ubuntu中应该输入/sbin/chkconfignfs-kernel-serveron),.,13,Bootloader是什么?Bootloader是在操作系统运行之前执行的一段小程序。通过这段小程序,我们可以初始化硬件设备、建立内存空间的映像表,从而建立适当的系统软硬件环境,为最终调用操作系统内核做好准备。,4.2Bootloader,.,14,4.2.1Bootloader的种类,.,15,4.2.2U-Boot的编译和使用,什么是U-Boot最早,DENX软件工程中心的WolfgangDenk基于8xxrom的源码创建了PPCBOOT工程,并且不断添加处理器的支持。后来,SysgoGmbh把PPCBOOT移植到ARM平台上,创建了ARMBOOT工程。然后以PPCBOOT工程和ARMBOOT工程为基础,创建了U-Boot工程。,.,16,4.2.2U-Boot的编译和使用,U-Boot编译U-Boot目录可以分为三类:与处理器体系结构或者开发板硬件直接相关。一些通用的函数或驱动。U-Boot的应用程序、工具或者文件。,.,17,4.2.2U-Boot的编译和使用,U-Boot目录结构,.,18,4.2.2U-Boot的编译和使用,U-Boot的源码是通过gcc和Makefile组织编译的。顶层目录下的Makefile首先可以设置开发板的定义,然后递归地调用各级子目录下的Makefile,最后把编译过的程序链接成U-Boot映像。顶层目录下的Makefile它负责u-boot整体配置编译。每一种开发板在Makefile都需要有板子配置的定义。配置u-boot:makesmdk2410_config编译:make,.,19,4.2.2U-Boot的编译和使用,U-Boot生成镜像文件,.,20,4.2.2U-Boot的编译和使用,U-Boot工具,.,21,4.2.2U-Boot的编译和使用,U-Boot命令介绍bootm命令bootm命令可以引导启动存储在内存中的程序映像。这些内存包括RAM和可以永久保存的Flash。第1个参数addr是程序映像的地址,这个程序映像必须转换成U-Boot的格式。第2个参数对于引导Linux内核有用,通常作为U-Boot格式的RAMDISK映像存储地址;也可以是传递给Linux内核的参数(默认情况下传递bootargs环境变量给内核)。,.,22,4.2.2U-Boot的编译和使用,U-Boot命令介绍bootp命令bootp命令通过bootp请求,要求DHCP服务器分配IP地址,然后通过TFTP协议下载指定的文件到内存。第1个参数是下载文件存放的内存地址。第2个参数是要下载的文件名称,这个文件应该在开发主机上准备好。,.,23,4.2.2U-Boot的编译和使用,U-Boot命令介绍cmp命令cmp命令可以比较两块内存中的内容。.b以字节为单位;.w以字为单位;.l以长字为单位。注意:cmp.b中间不能保留空格,需要连续输入命令。第1个参数addr1是第一块内存的起始地址。第2个参数addr2是第二块内存的起始地址。第3个参数count是要比较的数目,单位是字节、字或者长字。,.,24,4.2.2U-Boot的编译和使用,U-Boot命令介绍cp命令cp命令可以在内存中复制数据块,包括对Flash的读写操作。第1个参数source是要复制的数据块起始地址。第2个参数target是数据块要复制到的地址。这个地址如果在Flash中,那么会直接调用写Flash的函数操作。所以U-Boot写Flash就使用这个命令,当然需要先把对应Flash区域擦干净。第3个参数count是要复制的数目,根据cp.b、cp.w、cp.l分别以字节、字、长字为单位。,.,25,4.2.2U-Boot的编译和使用,U-Boot命令介绍crc32命令crc32命令可以计算存储数据的校验和。第1个参数address是需要校验的数据起始地址。第2个参数count是要校验的数据字节数。第3个参数addr用来指定保存结果的地址。,.,26,4.2.2U-Boot的编译和使用,U-Boot命令介绍echo命令echo命令回显参数,.,27,4.2.2U-Boot的编译和使用,U-Boot命令介绍erse命令erase命令可以擦除Flash。参数必须指定Flash擦除的范围。按照起始地址和结束地址,start必须是擦除块的起始地址;end必须是擦除末尾块的结束地址。这种方式最常用。,.,28,4.2.2U-Boot的编译和使用,U-Boot命令介绍nand命令nand命令可以通过不同的参数实现对NandFlash的擦除、读、写操作。常见的几种命令的含义如下(具体格式见helpnand)。nanderase:擦除NandFlash。nandread:读取NandFlash,遇到flash坏块时会出错。nandread.jffs2:读取NandFlash,遇到坏块时会把坏块部分对应的内容填充为0 xff,不会出错。nandread.jffs2s:读取NandFlash,遇到坏块时自动跳过(建议使用)。nandwrite:写NandFlash,nandwrite命令遇到flash坏块时会出错。nandwrite.jffs2:写NandFlash,可自动跳过坏块(建议使用)。,.,29,4.2.2U-Boot的编译和使用,U-Boot命令介绍flinfo命令nand命令可以通过不同的参数实现对NandFlash的擦除、读、写flinfo命令打印全部Flash组的信息,也可以只打印其中某个组。一般嵌入式系统的Flash只有一个组。,.,30,4.2.2U-Boot的编译和使用,U-Boot命令介绍go命令go命令可以执行应用程序。第1个参数是要执行程序的入口地址。第2个可选参数是传递给程序的参数,可以不用。,.,31,4.2.2U-Boot的编译和使用,U-Boot命令介绍iminfo命令iminfo可以打印程序映像的开头信息,包含了映像内容的校验(序列号、头和校验和)。第1个参数指定映像的起始地址。可选的参数是指定更多的映像地址。,.,32,4.2.2U-Boot的编译和使用,U-Boot命令介绍loadb命令loadb命令可以通过串口线下载二进制格式文件。,.,33,4.2.2U-Boot的编译和使用,U-Boot命令介绍loads命令loads命令可以通过串口线下载S-Record格式文件。,.,34,4.2.2U-Boot的编译和使用,U-Boot命令介绍mw命令mw命令可以按照字节、字、长字写内存,.b、.w、.l的用法与cp命令相同。第1个参数address是要写的内存地址。第2个参数value是要写的值。第3个可选参数count是要写单位值的数目。,.,35,4.2.2U-Boot的编译和使用,U-Boot命令介绍nfs命令nfs命令可以使用NFS网络协议通过网络启动映像。,.,36,4.2.2U-Boot的编译和使用,U-Boot命令介绍printenv命令printenv命令打印环境变量。可以打印全部环境变量,也可以只打印参数中列出的环境变量。,.,37,4.2.2U-Boot的编译和使用,U-Boot命令介绍protect命令protect命令是对Flash写保护的操作,可以使能和解除写保护。第1个参数on代表使能写保护;off代表解除写保护。第2、第3个参数是指定Flash写保护操作范围,跟擦除的方式相同。,.,38,4.2.2U-Boot的编译和使用,U-Boot命令介绍rarpboot命令rarpboot命令可以使用TFTP协议通过网络启动映像。也就是把指定的文件下载到指定地址,然后执行。第1个参数是映像文件下载到的内存地址。第2个参数是要下载执行的镜像文件。,.,39,4.2.2U-Boot的编译和使用,U-Boot命令介绍run命令run命令可以执行环境变量中的命令,后面参数可以跟几个环境变量名。,.,40,4.2.2U-Boot的编译和使用,U-Boot命令介绍setenv命令setenv命令可以设置环境变量。第1个参数是环境变量的名称。第2个参数是要设置的值,如果没有第2个参数,表示删除这个环境变量。,.,41,4.2.2U-Boot的编译和使用,U-Boot命令介绍sleep命令tftpboot命令可以使用TFTP协议通过网络下载文件。按照二进制文件格式下载。另外使用这个命令,必须配置好相关的环境变量。例如serverip和ipaddr。第1个参数loadAddress是下载到的内存地址。第2个参数是要下载的文件名称,必须放在TFTP服务器相应的目录下。,.,42,4.2.3U-Boot移植,在顶层Makefile中为开发板添加新的配置选项创建一个新目录存放开发板相关的代码,并且添加新文件为开发板添加新的配置文件配置开发板编译U-Boot添加驱动或者功能选项调试U-Boot源代码,直到U-Boot在开发板上能够正常启动,.,43,4.3Linux内核与移植,Linux内核是Linux操作系统的核心,也是整个Linux功能体现。它是用C语言编写,符合POSIX标准。Linux最早是由芬兰黑客LinusTorvalds为尝试在英特尔X86架构上提供自由免费的类Unix操作系统而开发的。Linux内核主要功能进程管理内存管理文件管理设备管理网络管理,.,44,4.3.1Linux内核结构,.,45,4.3.1Linux内核结构,.,46,4.3.2Linux配置与编译,编译内核之前要先配置。为了正确、合理地设置内核编译配置选项,从而只编译系统需要的功能的代码,一般主要有下面4个考虑。尺寸小节省内存减少漏洞动态加载模块,.,47,4.3.2Linux配置与编译,编译内核的步骤:下载内核源码修改内核目录树根下的的Makefile,指明交叉编译器设置环境变量配置内核产生.config文件输入内核配置命令(makemenuconfig),进行内核选项的选择编译内核下载Linux内核,.,48,4.3.3Linux内核移植,所谓移植就是把程序代码从一种运行环境转移到另外一种运行环境。对于内核移植来说,主要是从一种硬件平台转移到另外一种硬件平台上运行。添加开发板平台支持选项移植开发板驱动程序,.,49,4.4嵌入式文件系统的构建,在嵌入式Linux中,busybox是构造文件系统最常用的软件工具包,它被非常形象地称为嵌入式Linux系统中的“瑞士军刀”,因为它将许多常用的Linux命令和工具结合到了一个单独的可执行程序(busybox)中。虽然与相应的GNU工具比较起来,busybox所提供的功能和参数略少,但在比较小的系统(例如启动盘)或者嵌入式系统中已经足够了。,49

温馨提示

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

评论

0/150

提交评论