版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、嵌入式应用程序设计嵌入式应用程序设计第第1章章 搭建嵌入式搭建嵌入式linux开发环境开发环境 第第1章章 搭建嵌入式搭建嵌入式Linux开发环境开发环境第第2章章 嵌入式文件嵌入式文件I/O编程编程第第3章章 嵌入式嵌入式Linux多任务编程多任务编程第第4章章 嵌入式嵌入式Linux进程间通行进程间通行第第5章章 嵌入式嵌入式Linux多线程编程多线程编程第第6章章 嵌入式嵌入式Linux网络编程网络编程第第7章章 Qt图形编程图形编程第第8章章 嵌入式嵌入式Linux设备驱动编程设备驱动编程第第9章章 Qt聊天项目设计聊天项目设计课程安排:课程安排: 1.1 搭建嵌入式Linux交叉开发
2、环境1.2 Bootloader1.3 Linux内核与移植1.4 嵌入式文件系统的构建1.5 小结1.6 思考与练习本章课程:本章课程: 1.1.1 嵌入式交叉编译环境搭建交叉编译环境的意义如何搭建嵌入式交叉编译环境嵌入式交叉编译环境包括哪些内容1.1 搭建嵌入式Linux开发环境 1.1.2 主机交叉开发环境的配置配置控制台程序Windows操作系统中有超级终端HyperTerminal工具;Linux/Unix操作系统有minicom运用“minicom命令启动该软件等工具 1.1 嵌入式系统概述超级终端配置minicom配置 1.1.2 主机交叉开发环境的配置配置TFTP服务 tftp
3、是一个传输文件的简单协议,它基于UDP协议而实现。此协议设计的时候是进行小文件传输的 1.1 嵌入式系统概述 1.1.2 主机交叉开发环境的配置Linux下TFTP服务配置 tftp是一个传输文件的简单协议,它基于UDP协议而实现。此协议设计的时候是进行小文件传输的 vim /etc/xinetd.d/tftpservice tftp socket_type = dgram protocol = udp wait = yes user = root server = /usr/sbin/in.tftpd server_args = -s /tftpboot disable = no per_s
4、ource = 11 cps = 100 2 flags = IPv41.1 嵌入式系统概述 1.1.2 主机交叉开发环境的配置启动TFTP服务$ /etc/init.d/xinetd start 关闭TFTP服务 $ /etc/init.d/xinetd stop重启TFTP服务 $ /etc/init.d/xinetd restart查看TFTP状态$ netstat au | grep tftpProto Recv-Q Send-Q Local Address Foreign Address Stateudp 0 0 *:tftp *:*1.1 嵌入式系统概述 1.1.2 主机交叉开发环
5、境的配置Windows下TFTP服务配置在Windows下配置tftp服务需要安装使用tftp服务器软件,常见的可使用tftpd32,网上有很多下载该软件的地方,读者可以自行下载。要注意的是,该软件是tftp的服务器端,而目标板上则是tftp的客户端 1.1 嵌入式系统概述 1.1.2 主机交叉开发环境的配置NFS文件系统NFS为Network FileSystem的简称,最早是由Sun公司提出发展起来的,其目的就是让不同的机器、不同的操作系统之间可以彼此共享文件。1.1 嵌入式系统概述 1.1.2 主机交叉开发环境的配置NFS配置配置文件:/etc/exports配置文件每一行格式: 共享的
6、目录 客户端主机名称或IP(参数1,参数2)NFS配置文件常用参数:NFS配置文件举例:cat /etc/exports/home/david/project *(rw,sync,no_root_squash)1.1 嵌入式系统概述 1.1.2 主机交叉开发环境的配置NFS服务启动设置NFS服务在每次系统引导时自动开启:# /sbin/chkconfig nfs on (在Ubuntu中应该输入 /sbin/chkconfig nfs-kernel-server on) 1.1 嵌入式系统概述 Bootloader是什么? Bootloader是在操作系统运行之前执行的一段小程序。通过这段小程
7、序,我们可以初始化硬件设备、建立内存空间的映像表,从而建立适当的系统软硬件环境,为最终调用操作系统内核做好准备。 1.2 Bootloader 1.2.1 Bootloader的种类 1.2 Bootloader 1.2.2 U-Boot的编译和使用什么是U-Boot 最早,DENX软件工程中心的Wolfgang Denk基于8xxrom的源码创建了PPCBOOT工程,并且不断添加处理器的支持。后来,Sysgo Gmbh把PPCBOOT移植到ARM平台上,创建了ARMBOOT工程。然后以PPCBOOT工程和ARMBOOT工程为基础,创建了U-Boot工程。 1.2 Bootloader 1.2
8、.2 U-Boot的编译和使用U-Boot目录结构 U-Boot目录可以分为三类:与处理器体系结构或者开发板硬件直接相关。一些通用的函数或驱动。U-Boot的应用程序、工具或者文件。1.2 Bootloader U-Boot目录结构1.2 Bootloader 1.2.2 U-Boot的编译和使用 U-Boot的源码是通过gcc和Makefile组织编译的。顶层目录下的Makefile首先可以设置开发板的定义,然后递归地调用各级子目录下的Makefile,最后把编译过的程序链接成U-Boot映像。 顶层目录下的 Makefile它负责u-boot整体配置编译。每一种开发板在Makefile都需
9、要有板子配置的定义。配置u-boot: make smdk2410_config编译: make1.2 Bootloader 1.2.2 U-Boot的编译和使用U-Boot生成镜像文件1.2 Bootloader 1.2.2 U-Boot的编译和使用U-Boot工具1.2 Bootloader1.2 BootloaderU-Boot命令介绍命令介绍指令分类指令分类传输类、设置类、存储类、内存监控类、加载运行传输类、设置类、存储类、内存监控类、加载运行类类Printenv 打印环境变量。打印环境变量。Uboot printenvbaudrate=115200ipaddr=
10、ethaddr=12:34:56:78:9A:BCserverip=211.2 Bootloadersetenv 设置新的变量设置新的变量Uboot setenv myboard AT91RM9200DKUboot printenvbaudrate=115200ipaddr=ethaddr=12:34:56:78:9A:BCserverip=myboard=AT91RM9200DKEnvironment size: 102/8188 bytessaveenv 将当前定义的所有的变量及其值存入将当前定义的所有的变量及其值存入fla
11、sh中。中。221.2 Bootloadertftp 通过网络下载程序通过网络下载程序Uboot setenv ethaddr 12:34:56:78:9A:BCUboot setenv ipaddr Uboot setenv serverip 54 Uboot tftp 20000000 application.binUboot tftp 30200000 zImageLoadb 通过串口通过串口Kermit协议下载二进制数据。协议下载二进制数据。231.2 Bootloadermd 显示内存区的内容。mm 修改内存,地址自动递增。nm 修改内存,
12、地址不自动递增。mw 填充内存。mtest 测试内存。cp 拷贝一块内存到另一块。cmp 比较两块内存区。mw 0 x32000000 ff 0 241.2 BootloaderProtect 写保护操作protect on 1:0-3(就是对第一块FLASH的0-3扇区进行保护)protect off 1:0-3取消写保护erase 擦除扇区erase: 删除FLASH的扇区erase 1:0-2(就是对每一块FLASH的0-2扇区进行删除)251.2 Bootloaderrun 执行设置好的脚本Uboot setenv flashit tftp 200000
13、00 mycode.bin; erase 10020000 1002FFFF;cp.b 20000000 10020000 8000Uboot saveenvUboot run flashitbootcmd 保留的环境变量如果定义了该变量,在autoboot模式下,将会执行该脚本的内容。261.2 Bootloadergo 执行内存中的二进制代码,一个简单的跳转到指定地址bootm 执行内存中的二进制代码要求二进制代码为制定格式的。通常为mkimage处理过的二进制文件。启动Uboot工具制作的压缩Linux内核bootp 通过网络启动,需要提前设置好硬件地址。 271.2 Bootloade
14、rusb reset 复位(rescan) USB 控制器usb stop f - 停止USB usb tree - 显示USB 设备树usb info dev 显示可用的USB设备usb storage - 显示USB存储设备详细信息usb dev dev - show or set current USB storage deviceusb part dev - print partition table of one or all USB storage devicesusb read addr blk# cnt - read cnt blocks starting at block b
15、lk#to memory address addr281.2 Bootloadernand info: 显示NAND 设备nand device dev:显示或设置当前设备nand bad 显示坏块nand read.jffs2s addr off sizenand write.jffs2 addr off sizenand erase clean off size nand read.oob addr off sizenand write.oob addr off size291.2 Bootloadernfsnfs 32000000 :aa.txt把192.168.0
16、.2中的NFS文件系统中的aa.txt 读入内存0 x32000000处。301.2 Bootloader1.2.3 U-Boot移植在顶层Makefile中为开发板添加新的配置选项创建一个新目录存放开发板相关的代码,并且添加新文件 为开发板添加新的配置文件 配置开发板 编译U-Boot 添加驱动或者功能选项 调试U-Boot源代码,直到U-Boot在开发板上能够正常启动 311.3 Linux内核Linux内核主要功能进程管理内存管理文件管理设备管理网络管理 321.3 Linux内核1.3.1 Linux内核结构331.3 Linux内核1.3.2 Linux配置与编译编译内核之前要先配置
17、。为了正确、合理地设置内核编译配置选项,从而只编译系统需要的功能的代码,一般主要有下面4个考虑。 尺寸小节省内存减少漏洞动态加载模块341.3 Linux内核1.3.2 Linux配置与编译编译内核的步骤:下载内核源码 修改内核目录树根下的的Makefile,指明交叉编译器 设置环境变量 配置内核产生.config文件 输入内核配置命令(make menuconfig),进行内核选项的选择 编译内核下载Linux内核 351.4 嵌入式文件系统的构建 在嵌入式Linux中,busybox是构造文件系统最常用的软件工具包,它被非常形象地称为嵌入式Linux系统中的“瑞士军刀”,因为它将许多常用的Linux命令和工具结合到了一个单独的可执行程序busybox中。虽然与相应的GNU工具比较起来,busybox所提供的功能和参数略少,但在比较小的系统例如启动盘或者嵌入式系统中已经足够了 361.4 嵌入式文件系统的构建使用busybox构建文件根文件系统的步骤下载busybox源码并进行配置编译并安装busybox创建系统必须目录,完善文件
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 达能情景面试题目及答案
- 消防应急照明系统配置方案
- 医疗服务流程再造方案
- 外墙施工质量追溯体系方案
- 妇幼保健院医务人员培训提升方案
- 粮库绿色环保管理方案
- 边坡环境整治技术方案
- 土方工程投标文件编制方案
- 绿色建筑材料使用方案
- 火灾自动报警系统布线方案
- 纪检监察业务培训
- 急慢性失血性贫血课件
- 人教版七年级上册历史期末模拟试卷及答案
- 2025年及未来5年中国肉干肉脯市场调查研究及行业投资潜力预测报告
- 有机合成化学王玉炉第三版省公开课一等奖全国示范课微课金奖课件
- 凝血的临床课件
- 高密池除硬度原理课件
- 空放贷款合同(标准版)
- 请护理合同三方协议合同
- 包销模式下邮轮旅客人身伤亡责任的多维审视与法律规制探究
- 《工程力学》课件(共十三章)
评论
0/150
提交评论