/*****************************************************************************************************************************************
*Author:JYW
*Time:2019_05_03
*Describe:学而记之进而习之
*****************************************************/
目录
交叉编译工具集:
readelf -h :读取可执行文件的头信息
size :查看可执行文件大小
nm :查看可执行文件的符号表
strip:剔除符号表(符号表只是供我们人看的;可以使可执行文件变小
strings:查看常量字符串
objcopy:
objdump:(-d反汇编)查看汇编与地址,代码之间的关系;
addr2line:将代码中哪一行出错表示出来;
Uboot常用命令介绍:
print:
查看uboot这个软件的环境变量; 格式:变量名=变量值;
setenv:
设置环境变量;saveenv:保存环境变量;
格式:
setenv abc 100 200(abc是变量名,后面的都是变量值)(设置或添加一个变量值,修改一个已有的变量
setenv abc (删除变量abc
如果只进行上面的操作,那么仅仅保存在了RAM中,而没有保存在Flash;所以要使用saveenv保存将本次改变保存在存储器;
uboot网络环境层的设置:与ipaddr这个变量名有关,setenv ipaddr 192.168.10.132
更改PC机IP(即Linux中eth1的IP)命令:sudo ifconfig eth1 192.168.10.167
测试网络层是否链接:ping 一般是开发板ping主机(主机ping开发板,开发板收到后一般不回复)当看到host 192.168.10.167 is alive 说明ping通;
测试传输层是否链接:tftp
基于UDP,客户端:开发板,服务器端:PC;PC又分为windows和linux
怎么用客户端?
一般:server_ip(连谁 port xxxx(做什么事情
但是uboot变为:server_ip 变成了通过环境变量serverip来取得,port: tftp这个命令已经写死,
xxxx:干什么事情,由tftp这个命令通过输入参数来确定;
tftp 20008000(要传到的内存地址 abc(要传的东西或者是a.txt
md(内存显示 20008000 (memory display)
服务器端:
windows:tftpd软件包
linux:
nand:
三个常规的命令 后面跟三个动词[erase(擦除,write,read] [内存地址] [naflash的内部地址] [搬移大小]
在用之前要进行初始化, nand erase 500000 1024 (擦除500000 ,大小以块和页位单位)
将nand中5M空间读到内存21000000地址中,1k
5M: 5 * ( 2^20 -----> 0x100000)
nand read 21000000 500000(16进制) 1024(以字节为单位)
bootm:
启动内核
内核分为: uImage zImage Image bzImage
内核运行还需要启动参数
go:
内核启动条件:
root=(启动的根文件系统在哪个设备)
init= (内核启动后,第一个可自行文件init进程从哪里来)
console= (内核启动时,使用哪个设备作为控制台)
setenv bootargs root=/dev/mtdblock2 init=/linuxrc console=ttySAC0,(tty终端,串口0) 115200
tftp 20008000 uImage(下载uImage)
pri(显示信息)
文件系统的烧写:FS
(两种文件系统的烧写:NFS和Ramdisk)
Ramdisk:借助内存(最后成品这种方式较多)
顾名思义:就是内存磁盘
root=/dev/ram //启动的根文件在哪一个设备
设备信息:initrd=0x21000000,8M(起始地址和所占大小)
init=/linuxrc //内核启动后,第一个可自行文件init进程从哪里来
console=ttySAC0 //内核启动时,使用哪个设备作为控制台
测试:内存:0x20000000 uImage 在0x20008000上放上uImage
0x21000000 initrd.img.gz
1)先把我们的内核下载下来
tftp 20008000 uImage (在20008000位置上将我们的内核uImage下载下来)
//现在只是将我们的内核下载下来(下载到开发板上),下载下来之后仍然没有整个文件系统的部署,下面开始部署文件系统
2)开始部署文件系统
tftp 21000000 initrd.img.gz
//输入上面命令就开始下载了;
3)设置启动参数,//让uboot把启动参数传递给内核,内核就会按着启动参数的设置进行启动
setenv bootargs root=/dev/ram initrd=0x21000000 ,8M init=/linuxrc console=ttySAC0,115200
bootm 20008000 //内核跑起来,加载我们的文件系统
NFS:通过网线(对开发来说比较多)//NFS故名思意,网络文件系统