《搭建嵌入式Linux开发环境.ppt》由会员分享,可在线阅读,更多相关《搭建嵌入式Linux开发环境.ppt(40页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、嵌入式应用程序设计嵌入式应用程序设计第1章 搭建嵌入式linux开发环境 第第1章章 搭建嵌入式搭建嵌入式Linux开发环境开发环境第2章嵌入式文件I/O编程第3章嵌入式Linux多任务编程第4章嵌入式Linux进程间通行第5章嵌入式Linux多线程编程第6章嵌入式Linux网络编程第7章Qt图形编程第8章嵌入式Linux设备驱动编程第9章Qt聊天项目设计课程安排课程安排:2 1.1搭建嵌入式Linux交叉开发环境1.2Bootloader1.3Linux内核与移植1.4嵌入式文件系统的构建1.5小结1.6思考与练习本章课程:本章课程:3 1.1.1嵌入式交叉编译环境搭建交叉编译环境的意义如何
2、搭建嵌入式交叉编译环境嵌入式交叉编译环境包括哪些内容1.1搭建嵌入式Linux开发环境4 1.1.2主机交叉开发环境的配置配置控制台程序Windows操作系统中有超级终端(HyperTerminal)工具;Linux/Unix操作系统有minicom(使用“minicom”命令启动该软件)等工具1.1嵌入式系统概述超级终端配置minicom配置5 1.1.2主机交叉开发环境的配置配置TFTP服务tftp是一个传输文件的简单协议,它基于UDP协议而实现。此协议设计的时候是进行小文件传输的1.1嵌入式系统概述6 1.1.2主机交叉开发环境的配置Linux下TFTP服务配置tftp是一个传输文件的简
3、单协议,它基于UDP协议而实现。此协议设计的时候是进行小文件传输的servicetftpsocket_type=dgramprotocol=udpwait=yesuser=rootserver =/server_args =-s/tftpbootdisable =noper_source=11cps=1002flags=IPv41.1嵌入式系统概述7 1.1.2主机交叉开发环境的配置启动TFTP服务$/etc/start关闭TFTP服务$/etc/stop重启TFTP服务$/etc/restart查看TFTP状态$netstat au|grep tftpProtoRecv-QSend-QLoc
4、alAddressForeignAddressStateudp 0 0 *:tftp *:*1.1嵌入式系统概述8 1.1.2主机交叉开发环境的配置Windows下TFTP服务配置在Windows下配置tftp服务需要安装使用tftp服务器软件,常见的可使用tftpd32,网上有很多下载该软件的地方,读者可以自行下载。要注意的是,该软件是tftp的服务器端,而目标板上则是tftp的客户端1.1嵌入式系统概述9 1.1.2主机交叉开发环境的配置NFS文件系统NFS为NetworkFileSystem的简称,最早是由Sun公司提出发展起来的,其目的就是让不同的机器、不同的操作系统之间可以彼此共享文
5、件。1.1嵌入式系统概述10 1.1.2主机交叉开发环境的配置NFS配置配置文件:/etc/exports配置文件每一行格式:共享的目录客户端主机名称或IP(参数1,参数2)NFS配置文件常用参数:NFS配置文件举例:cat/etc/exports/home/david/project*(rw,sync,no_root_squash)1.1嵌入式系统概述11 1.1.2主机交叉开发环境的配置NFS服务启动设置NFS服务在每次系统引导时自动开启:#/sbin/chkconfignfson(在Ubuntu中应该输入/sbin/chkconfignfs-kernel-serveron)1.1嵌入式系
6、统概述12 Bootloader是什么?Bootloader是在操作系统运行之前执行的一段小程序。通过这段小程序,我们可以初始化硬件设备、建立内存空间的映像表,从而建立适当的系统软硬件环境,为最终调用操作系统内核做好准备。1.2Bootloader13 1.2.1Bootloader的种类1.2Bootloader14 1.2.2U-Boot的编译和使用什么是U-Boot最早,DENX软件工程中心的WolfgangDenk基于8xxrom的源码创建了PPCBOOT工程,并且不断添加处理器的支持。后来,SysgoGmbh把PPCBOOT移植到ARM平台上,创建了ARMBOOT工程。然后以PPCB
7、OOT工程和ARMBOOT工程为基础,创建了U-Boot工程。1.2Bootloader15 1.2.2U-Boot的编译和使用U-Boot目录结构U-Boot目录可以分为三类:与处理器体系结构或者开发板硬件直接相关。一些通用的函数或驱动。U-Boot的应用程序、工具或者文件。1.2Bootloader16 U-Boot目录结构1.2Bootloader17 1.2.2U-Boot的编译和使用U-Boot的源码是通过gcc和Makefile组织编译的。顶层目录下的Makefile首先可以设置开发板的定义,然后递归地调用各级子目录下的Makefile,最后把编译过的程序链接成U-Boot映像。顶
8、层目录下的Makefile它负责u-boot整体配置编译。每一种开发板在Makefile都需要有板子配置的定义。配置u-boot:makesmdk2410_config编译:make1.2Bootloader18 1.2.2U-Boot的编译和使用U-Boot生成镜像文件1.2Bootloader19 1.2.2U-Boot的编译和使用U-Boot工具1.2Bootloader201.2BootloaderU-Boot命令介绍命令介绍指令分类指令分类传输类、设置类、存储类、内存监控类、加载运行类传输类、设置类、存储类、内存监控类、加载运行类Printenv打印环境变量。Ubootprinten
9、vbaudrate=115200ipaddr=192.168.1.1ethaddr=12:34:56:78:9A:BCserverip211.2Bootloadersetenv设置新的变量UbootsetenvmyboardAT91RM9200DKUbootprintenvbaudrate=115200ipaddr=192.168.1.1ethaddr=12:34:56:78:9A:BCserverip=192.168.1.5myboard=AT91RM9200DKEnvironmentsize:102/8188bytessaveenv 将当前定义的所有的变量及其值存入flash中。221.2
10、Bootloadertftp 通过网络下载程序Ubootsetenvethaddr12:34:56:78:9A:BCUbootsetenvipaddr192.168.1.1Ubootsetenvserverip192.168.1.254Uboottftp20000000Uboottftp30200000zImageLoadb通过串口Kermit协议下载二进制数据。231.2Bootloadermd显示内存区的内容。mm修改内存,地址自动递增。nm修改内存,地址不自动递增。mw填充内存。mtest测试内存。cp拷贝一块内存到另一块。cmp比较两块内存区。mw0 x32000000ff0 x100
11、00241.2BootloaderProtect写保护操作protecton1:0-3(就是对第一块FLASH的0-3扇区进行保护)protectoff1:0-3取消写保护erase擦除扇区erase:删除FLASH的扇区erase1:0-2(就是对每一块FLASH的0-2扇区进行删除)251.2Bootloaderrun执行设置好的脚本Ubootsetenvflashittftp20000000;erase100200001002FFFF;cp.b20000000100200008000UbootsaveenvUbootrunflashitbootcmd保留的环境变量如果定义了该变量,在au
12、toboot模式下,将会执行该脚本的内容。261.2Bootloadergo执行内存中的二进制代码,一个简单的跳转到指定地址bootm执行内存中的二进制代码要求二进制代码为制定格式的。通常为mkimage处理过的二进制文件。启动Uboot工具制作的压缩Linux内核bootp通过网络启动,需要提前设置好硬件地址。271.2Bootloaderusbreset复位(rescan)USB控制器usbstopf-停止USBusbtree-显示USB设备树usbinfodev显示可用的USB设备usbstorage-显示USB存储设备详细信息usbdevdev-showorsetcurrentUSBs
13、toragedeviceusbpartdev-printpartitiontableofoneorallUSBstoragedevicesusbreadaddrblk#cnt-readcntblocksstartingatblockblk#tomemoryaddressaddr281.2Bootloadernandinfo:显示NAND设备nanddevicedev:显示或设置当前设备nandbad显示坏块nandread.jffs2saddroffsizenandwrite.jffs2addroffsizenanderasecleanoffsizenandaddroffsizenandadd
14、roffsize291.2Bootloadernfsnfs把中的NFS文件系统中的读入内存0 x32000000处。301.2Bootloader1.2.3U-Boot移植在顶层Makefile中为开发板添加新的配置选项创建一个新目录存放开发板相关的代码,并且添加新文件为开发板添加新的配置文件配置开发板编译U-Boot添加驱动或者功能选项调试U-Boot源代码,直到U-Boot在开发板上能够正常启动311.3Linux内核Linux内核主要功能进程管理内存管理文件管理设备管理网络管理321.3Linux内核1.3.1Linux内核结构331.3Linux内核1.3.2Linux配置与编译编译内
15、核之前要先配置。为了正确、合理地设置内核编译配置选项,从而只编译系统需要的功能的代码,一般主要有下面4个考虑。尺寸小节省内存减少漏洞动态加载模块341.3Linux内核1.3.2Linux配置与编译编译内核的步骤:下载内核源码修改内核目录树根下的的Makefile,指明交叉编译器设置环境变量配置内核产生.config文件输入内核配置命令(makemenuconfig),进行内核选项的选择编译内核下载Linux内核351.4嵌入式文件系统的构建在嵌入式Linux中,busybox是构造文件系统最常用的软件工具包,它被非常形象地称为嵌入式Linux系统中的“瑞士军刀”,因为它将许多常用的Linux
16、命令和工具结合到了一个单独的可执行程序(busybox)中。虽然与相应的GNU工具比较起来,busybox所提供的功能和参数略少,但在比较小的系统(例如启动盘)或者嵌入式系统中已经足够了361.4嵌入式文件系统的构建使用busybox构建文件根文件系统的步骤下载busybox源码并进行配置编译并安装busybox创建系统必须目录,完善文件系统创建系统必须文件创建cramfs文件系统镜像文件37 1.如何搭建嵌入式开发环境2.Bootloader的概念以及编译和移植的方法3.内核的概念机编译和移植的方法4.文件系统的构建1.5小结38 1.在读者的主机上搭建交叉编译环境,并用交叉编译器编译程序。2.移植与编译FS2410目标板平台的U-Boot、内核。3.用Busybox或者已做好的文件系统创建(或重建)新的文件系统,而且把编译好的hello程序复制到该文件系统中去。4.在主机上安装和配置minicom、tftp、nfs等应用程序和服务器,并通过这些软件进行嵌入式系统的应用程序开发。1.6思考与练习3940