嵌入式Linux开发环境的搭建
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
10
4.1.2 主机交叉开发环境的配置
NFS配置
配置文件:/etc/exports 配置文件每一行格式: [共享的目录] [客户端主机名称或IP]([参数1,参数2…]) NFS配置文件常用参数:
NFS配置文件举例:
cat /etc/exports /home/david/project *(rw,sync,no_root_squash)
23
4.2.2 U-Boot的编译和使用
U-Boot命令介绍
cp命令
cp命令可以在内存中复制数据块,包括对Flash的读写操作。 第1个参数source是要复制的数据块起始地址。 第2个参数target是数据块要复制到的地址。这个地址如果在Flash 中,那么会直接调用写Flash的函数操作。所以U-Boot写Flash就使 用这个命令,当然需要先把对应Flash区域擦干净。 第3个参数count是要复制的数目,根据cp.b、cp.w、cp.l分别以字 节、字、长字为单位。
7
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 *:*
6
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 = 100 2 flags = IPv4 }
超 级 终 端 配 置
配 置
5
4.1.2 主机交叉开发环境的配置
配置TFTP服务
tftp是一个传输文件的简单协议,它基于UDP协议而实现。此协议设 计的时候是进行小文件传输的
tftp传输中有3种模式。
netascii:8位的ASCII码形式。 octet:8位源数据类型。 mail:这种模式已经不再支持,它将返回的数据直接返回给用户 ,而不是保存为文件。
U-Boot命令介绍
echo命令
echo命令回显参数
26
4.2.2 U-Boot的编译和使用
U-Boot命令介绍
erse命令
erase命令可以擦除Flash。参数必须指定Flash擦除的范围。 按照起始地址和结束地址,start必须是擦除块的起始地址;end必 须是擦除末尾块的结束地址。这种方式最常用。
U-Boot命令介绍
go命令
go命令可以执行应用程序。 第1个参数是要执行程序的入口地址。 第2个可选参数是传递给程序的参数,可以不用。
30
4.2.2 U-Boot的编译和使用
U-Boot命令介绍
iminfo命令
iminfo可以打印程序映像的开头信息,包含了映像内容的校验( 序列号、头和校验和)。第1个参数指定映像的起始地址。可选 的参数是指定更多的映像地址。
24
4.2.2 U-Boot的编译和使用
U-Boot命令介绍
crcຫໍສະໝຸດ Baidu2命令
crc32命令可以计算存储数据的校验和。 第1个参数address是需要校验的数据起始地址。 第2个参数count是要校验的数据字节数。 第3个参数addr用来指定保存结果的地址。
25
4.2.2 U-Boot的编译和使用
嵌入式应用程序设计
第四章 嵌入式Linux开发环境的搭建
本章课程:
4.1 搭建嵌入式Linux交叉开发环境 4.2 Bootloader 4.3 Linux内核与移植 4.4 嵌入式文件系统的构建 4.5 小结 4.6 思考与练习
2
4.1 构建嵌入式Linux开发环境
交叉编译环境的意义 如何搭建嵌入式交叉编译环境 嵌入式交叉编译环境包括哪些内容
4
4.1.2 主机交叉开发环境的配置
配置控制台程序
Windows操作系统中有超级终端(HyperTerminal)工具; Linux/Unix操作系统有minicom(使用“minicom”命令启动该软件) 等工具 minicom
8
4.1.2 主机交叉开发环境的配置
Windows下TFTP服务配置
在Windows下配置tftp服务需要安装使用tftp服务器软件,常见的 可使用tftpd32,网上有很多下载该软件的地方,读者可以自行下载 。要注意的是,该软件是tftp的服务器端,而目标板上则是tftp的客 户端
9
4.1.2 主机交叉开发环境的配置
18
4.2.2 U-Boot的编译和使用
U-Boot生成镜像文件
19
4.2.2 U-Boot的编译和使用
U-Boot工具
20
4.2.2 U-Boot的编译和使用
U-Boot命令介绍
bootm命令
bootm命令可以引导启动存储在内存中的程序映像。这些内存包 括RAM和可以永久保存的Flash。 第1个参数addr是程序映像的地址,这个程序映像必须转换成UBoot的格式。 第2个参数对于引导Linux内核有用,通常作为U-Boot格式的 RAMDISK映像存储地址;也可以是传递给Linux内核的参数(默 认情况下传递bootargs环境变量给内核)。
22
4.2.2 U-Boot的编译和使用
U-Boot命令介绍
cmp命令
cmp命令可以比较两块内存中的内容。.b以字节为单位;.w以字 为单位;.l以长字为单位。注意:cmp.b中间不能保留空格,需要 连续输入命令。 第1个参数addr1是第一块内存的起始地址。 第2个参数addr2是第二块内存的起始地址。 第3个参数count是要比较的数目,单位是字节、字或者长字。
28
4.2.2 U-Boot的编译和使用
U-Boot命令介绍
flinfo命令
nand命令可以通过不同的参数实现对Nand Flash的擦除、读、写 flinfo命令打印全部Flash组的信息,也可以只打印其中某个组。一 般嵌入式系统的Flash只有一个组。
29
4.2.2 U-Boot的编译和使用
构建一个Linux系统,需仔细考虑下面几点。 (1)选择嵌入式Linux发行版。 (2)熟悉开发环境和工具。 (3)熟悉Linux内核。 (4)熟悉目标板引导方式。 (5)熟悉Linux根文件系统。 (6)理解Linux内存模型。 (7)理解Linux调度机制和进程线程编程。
3
4.1.1 嵌入式交叉编译环境搭建
31
4.2.2 U-Boot的编译和使用
U-Boot命令介绍
loadb命令
loadb命令可以通过串口线下载二进制格式文件。
32
4.2.2 U-Boot的编译和使用
U-Boot命令介绍
loads命令
loads命令可以通过串口线下载S-Record格式文件。
33
4.2.2 U-Boot的编译和使用
27
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:读取Nand Flash,遇到坏块时会把坏块部分对应 的内容填充为0xff,不会出错。 nand read.jffs2s:读取Nand Flash,遇到坏块时自动跳过(建议使 用)。 nand write:写Nand Flash,nand write命令遇到flash坏块时会出错 。 nand write.jffs2:写Nand Flash,可自动跳过坏块(建议使用)。
U-Boot命令介绍
mw命令
mw命令可以按照字节、字、长字写内存,.b、.w、.l的用法与cp 命令相同。 第1个参数address是要写的内存地址。 第2个参数value是要写的值。 第3个可选参数count是要写单位值的数目。
34
4.2.2 U-Boot的编译和使用
U-Boot命令介绍
protect命令
protect命令是对Flash写保护的操作,可以使能和解除写保护。 第1个参数on代表使能写保护;off代表解除写保护。 第2、第3个参数是指定Flash写保护操作范围,跟擦除的方式相同 。
21
4.2.2 U-Boot的编译和使用
U-Boot命令介绍
bootp命令
bootp命令通过bootp请求,要求DHCP服务器分配IP地址,然后通 过TFTP协议下载指定的文件到内存。 第1个参数是下载文件存放的内存地址。 第2个参数是要下载的文件名称,这个文件应该在开发主机上准 备好。
Bootloader是在操作系统运行之前执行的一段小程序。 通过这段小程序,我们可以初始化硬件设备、建立内存空 间的映像表,从而建立适当的系统软硬件环境,为最终调 用操作系统内核做好准备。
13
4.2.1 Bootloader的种类
14
4.2.2 U-Boot的编译和使用
什么是U-Boot
最早,DENX软件工程中心的Wolfgang Denk基于 8xxrom的源码创建了PPCBOOT工程,并且不断添加处 理器的支持。后来,Sysgo Gmbh把PPCBOOT移植到 ARM平台上,创建了ARMBOOT工程。然后以 PPCBOOT工程和ARMBOOT工程为基础,创建了U-Boot 工程。
U-Boot的源码是通过gcc和Makefile组织编译的。 顶层目录下的Makefile首先可以设置开发板的定义 ,然后递归地调用各级子目录下的Makefile,最后 把编译过的程序链接成U-Boot映像。 顶层目录下的 Makefile
它负责u-boot整体配置编译。每一种开发板在Makefile都 需要有板子配置的定义。 配置u-boot: make smdk2410_config 编译: make
NFS文件系统
NFS为Network FileSystem的简称,最早是由Sun公司提出发展起 来的,其目的就是让不同的机器、不同的操作系统之间可以彼此共 享文件。 NFS的使用分为服务器端和客户端,其中服务器端提供要共享的 文件,而客户端则通过挂载“mount”这一动作来实现对共享文件 的访问操作。在嵌入式开发中,通常NFS服务端在宿主机上运行 ,而客户端在目标板上运行。 NFS服务器端是通过读入它的配置文件“/etc/ exports”来决定所共 享的文件目录的.
15
4.2.2 U-Boot的编译和使用
U-Boot编译
U-Boot目录可以分为三类:
与处理器体系结构或者开发板硬件直接相关。 一些通用的函数或驱动。 U-Boot的应用程序、工具或者文件。
16
4.2.2 U-Boot的编译和使用
U-Boot目录结构
17
4.2.2 U-Boot的编译和使用
nfs命令
nfs命令可以使用NFS网络协议通过网络启动映像。
35
4.2.2 U-Boot的编译和使用
U-Boot命令介绍
printenv命令
printenv命令打印环境变量。可以打印全部环境变量,也可以只打 印参数中列出的环境变量。
36
4.2.2 U-Boot的编译和使用
U-Boot命令介绍
11
4.1.2 主机交叉开发环境的配置
NFS服务启动
设置NFS服务在每次系统引导时自动开启: # /sbin/chkconfig nfs on (在Ubuntu中应该输入 /sbin/chkconfig nfs-kernel-server on)
12
4.2 Bootloader
Bootloader是什么?