




已阅读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 tftpservicetftp socket 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状态 netstat au 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 5
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 企业签订劳动合同的员工绩效考核与薪酬福利调整
- 知识产权保护与侵权处理合作协议规范版
- 离婚房产分割及权益调整合同范本:专业律师团队定制
- 离婚房产分割及子女抚养、教育经费协议书
- 离婚协议股权分割及共同债务承担协议
- 租赁房屋合同租金递增及租赁期限调整补充协议
- 口腔医疗培训机构医师聘用与课程开发合同
- 夫妻共同财产清算与分割离婚协议执行书
- 离婚子女保险协议书模板(明确子女保险权益)
- 2025合同修改对担保责任的影响
- 2022年定安县事业单位考试试题真题及答案
- 职业(工种)标准开发专家推荐表
- 妊娠期高血压用药
- 游泳社会指导员专项理论考试复习题库汇总(附答案)
- 我不是完美小孩
- GB/T 18091-2015玻璃幕墙光热性能
- 2023年高考全国1卷理科数学和答案详解(word版本)
- 大学英语精读第三版第三册课文翻译
- 患者跌倒的预防及管理课件
- 医疗设备验收单
- 质量体系调查表模板(空)
评论
0/150
提交评论