嵌入式Linux开发环境的搭建

上传人:灯火****19 文档编号:143132055 上传时间:2020-08-26 格式:PPT 页数:53 大小:699.50KB
返回 下载 相关 举报
嵌入式Linux开发环境的搭建_第1页
第1页 / 共53页
嵌入式Linux开发环境的搭建_第2页
第2页 / 共53页
嵌入式Linux开发环境的搭建_第3页
第3页 / 共53页
嵌入式Linux开发环境的搭建_第4页
第4页 / 共53页
嵌入式Linux开发环境的搭建_第5页
第5页 / 共53页
点击查看更多>>
资源描述

《嵌入式Linux开发环境的搭建》由会员分享,可在线阅读,更多相关《嵌入式Linux开发环境的搭建(53页珍藏版)》请在金锄头文库上搜索。

1、嵌入式应用程序设计第四章 嵌入式Linux开发环境的搭建,2,4.1 搭建嵌入式Linux交叉开发环境 4.2 Bootloader 4.3 Linux内核与移植 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 嵌入式交叉编译环境搭建,

2、交叉编译环境的意义 如何搭建嵌入式交叉编译环境 嵌入式交叉编译环境包括哪些内容,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:这种

3、模式已经不再支持,它将返回的数据直接返回给用户,而不是保存为文件。,7,4.1.2 主机交叉开发环境的配置,Linux下TFTP服务配置 tftp是一个传输文件的简单协议,它基于UDP协议而实现。此协议设计的时候是进行小文件传输的 vim /etc/xinetd.d/tftp service tftp socket_type = dgram protocol = udp wait = yes user = root server = /usr/sbin/in.tftpd server_args = -s /tftpboot disable = no per_source = 11 cps =

4、100 2 flags = IPv4 ,8,4.1.2 主机交叉开发环境的配置,启动TFTP服务 $ /etc/init.d/xinetd start 关闭TFTP服务 $ /etc/init.d/xinetd stop 重启TFTP服务 $ /etc/init.d/xinetd restart 查看TFTP状态 $ netstat au | grep tftp Proto Recv-Q Send-Q Local Address Foreign Address State udp 0 0 *:tftp *:*,9,4.1.2 主机交叉开发环境的配置,Windows下TFTP服务配置 在Wind

5、ows下配置tftp服务需要安装使用tftp服务器软件,常见的可使用tftpd32,网上有很多下载该软件的地方,读者可以自行下载。要注意的是,该软件是tftp的服务器端,而目标板上则是tftp的客户端,10,4.1.2 主机交叉开发环境的配置,NFS文件系统 NFS为Network FileSystem的简称,最早是由Sun公司提出发展起来的,其目的就是让不同的机器、不同的操作系统之间可以彼此共享文件。 NFS的使用分为服务器端和客户端,其中服务器端提供要共享的文件,而客户端则通过挂载“mount”这一动作来实现对共享文件的访问操作。在嵌入式开发中,通常NFS服务端在宿主机上运行,而客户端在目

6、标板上运行。 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/chkconfig nfs on (在

7、Ubuntu中应该输入 /sbin/chkconfig nfs-kernel-server on),13,Bootloader是什么? Bootloader是在操作系统运行之前执行的一段小程序。通过这段小程序,我们可以初始化硬件设备、建立内存空间的映像表,从而建立适当的系统软硬件环境,为最终调用操作系统内核做好准备。,4.2 Bootloader,14,4.2.1 Bootloader的种类,15,4.2.2 U-Boot的编译和使用,什么是U-Boot 最早,DENX软件工程中心的Wolfgang Denk基于8xxrom的源码创建了PPCBOOT工程,并且不断添加处理器的支持。后来,Sys

8、go Gmbh把PPCBOOT移植到ARM平台上,创建了ARMBOOT工程。然后以PPCBOOT工程和ARMBOOT工程为基础,创建了U-Boot工程。,16,4.2.2 U-Boot的编译和使用,U-Boot编译 U-Boot目录可以分为三类: 与处理器体系结构或者开发板硬件直接相关。 一些通用的函数或驱动。 U-Boot的应用程序、工具或者文件。,17,4.2.2 U-Boot的编译和使用,U-Boot目录结构,18,4.2.2 U-Boot的编译和使用,U-Boot的源码是通过gcc和Makefile组织编译的。顶层目录下的Makefile首先可以设置开发板的定义,然后递归地调用各级子目

9、录下的Makefile,最后把编译过的程序链接成U-Boot映像。 顶层目录下的 Makefile 它负责u-boot整体配置编译。每一种开发板在Makefile都需要有板子配置的定义。 配置u-boot: make smdk2410_config 编译: make,19,4.2.2 U-Boot的编译和使用,U-Boot生成镜像文件,20,4.2.2 U-Boot的编译和使用,U-Boot工具,21,4.2.2 U-Boot的编译和使用,U-Boot命令介绍 bootm命令 bootm命令可以引导启动存储在内存中的程序映像。这些内存包括RAM和可以永久保存的Flash。 第1个参数addr是

