嵌入式系统开发-麦子学院(13)-linux底层系统开发(1)

1. 嵌入式系统移植:

(1)交叉编译链: 不同平台的对指令集的编码译码不同。

将交叉编译器增加到环境变量中: ① PATH=$PATH:目录 ② vi /etc/environmet 文件中添加

交叉编译的工具集

readelf	-h 读取文件的ELF头信息
size	读取文件ELF头的大小
nm	查看可执行程序的符号表
strip	剔除符号表
strings	查看可执行程序中的字符串
objdump	-d 反编译
objcopy	剔除ELF头信息
addr2line	标出错误信息的行号

2.虚拟机配置双网卡

1)点击虚拟机设置,然后点击添加按钮,添加网络适配器,点击下一步完成,虚拟机会自动设置。
嵌入式系统开发-麦子学院(13)-linux底层系统开发(1)_第1张图片
2)使用“ifconfig”命令,可看到双网卡已经设置好了。

嵌入式系统开发-麦子学院(13)-linux底层系统开发(1)_第2张图片

3. u-boot常用的命令:

print 	查看uboot的环境变量
setenv	设置/修改/删除uboot变量
saveenv	保存设置的uboot变量
nand	 erase :擦拭 write:写 read:读
tftp	使用tftp传输
bootm	启动内核                                      需要bootargs环境参数
go	内核从一段地址运行起来      需要bootargs环境参数
md 	显示一段内存信息
ipaddr 设置ipv4 地址

bootargs启动参数

	root =	启动的根文件系在那个设备(设备信息initrd,size)
	init=	内核启动后,第一个可执行文件init进程从哪来
	console=	内核启动时,使用哪个设备作为控制台

4. 安装tftp服务

服务端安装tftp服务:

安装:

sudo apt-get install tftpd-hpa   //32位
sudo apt-get install tftpd openbsc-xinetd  //64位

配置:

sudo vim /etc/default/tftpd-hpa
TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/tftpboot"    //指定将来下位机的下载目录为上位机的/tftpboot,此目录随意指定即可
TFTP_ADDRESS="0.0.0.0:69"
TFTP_OPTIONS="-l -c -s"

修改完毕,保存退出

sudo mkdir /tftpboot //创建tftpd-hpa网络服务的下载目录

修改下载目录的用户和组权限为当前用户(例如carspiriter用户)

sudo chown carspiriter /tftpboot -R 
sudo chgrp carspiriter /tftpboot -R

修改下载目录的权限

sudo chmod 777 /tftpboot

查看是否成功开启tftp服务:

netstat -ua  //可看到tftp服务

客户端使用tftp服务:

  • 设置好网络ip
  • tftp [内存地址] 文件

5. nand 命令

nand中5M空间表示:

5M : 5* 1M    
	5*2*20 --> 5*1000000000000000000000 -->5 * 0x10000 --> 0x500000

nand [动词] [内存地址] [nandflash地址]

例1:nand 中5M空间读到内存21000000,1K

nand read 2100000 0500000 1024

例2:内存21000000内容写到nand 中5M空间,1K

nand write 2100000 500000 1024

例3:擦拭nand 中5M空间,1K

nand erase 500000 1024

6.NFS服务

Ubuntu 系统 安装NFS server

1)执行命令:

sudo apt-get install nfs-kernel-server

2)在用户目录下,建立一个nfs服务的专有的文件夹

mkdir nfs

3)执行命令:sudo vim /etc/exports 配置nfs

4)在文件的最后一行添加:

/~/nfs *(rw,sync,no_root_squash,no_subtree_check)

5)解释

/~/nfs:与nfs服务客户端共享的目录,这个路径必须和你前面设置的文件的路径一致!

*:允许所有的网段访问,也可以使用具体的IP

rw:挂接此目录的客户端对该共享目录具有读写权限

sync:资料同步写入内存和硬盘

no_root_squash:root用户具有对根目录的完全管理访问权限。

no_subtree_check:不检查父目录的权限。

6)修改完上述配置文件保存退出。

7)执行命令:sudo /etc/init.d/portmap restart 重启portmap服务。
8)执行命令:sudo /etc/init.d/nfs-kernel-server restart 重启nfs服务。

将nfs作为文件系统启动

在uboot命令行,设置bootargs启动参数:

bootargs root=/dev/nfs nfsroot=192.168.1.11:/home/jxm/nfs ip=192.168.1.22 init=/linuxrc console=ttyPS0

你可能感兴趣的:(嵌入式——麦子学院(学习路线))