嵌入式系统技术与设计 第7章嵌入式操作系统及开发简述.ppt
《嵌入式系统技术与设计 第7章嵌入式操作系统及开发简述.ppt》由会员分享,可在线阅读,更多相关《嵌入式系统技术与设计 第7章嵌入式操作系统及开发简述.ppt(82页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、嵌入式系统技术与设计第第7章章 嵌入式操作系统及开发简述嵌入式操作系统及开发简述嵌入式嵌入式LinuxLinux简介简介7.1构建嵌入式构建嵌入式LinuxLinux开发环境开发环境7.2 BootloaderBootloader7.3LinuxLinux内核与移植内核与移植7.4移植移植Linux 2.6Linux 2.6内核到内核到S3C2410S3C2410平台简述平台简述7.5嵌入式文件系统构建嵌入式文件系统构建7.6 本章介绍了关于嵌入式本章介绍了关于嵌入式LinuxLinux的基本内容。的基本内容。本章从嵌入式开发环境的搭建和交叉编译开始,本章从嵌入式开发环境的搭建和交叉编译开始,
2、介绍了介绍了BootloaderBootloader的概念以及的概念以及U-BootU-Boot的编译方的编译方法;然后介绍了法;然后介绍了LinuxLinux内核的相关知识,主要内核的相关知识,主要讲解了内核编译和移植的方法;本章最后还介讲解了内核编译和移植的方法;本章最后还介绍了绍了LinuxLinux根文件系统的内容。通过本章的学根文件系统的内容。通过本章的学习,读者应熟悉嵌入式习,读者应熟悉嵌入式LinuxLinux的基本开发流程,的基本开发流程,并掌握编译并掌握编译U-BootU-Boot和编译和编译LinuxLinux的方法。的方法。本章主要内容:本章主要内容:嵌入式嵌入式Linu
3、xLinux简介简介配置嵌入式配置嵌入式LinuxLinux开发平台开发平台BootloaderBootloader的编译和移植概要的编译和移植概要内核的编译和移植概要内核的编译和移植概要根文件系统根文件系统7.1 7.1 嵌入式嵌入式LinuxLinux简介简介 LinuxLinux是一种类是一种类UNIXUNIX操作系统。操作系统。嵌入式嵌入式LinuxLinux是在是在LinuxLinux基础上经过裁剪,基础上经过裁剪,在嵌入式设备上运行的一种在嵌入式设备上运行的一种LinuxLinux操作系统。操作系统。7.2 7.2 构建嵌入式构建嵌入式LinuxLinux开发环境开发环境 构建开发
4、环境是任何开发工作的基础,对构建开发环境是任何开发工作的基础,对于软、硬件非常丰富的嵌入式系统来说,构建于软、硬件非常丰富的嵌入式系统来说,构建高效、稳定的环境是能否开展工作的重要因素高效、稳定的环境是能否开展工作的重要因素之一。之一。7.2.1 交叉开发环境介绍交叉开发环境介绍 交叉开发环境是由开发主机和目标板两套交叉开发环境是由开发主机和目标板两套计算机系统构成的。计算机系统构成的。图图图图7-1 7-1 交叉开交叉开交叉开交叉开发环发环发环发环境境境境7.2.2 安装交叉开发工具安装交叉开发工具1 1目标板与主机之间连接目标板与主机之间连接 目标板和主机之间通常可以使用串口、以目标板和主
5、机之间通常可以使用串口、以太网接口、太网接口、USBUSB接口及接口及JTAGJTAG接口等方式连接。接口等方式连接。(1 1)串口传输方式。)串口传输方式。(2 2)网络传输方式。)网络传输方式。(3 3)USBUSB接口传输方式。接口传输方式。(4 4)JTAGJTAG接口传输方式。接口传输方式。(5 5)移动存储设备。)移动存储设备。2 2文件传输方式文件传输方式 网络文件系统(网络文件系统(Network File SystemNetwork File System,NFSNFS)最早是)最早是SUNSUN开发的一种文件系统。开发的一种文件系统。3 3配置网络文件系统配置网络文件系统
6、LinuxLinux使用使用GNUGNU的工具,社区的开发者已经的工具,社区的开发者已经编译出了常用体系结构的工具链,从编译出了常用体系结构的工具链,从InternetInternet上可以下载。上可以下载。4 4获取交叉开发工具链获取交叉开发工具链5 5配置过程配置过程 网络文件系统(网络文件系统(Network File SystemNetwork File System,NFSNFS)最早是)最早是SUNSUN开发的一种文件系统。开发的一种文件系统。3 3配置网络文件系统配置网络文件系统7.2.3 主机交叉开发环境配置主机交叉开发环境配置 首先要确认主机的网络接口驱动成功,并首先要确认主
7、机的网络接口驱动成功,并且配置网络接口的且配置网络接口的IPIP地址。地址。1 1配置控制台程序配置控制台程序图图图图7-2 7-2 配置串口控制台配置串口控制台配置串口控制台配置串口控制台2 2开启开启DHCPDHCP服务服务3 3配置配置TFTPTFTP服务服务7.3 7.3 BootloaderBootloader BootloaderBootloader是在操作系统运行之前执行的是在操作系统运行之前执行的一段小程序。通过这段小程序,我们可以初始一段小程序。通过这段小程序,我们可以初始化硬件设备、建立内存空间的映像表,从而建化硬件设备、建立内存空间的映像表,从而建立适当的系统软硬件环境,
8、为最终调用操作系立适当的系统软硬件环境,为最终调用操作系统内核做好准备。统内核做好准备。对于嵌入式系统,对于嵌入式系统,BootloaderBootloader是基于特定是基于特定硬件平台来实现的。硬件平台来实现的。7.3.1 Bootloader的种类的种类 嵌入式系统世界已经有各种各样的嵌入式系统世界已经有各种各样的BootloaderBootloader,种类划分也有多种方式。除了按,种类划分也有多种方式。除了按照处理器体系结构不同划分以外,还有功能复照处理器体系结构不同划分以外,还有功能复杂程度的不同。杂程度的不同。表表表表7-17-1开放源开放源开放源开放源码码码码的的的的Linux
9、Linux引引引引导导导导程序程序程序程序BootloaderMonitor描述X86ARMPowerPCLILO否Linux磁盘引导程序是否否GRUB否GNU的LILO替代程序是否否Loadlin否从DOS引导Linux是否否ROLO否从ROM引导Linux而不需要BIOS是否否Etherboot否通过以太网卡启动Linux系统的固件是否否LinuxBIOS否完全替代BUIS的Linux引导程序是否否BLOB否LART等硬件平台的引导程序否是否U-Boot是通用引导程序是是是RedBoot是基于eCos的引导程序是是是1 1X86X862 2ARMARM3 3PowerPCPowerPC4
10、4MIPSMIPS5 5SHSH6 6M68KM68K7.3.2 U-Boot工程简介工程简介 最早,最早,DENXDENX软件工程中心的软件工程中心的Wolfgang Wolfgang DenkDenk基于基于8xxrom8xxrom的源码创建了的源码创建了PPCBOOTPPCBOOT工程,并且工程,并且不断添加处理器的支持。后来,不断添加处理器的支持。后来,SysgoSysgo GmbhGmbh把把PPCBOOTPPCBOOT移植到移植到ARMARM平台上,创建了平台上,创建了ARMBOOTARMBOOT工工程。然后以程。然后以PPCBOOTPPCBOOT工程和工程和ARMBOOTARMB
11、OOT工程为基础,工程为基础,创建了创建了U-BootU-Boot工程。工程。现在,现在,U-BootU-Boot已经能够支持已经能够支持PowerPCPowerPC、ARMARM、X86X86、MIPSMIPS体系结构的上百种开发板,已经成体系结构的上百种开发板,已经成为功能最多、灵活性最强并且开发最积极的开为功能最多、灵活性最强并且开发最积极的开放源码放源码BootloaderBootloader。目前仍然由。目前仍然由DENXDENX的的Wolfgang Wolfgang DenkDenk维护。维护。7.3.3 U-Boot编译编译 解压解压U-Boot-1.3.1.tar.bz2U-B
12、oot-1.3.1.tar.bz2就可以得到全就可以得到全部部U-BootU-Boot源程序。在顶层目录下有源程序。在顶层目录下有1818个子目录,个子目录,分别存放和管理不同的源程序。分别存放和管理不同的源程序。(1 1)与处理器体系结构或者开发板硬件)与处理器体系结构或者开发板硬件直接相关。直接相关。(2 2)一些通用的函数或者驱动程序。)一些通用的函数或者驱动程序。(3 3)U-BootU-Boot的应用程序、工具或者文件。的应用程序、工具或者文件。表表表表7-27-2U-BootU-Boot的源的源的源的源码顶层码顶层码顶层码顶层目目目目录说录说录说录说明明明明目录特性解释说明boar
13、d平台依赖存放电路板相关的目录文件,如RPXlite(mpc8xx)、smdk2410(arm920t)、sc520_cdp(x86)等目录cpu平台依赖存放CPU相关的目录文件,如mpc8xx、ppc4xx、arm720t、arm920t、xscale、i386等目录lib_ppc平台依赖存放对PowerPC体系结构通用的文件,主要用于实现PowerPC平台通用的函数lib_arm平台依赖存放对ARM体系结构通用的文件,主要用于实现ARM平台通用的函数lib_i386平台依赖存放对X86体系结构通用的文件,主要用于实现X86平台通用的函数include通用头文件和开发板配置文件,所有开发板的
14、配置文件都在configs目录下common通用通用的多功能函数实现lib_generic通用通用库函数的实现Net通用存放网络的程序Fs通用存放文件系统的程序Post通用存放上电自检程序drivers通用通用的设备驱动程序,主要有以太网接口的驱动Disk通用硬盘接口程序Rtc通用RTC的驱动程序Dtt通用数字温度测量器或者传感器的驱动examples应用例程一些独立运行的应用程序的例子,如helloworldtools工具存放制作S-Record或者U-Boot格式的镜像等工具,如mkimageDoc文档开发使用文档1 1顶层目录下的顶层目录下的MakefileMakefile2 2开发板配
15、置头文件开发板配置头文件3 3编译结果编译结果表表表表7-37-3U-BootU-Boot编译编译编译编译生成的生成的生成的生成的镜镜镜镜像文件像文件像文件像文件文件名称说明文件名称说明System.mapU-Boot映像的符号表U-Boot.binU-Boot映像原始的二进制格式U-BootU-Boot映像的ELF格式U-Boot.srecU-Boot映像的S-Record格式7.3.4 U-Boot的移植思路的移植思路 U-BootU-Boot能够支持多种体系结构的处理器,能够支持多种体系结构的处理器,支持的开发板也越来越多。因为支持的开发板也越来越多。因为BootloaderBootlo
16、ader是是完全依赖硬件平台的,所以在新电路板上需要完全依赖硬件平台的,所以在新电路板上需要移植移植U-BootU-Boot程序。程序。开始移植开始移植U-BootU-Boot之前,要先熟悉硬件电路之前,要先熟悉硬件电路板和处理器。板和处理器。以以S3C2410S3C2410处理器的开发板为例,处理器的开发板为例,U-BootU-Boot的的高版本已经支持高版本已经支持SMDK2410SMDK2410开发板。我们可以基开发板。我们可以基于于SMDK2410SMDK2410移植,那么先把移植,那么先把SMDK2410SMDK2410编译通过。编译通过。移植移植U-BootU-Boot的基本步骤如
17、下。的基本步骤如下。(1 1)在顶层)在顶层MakefileMakefile中为开发板添加新中为开发板添加新的配置选项,使用已有的配置项目为例。的配置选项,使用已有的配置项目为例。(2 2)创建一个新目录存放开发板相关的)创建一个新目录存放开发板相关的代码,并且添加新文件。代码,并且添加新文件。(3 3)为开发板添加新的配置文件。)为开发板添加新的配置文件。(4 4)配置开发板。)配置开发板。(5 5)编译)编译U-BootU-Boot。(6 6)添加驱动或者功能选项。)添加驱动或者功能选项。(7 7)调试)调试U-BootU-Boot源代码,直到源代码,直到U-BootU-Boot在在开发板
18、上能够正常启动。开发板上能够正常启动。7.3.5 U-Boot的烧写的烧写 新开发的电路板没有任何程序可以执行,新开发的电路板没有任何程序可以执行,也就不能启动,需要先将也就不能启动,需要先将U-BootU-Boot烧写到烧写到FlashFlash中。如果主板上的中。如果主板上的EPROMEPROM或者或者FlashFlash能够取下来,能够取下来,就可以通过编程器烧写。例如,计算机就可以通过编程器烧写。例如,计算机BIOSBIOS就就存储在一块存储在一块256KB256KB的的FlashFlash上,通过插座与主板上,通过插座与主板连接。但是多数嵌入式单板使用贴片的连接。但是多数嵌入式单板使
19、用贴片的FlashFlash,不能取下来烧写。这种情况可以通过处理器,不能取下来烧写。这种情况可以通过处理器的调试接口,直接对板上的的调试接口,直接对板上的FlashFlash编程。编程。处理器调试接口是为处理器芯片设计的标处理器调试接口是为处理器芯片设计的标准调试接口,包含准调试接口,包含BDMBDM、JTAGJTAG和和EJTAGEJTAG三种接口三种接口标准。标准。JTAGJTAG(Joint Test Action GroupJoint Test Action Group,联合测,联合测试行动小组)是一种国际标准测试协议(试行动小组)是一种国际标准测试协议(IEEE IEEE 1149
20、.11149.1兼容),主要用于芯片内部测试。兼容),主要用于芯片内部测试。JTAGJTAG接口需要专用的硬件工具来连接。接口需要专用的硬件工具来连接。开发板加电(或者复位)时,烧写程序探开发板加电(或者复位)时,烧写程序探测到处理器是否存在,并开始通信,然后把测到处理器是否存在,并开始通信,然后把BootloaderBootloader下载并烧写到下载并烧写到FlashFlash中。这种方式中。这种方式速率很慢,平均每秒钟可以烧写速率很慢,平均每秒钟可以烧写100100200200个字个字节,不过价格却非常便宜。烧写完成后,复位节,不过价格却非常便宜。烧写完成后,复位实验板,串口终端应该显示
21、实验板,串口终端应该显示U-BootU-Boot的启动信息。的启动信息。1 1bootmbootm命令命令2 2bootpbootp命令命令3 3cmpcmp命令命令4 4cp cp命令命令5 5crc32crc32命令命令6 6echoecho命令命令7 7erseerse命令命令7.3.6 U-Boot的常用命令的常用命令8 8nandnand命令命令9 9flinfoflinfo命令命令10 10go go命令命令11 11iminfoiminfo命令命令12 12loadbloadb命令命令13 13loadsloads命令命令14 14mwmw命令命令15 15nfsnfs命令命令1
22、6 16printenvprintenv命令命令17 17protectprotect命令命令18 18rarpbootrarpboot命令命令19 19runrun命令命令2020setenvsetenv命令命令21 21sleepsleep命令命令7.4 7.4 LinuxLinux内核与移植内核与移植 LinuxLinux内核是内核是LinuxLinux操作系统的核心,也是操作系统的核心,也是整个整个LinuxLinux功能体现。功能体现。7.4.1 Linux内核结构内核结构图图图图7-3 Linux7-3 Linux内核内核内核内核结结结结构构构构表表表表7-47-4LinuxLin
23、ux内核源内核源内核源内核源码顶层码顶层码顶层码顶层目目目目录说录说录说录说明明明明arch/体系结构相关的代码,如arch/i386、arch/arm、arch/ppccryptodrivers/各种设备驱动程序,例如,drivers/char、drivers/block、Documentation/内核文档fs/文件系统,例如,fs/ext3、fs/jffs2、include/内核头文件:include/asm是体系结构相关的头文件,它是include/asm-arm、include/asm-i386等目录的链接。include/Linux是Linux内核基本的头文件init/Linux初
24、始化,如main.cipc/进程间通信的代码kernel/Linux内核核心代码(这部分很小)lib/各种库子程序,如zlib、crc32mm/内存管理代码net/网络支持代码,主要是网络协议sound声音驱动的支持scripts/内部或者外部使用的脚本usr/用户的代码 编译内核之前要先配置。为了正确、合理编译内核之前要先配置。为了正确、合理地设置内核编译配置选项,从而只编译系统需地设置内核编译配置选项,从而只编译系统需要的功能的代码,一般主要有下面要的功能的代码,一般主要有下面4 4个考虑。个考虑。(1 1)尺寸小。)尺寸小。(2 2)节省内存。)节省内存。(3 3)减少漏洞。)减少漏洞。
25、(4 4)动态加载模块。)动态加载模块。7.4.2 Linux内核配置系统内核配置系统图图图图7-4 7-4 配置内核配置内核配置内核配置内核1 1MakefileMakefile表表表表7-57-5内核配置方式内核配置方式内核配置方式内核配置方式说说说说明明明明配置方式功能config通过命令行程序更新当前配置menuconfig通过菜单程序更新当前配置xconfig通过QT图形接口更新当前配置gconfig通过GTK图形接口更新当前配置oldconfig通过已经提供的.config文件更新当前配置randconfig对所有的选项随机配置defconfig对所有选项使用默认配置allmodc
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 嵌入式系统技术与设计 第7章 嵌入式操作系统及开发简述 嵌入式 系统 技术 设计 操作系统 开发 简述
限制150内