Part04嵌入式Linux开发环境的搭建.ppt_第1页
Part04嵌入式Linux开发环境的搭建.ppt_第2页
Part04嵌入式Linux开发环境的搭建.ppt_第3页
Part04嵌入式Linux开发环境的搭建.ppt_第4页
Part04嵌入式Linux开发环境的搭建.ppt_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

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

文档简介

2019/7/12,1,嵌入式Linux开发环境的搭建,【学习目标】 了解嵌入式Linux系统的移植 了解Bootloader的原理 掌握嵌入式交叉编译环境的搭建 学会编译Linux内核 学会搭建Linux的文件系统,2019/7/12,2,一、嵌入式Linux系统的移植 二、Bootloader的构成原理 三、嵌入式交叉编译环境的搭建 四、Linux内核和文件系统的烧写 五、Linux内核 的配置和编译 六、linux文件系统的搭建 七、NFS文件系统的配置和使用,2019/7/12,3,一、嵌入式Linux系统的移植,Linux操作系统的移植主要包括移植Bootloader、移植Linux内核、移植相应的驱动程序和构建文件系统。,2019/7/12,4,嵌入式系统与主机的连接方式,JTAG接口 JTAG仿真器与主机连接,将引导程序固化到FLASH中。 串口 主机通过minicom或Windows超级终端等工具获得目标板程序运行、调试信息。 网络 一般采用NFS、TFTP等协议传输文件。 USB 主机为USB主设备端,目标板为USB从设备端,用于下载程序到目标板中。,2019/7/12,5,Windows超级终端的使用,2019/7/12,6,minicom的使用,2019/7/12,7,二、Bootloader的构成原理,简单地说,Bootloader就是在操作系统内核运行之前运行的一段程序,它类似于PC机中的BIOS程序。通过这段程序,可以完成硬件设备的初始化,并建立内存空间的映射关系,从而将系统的软硬件环境带到一个合适的状态,为最终加载系统内核做好准备。 通常,Bootloader比较依赖于硬件平台,建立一个通用的Bootloader是一件比较困难的事情。,2019/7/12,8,Bootloader的操作模式(一),系统加电或者复位以后,CPU从厂家预设的某个地址上取指执行,Bootloader通常被固化在这个地址上。在嵌入式开发时,通常要使用各种命令操作Bootloader,一般使用串口来连接PC和开发板,通过串口输入各种命令和观察运行结果。用户使用产品时,不需操作Bootloader。,2019/7/12,9,Bootloader的操作模式(二),启动加载(Boot Loading)模式: 上电后,Bootloader将操作系统从固态存储设备中加载到RAM中执行,用户不需介入操作。是最终产品发布的模式,也叫“自主”模式。 下载(Down Loading)模式: 开发人员使用各种命令,通过串口、网口、USB等方式从主机下载内核镜像和文件系统等,将其固化至固态存储设备。,2019/7/12,10,Bootloader的启动流程,由于Bootloader的实现依赖于CPU的体系结构,因此大多数Bootloader都分为Stage1和Stage2两大部分。依赖于CPU体系结构的代码,如设备初始化代码等,通常都放在Stage1中,而且通常都用汇编语言来实现,以达到短小精悍的目的。而Stage2则通常用C语言来实现,这样可以实现复杂的功能,而且代码具有更好的可读性和可移植性。,2019/7/12,11,Bootloader的启动流程Stage1, 基本的硬件初始化,包括屏蔽所有的中断、设置CPU的速度和时钟频率、RAM初始化、初始化外围设备、关闭CPU内部指令和数据cache等。 为加载stage2准备RAM空间,通常为了获得更快的执行速度,通常把stage2加载到RAM空间中来执行,因此必须为加载Bootloader的stage2准备好一段可用的RAM空间。 拷贝stage2到RAM中,在这里要确定两点:stage2的可执行映像在固态存储设备的存放起始地址和终止地址;RAM空间的起始地址。 设置堆栈指针sp,这是为执行stage2的C语言代码做好准备。,2019/7/12,12,Bootloader的启动流程Stage2,用汇编语言跳转到main入口函数(bl main) 由于stage2的代码通常用C语言来实现,目的是实现更复杂的功能和取得更好的代码可读性和可移植性。但是与普通C语言应用程序不同的是,在编译和链接Bootloader这样的程序时,不能使用glibc库中的任何支持函数。 初始化本阶段要使用到的硬件设备,包括初始化串口、初始化计时器等。在初始化这些设备之前、可以输出一些打印信息。 检测系统的内存映射,所谓内存映射就是指在整个4GB物理地址空间中指出哪些地址范围被分配用来寻址系统的内存。 加载内核映像和根文件系统映像,这里包括规划内存占用的布局和从Flash上拷贝数据。 设置内核的启动参数。,2019/7/12,13,三、嵌入式交叉编译环境的搭建,交叉开发模式就是指在主机上编辑、编译程序,然后在目标板上运行、验证程序的过程。在裁减和定制Linux内核用于嵌入式系统之前,由于一般嵌入式开发系统的资源有限,通常都要在PC上建立一个用于目标机的交叉编译工具链,用该交叉编译工具链在PC上编译目标机上要运行的程序。,2019/7/12,14,交叉编译工具链的组成,binutils:是一组二进制处理工具的集合,包括连接器,汇编器和其他用于目标文件和档案的工具,如objdump、as、ld等。 gcc:用来生成交叉编译器,主要生成arm-linux-gcc交叉编译工具。 glibc:主要是提供用户程序所使用的一些基本的函数库。,2019/7/12,15,交叉编译工具链的安装(一),安装交叉编译器,只需将该编译器的解压缩文件放在指定的目录下边, linux2.6.12 内核使用的编译器为3.4.1 版本。 指定目录为: /usr/local/arm 根目录下执行 tar -jxvf cross-3.4.1.tar.bz2,2019/7/12,16,交叉编译工具链的安装(二),在使用的时候有两种方式:(以编译hello.c 程序为例,生成可执行文件hello) 1. /usr/local/arm/3.4.1/bin/arm-linux-gcc hello.c o hello 2. 编辑/etc/bashrc 文件,在最后增加路径: export PATH=/usr/local/arm/3.4.1/bin:$PATH 这样就把/usr/local/arm/3.4.1/bin 添加到命令的默认路径,在编译的时候则可直接用如下的命令: arm-linux-gcc hello.c o hello,2019/7/12,17,四、Linux内核和文件系统的烧写,1. Bootloader的Linux启动设置 2. USB驱动及DNW软件的安装 3. 内核和文件系统的烧写,2019/7/12,18,Bootloader的Linux启动设置,进入Bootloader 菜单,选择7 进入参数设置菜单,将参数0的值改为2(1 为分区application中的程序,2 为自启动linux,3 为自启动wince)。,2019/7/12,19,USB驱动及DNW软件的安装(一),驱动程序: PC机需要安装的驱动程序USB驱动_用于DNW下载程序.rar 设备名称: Witech SEC SOC Test Board,2019/7/12,20,USB驱动及DNW软件的安装(二),DNW 软件是三星公司为S3C2440A 芯片配置的一款专用软件,可以在Windows 下用USB方式来烧写FLASH。 文件位置:实用工具串口工具DNW Configuration: COM1,115200, Download Address:0x30800000,2019/7/12,21,内核和文件系统的烧写,2019/7/12,22,五、Linux内核的配置和编译,Linux内核是指Linux源代码经过编译和链接生成的映像文件(Image)。通常编译嵌入式Linux内核都是通过不同的make命令来实现的,它的执行配置文件就是Makefile,而不同的Makefile又通过互相的依赖关系构成一个统一的整体去完成建立依存关系、建立内核等功能。,2019/7/12,23,Linux内核的获取,文件位置: Linuxlinux2.6.12内核源码包 解压文件: tar -jxvf linux-2.6.12-090915.tar.bz2,2019/7/12,24,Linux内核的配置(一),Linux内核的配置系统由3部分组成: (1)Makefile:分布在Linux内核源代码中的Makefile,定义Linux内核的编译规则; (2)配置文件(config.in):给用户提供配置选择的功能。 (3)配置工具,包括配置命令解释器(对配置脚本中使用的命令进行解释)和配置用户界面(提供基于字符界面、基于Xwindow图形界面的用户配置界面)。,2019/7/12,25,Linux内核的配置(二),在内核中,Makefile的作用是根据配置的情况构造出需要编译的文件列表,然后分别编译,并把目标文件链接在一起,最终形成Linux内核的二进制文件。,2019/7/12,26,Linux内核的配置(三),Linux内核中的Makefile以及与 Makefile 直接相关的文件有: Makefile:顶层 Makefile,是整个内核配置、编译的总体控制文件。 .config:内核配置文件,包含由用户选择的配置选项,用来存放内核配置后的结果(如 make config)。 arch/*/Makefile:位于各种 CPU 体系目录下的 Makefile,如 arch/arm/Makefile,是针对特定平台的 Makefile。 各个子目录下的 Makefile:比如 drivers/Makefile,负责所在子目录下源代码的管理。 Rules.make:规则文件,被所有的 Makefile 使用。,2019/7/12,27,Linux内核的配置(四),内核配置方法有以下几种: (1) make config: 基于文本的最为传统的配置界面, 进入命令行, 可以一行一行的配置,该方法较烦琐。 (2) make menuconfig: 基于文本菜单的配置界面, 是字符终端下常用的方式。 (3) make xconfig: 基于图形窗口模式的配置界面, Xwindow下推荐使用。 (4) make oldconfig:自动读入“config”配置文件,并且只要求用户设定前次没有设定过的选项。,2019/7/12,28,Linux内核的配置(五),四种方法中,make xconfig界面最友好,可以使用鼠标选择相应的选项;如果不是使用Xwindow,使用make menuconfig,需要用空格键进行选取。选择相应的配置时,有3种选择: Y 将该功能编译至内核 N 不将该功能编译至内核 M 将该功能编译成在需要时可以动态插入到内核的模块,2019/7/12,29,Linux内核的配置(六),每种模式都有其优缺点,动态加载模块有利于减小内核长度,减少消耗内存,但是必须通过手动调用这些模块;如果编译至内核,虽然方便快捷,但会使内核越来越大,消耗更多系统资源。因此,要将常用功能直接编译到内核,如网卡和光驱。,2019/7/12,30,Linux内核的配置(七),进行配置时,大部分选项可以使用默认值,只有小部分要根据需要选择。比较重要的选项如下: Code Maturity Level Option(内核成熟级别选项) Loadable Module Support(可加载模块支持) General Setup(通用设置) Memory Technology Devices(内存技术设备) Block Devices(块设备) Network Device Support(网络设备支持) Character Devices(字符设备) File systems(文件系统) Console Drivers(控制台设备),2019/7/12,31,Linux建立依赖关系,由于内核源码树中的大多数文件都与一些头文件有依赖关系,因此要顺利建立内核,内核源码树中的每个Makefile都必须知道这些依赖关系。建立依赖关系通常在第一次编译内核的时候(或者源码目录树的结构发生变化的时候)进行,它会在内核源码树中每个子目录产生一个“.depend”文件。运行“make dep”即可。在编译linux2.6版本的内核通常不需要这个过程,直接输入“make”即可。,2019/7/12,32,Linux内核的建立,Linux中内核映像分为压缩的内核映像和未压缩的内核映像。压缩的内核映像通常命名为zImage,位于“arch/arm /boot”,未压缩的内核映像通常名为vmlinux,位于源码树的根目录中。 命令:make zImage,2019/7/12,33,Linux内核源码目录结构, /include子目录包含了建立内核代码时所需的大部分包含文件,这个模块利用其他模块重建内核。 /init子目录包含了内核的初始化代码,这里的代码是内核工作的起始入口。 /arch子目录包含了所有处理器体系结构特定的内核代码。如:arm、i386、alpha。 /drivers子目录包含了内核中所有的设备驱动程序,如块设备和SCSI设备。 /fs子目录包含了所有的文件系统的代码,如:ext2,vfat等。 /net子目录包含了内核的网络相关代码。 /mm子目录包含了所有内存管理代码。 /ipc子目录包含了进程间通信代码。 /kernel子目录包含了内核核心代码。,2019/7/12,34,六、Linux文件系统的搭建,嵌入式Linux支持多种文件系统,虽然在嵌入式中,由于资源受限的原因,它的文件系统和PC机Linux的文件系统有较大的区别,但是,它们的总体架构是一样的,都是采用目录树的结构。在嵌入式中常见的文件系统有cramfs、romfs、jffs、yaffs等 。 Yaffs(Yet Another Flash File System)文件系统是专门针对NAND 闪存设计的嵌入式文件系统,目前有YAFFS 和YAFFS2 两个版本,两个版本的主要区别之一在于YAFFS2 能够更好的支持大容量的NAND FLASH芯片。,2019/7/12,35,Linux文件系统的建立,文件位置: Linuxlinux2.6.12文件系统源码及制作工具 解压文件: tar -jxvf qte_yaffs.tar.bz2 用mkyaffs2image工具来制作文件系统: ./mkyaffs2image qte_yaffs qte.yaffs,2019/7/12,36,七、NFS文件系统的配置和使用,NFS为Network File System的简称,最早是由Sun公司提出发展起来的,其目的就是让不同的机器、不同的操作系统之间通过网络可以彼此共享文件。NFS可以让不同的主机通过网络将远端的NFS服务器共享出来的文件安装到自己的系统中,从客户端看来,使用NFS的远端文件就像是使用本地文件一样。在嵌入式中使用NFS会使应用程序的开发变得十分方便,并且不用反复地进行

温馨提示

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

评论

0/150

提交评论