10、程序映像的地址,这个程序映像必须转换成U-Boot的格式。 第2个参数对于引导Linux内核有用,通常作为U-Boot格式的RAMDISK映像存储地址;也可以是传递给Linux内核的参数(默认情况下传递bootargs环境变量给内核)。,22,4.2.2 U-Boot的编译和使用,U-Boot命令介绍 bootp命令 bootp命令通过bootp请求,要求DHCP服务器分配IP地址,然后通过TFTP协议下载指定的文件到内存。 第1个参数是下载文件存放的内存地址。 第2个参数是要下载的文件名称,这个文件应该在开发主机上准备好。,23,4.2.2 U-Boot的编译和使用,U-Boot命令介绍 c

11、mp命令 cmp命令可以比较两块内存中的内容。.b以字节为单位;.w以字为单位;.l以长字为单位。注意:cmp.b中间不能保留空格,需要连续输入命令。 第1个参数addr1是第一块内存的起始地址。 第2个参数addr2是第二块内存的起始地址。 第3个参数count是要比较的数目,单位是字节、字或者长字。,24,4.2.2 U-Boot的编译和使用,U-Boot命令介绍 cp命令 cp命令可以在内存中复制数据块,包括对Flash的读写操作。 第1个参数source是要复制的数据块起始地址。 第2个参数target是数据块要复制到的地址。这个地址如果在Flash中,那么会直接调用写Flash的函数

12、操作。所以U-Boot写Flash就使用这个命令,当然需要先把对应Flash区域擦干净。 第3个参数count是要复制的数目,根据cp.b、cp.w、cp.l分别以字节、字、长字为单位。,25,4.2.2 U-Boot的编译和使用,U-Boot命令介绍 crc32命令 crc32命令可以计算存储数据的校验和。 第1个参数address是需要校验的数据起始地址。 第2个参数count是要校验的数据字节数。 第3个参数addr用来指定保存结果的地址。,26,4.2.2 U-Boot的编译和使用,U-Boot命令介绍 echo命令 echo命令回显参数,27,4.2.2 U-Boot的编译和使用,U

13、-Boot命令介绍 erse命令 erase命令可以擦除Flash。参数必须指定Flash擦除的范围。 按照起始地址和结束地址,start必须是擦除块的起始地址;end必须是擦除末尾块的结束地址。这种方式最常用。,28,4.2.2 U-Boot的编译和使用,U-Boot命令介绍 nand命令 nand命令可以通过不同的参数实现对Nand Flash的擦除、读、写操作。 常见的几种命令的含义如下(具体格式见help nand)。 nand erase:擦除Nand Flash。 nand read:读取Nand Flash,遇到flash坏块时会出错。 nand read.jffs2:读取Nan

14、d Flash,遇到坏块时会把坏块部分对应的内容填充为0 xff,不会出错。 nand read.jffs2s:读取Nand Flash,遇到坏块时自动跳过(建议使用)。 nand write:写Nand Flash,nand write命令遇到flash坏块时会出错。 nand write.jffs2:写Nand Flash,可自动跳过坏块(建议使用)。,29,4.2.2 U-Boot的编译和使用,U-Boot命令介绍 flinfo命令 nand命令可以通过不同的参数实现对Nand Flash的擦除、读、写flinfo命令打印全部Flash组的信息,也可以只打印其中某个组。一般嵌入式系统的F

15、lash只有一个组。,30,4.2.2 U-Boot的编译和使用,U-Boot命令介绍 go命令 go命令可以执行应用程序。 第1个参数是要执行程序的入口地址。 第2个可选参数是传递给程序的参数,可以不用。,31,4.2.2 U-Boot的编译和使用,U-Boot命令介绍 iminfo命令 iminfo可以打印程序映像的开头信息,包含了映像内容的校验(序列号、头和校验和)。第1个参数指定映像的起始地址。可选的参数是指定更多的映像地址。,32,4.2.2 U-Boot的编译和使用,U-Boot命令介绍 loadb命令 loadb命令可以通过串口线下载二进制格式文件。,33,4.2.2 U-Boo

16、t的编译和使用,U-Boot命令介绍 loads命令 loads命令可以通过串口线下载S-Record格式文件。,34,4.2.2 U-Boot的编译和使用,U-Boot命令介绍 mw命令 mw命令可以按照字节、字、长字写内存,.b、.w、.l的用法与cp命令相同。 第1个参数address是要写的内存地址。 第2个参数value是要写的值。 第3个可选参数count是要写单位值的数目。,35,4.2.2 U-Boot的编译和使用,U-Boot命令介绍 nfs命令 nfs命令可以使用NFS网络协议通过网络启动映像。,36,4.2.2 U-Boot的编译和使用,U-Boot命令介绍 printenv命令 printenv命令打印环境变量。可以打印全部环境变量,也可以只打印参数中列出的环境变量。,37,4.2.2 U-Boot的编译和使用,U-Boot命令介绍 protect命令 protect命令是对Flash写

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > IT计算机/网络 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号