在上一篇我们已经说到如何让海思Hi3519A跑起来,输入几个命令是一顿操作猛如虎。但我们对这些命令还有作深入一点的了解,所以这篇我们专门是为命令行的探讨写的。
在Hi3519平台上跑的是Linux系统,所以我们通常所说的命令其实就是shell命令,针对的是Linux系统而言的。那么我们言归正传,开始吧!
1,mw 命令:我们在系统启动时,串口命令终端上输入 mw --help 来先了解一下这命令的一般用法。
这里写着 mw 即为 memory write 的意思,就是写入内存的命令。通常的格式为 mw[.b, .w, .l] address value [count] ==> mw [内存地址] [值] [长度] ;即是往内存的 address地址里写入 value的值,写入的数据长度为 count。其中附加参数[.b, .w, .l]分别为按照字节、字、长字写内存。比如我们在上一篇里边用到的命令行: mw.b 0x22000000 ff 0x1000000 /* 对内存初始化*/,就是从内存地址0x22000000开始到0x22000000 + 0x1000000这一段内存里全给它写0xff进去。mw.b 就是按照以字节大小写入内存,0xff刚好就是一个字节的大小。
2,tftp命令:TFTP是用来下载远程文件的最简单网络协议,它其于UDP协议而实现。嵌入式linux的tftp开发环境包括两个方面:
1),是linux服务器端的tftp-server支持;
2),是嵌入式目标系统的tftp-client支持;
因为u-boot本身内置支持tftp-client,所以嵌入式目标系统端就不用配置了。我们只要配置好linux服务器端tftp-server,我这边对应的就是ubuntu上要配置好。关于配置TFTP网上有相关的介绍,这里就不作详细的说明了。
在ubuntu上 查看tftp服务是否开启: netstat -a | grep tftp 如果显示结果为:表明服务已经开启,就表明tftp配置成功了。
Busybox中tftp命令的用法
命令格式为:
tftp [option] ... host [port]
如果要下载或上传文件的话是一定要用这些option的。
-g表示下载文件(get)
-p表示上传文件(put)
-l表示本地文件名(local file)
-r表示远程主机的文件名(remote file)
例1:要从远程主机192.168.1.2上下载,则应输入以下命令
tftp -g -r embedexpert 192.168.1.2
例2:(我们上一篇用到的命令)
tftp 0x22000000 uImage_hi3519av100_smp
把文件uImage_hi3519av100_smp通过tftp加载到板子内存的0x22000000处,uImage_hi3519av100_smp本身是在我们TFTP服务器上(ubuntu)。
例3:
tftp 193.169.3.42tftp>connect
tftp>get demon.txt
tftp>status
tftp>quit
这就是从共享处通过tftp下载文件。
3,nand命令: 我们在串口终端上输入 nand --help
我们可以看到nand命令里的可带参数还是不少的,我们说说那常用的几个。
1),nand info :显示可使用的 Nand Flash的基本信息
2),nand erase off size:Nand Flash 檫除命令,擦除 Nand Flash 的 off偏移地址处的 size 字节的数据
3),nand write addr off size:Nand Flash 烧写命令,将 SDRAM 的 addr 地址处的 size 字节的数据烧写到 Nand 的 off 偏 移地址。
4),nand read addr off size:Nand Flash 读取命令,从 Nand 的 off 偏移地址处读取 size 字节的数据到 SDRAM 的 addr地址。
5),nand write.yaffs2 addr off size:烧写 yaffs 映像专用的命令,这里需要注意,这个offset必须是nand pagesize的整数倍,
即(512+16或者2048+64)的整数倍。
6),nand bad: 显示 Nand Flash 的坏块
7),nand scrub off size: 可彻底擦除整块 Nand Flash 中的数据,包括OOB。可以擦除软件坏块标志。
4,setenv命令:这个是在uboot阶段上设置环境变量的命令,我们要用TFTP那么就必需要过IP地址设置这一关,设置这个IP只针对uboot有用的,进入到kernel以后就没用了。但我们在用tftp烧写固件时是在uboot阶段完成的,所以我们要用setenv命令设置相关的环境变量。
setenv serverip 192.168.12.50 /*设置服务器IP(TFTP服务器)*/
setenv ipaddr 192.168.12.23 /*设置板子的IP(只uboot上有效)*/
setenv gatewayip 192.168.12.1 /*设置板子的网关*/
setenv ethaddr 11:22:33:44:55:37 /*设置板子网卡的MAC地址*/
setenv bootcmd nand read 0x22000000 100000 400000 \; bootm 0x22000000 /*设置bootcmd,从nand flash的某一个地址开始读kernel进内存,并且从内存中的这个地址开始跑*/
setenv bootargs mem=480M console=ttyAMA0,115200 clk_ignore_unused root=/dev/mtdblock2 rw rootfstype=yaffs2 init=/linuxrc mtdparts=hinand:1M(uboot),4M(kernel),20M(rootfs) /*设置bootargs的参数,rootfs走那个分区、波特率、内存大小、串口以及系统分区表*/
saveenv /*保存以前上设置到 flash 指定的地址上,不然重启后就没了*/
5,boot命令:重启
参考:http://www.sohu.com/a/244245445_781584;
https://www.cnblogs.com/fly-fish/archive/2011/03/14/1983907.html;等等。
好了,今天就先写到这里了。明天见!