我的板卡,是按hisi的推荐,设计的启动方式,接的是spi接口的norflash,作为启动介质,nand作为存储文件的硬盘。
方法一:HiTool.exe工具烧录
1、hisi的hisitool工具里,有HiTool.exe,板卡第一次烧录镜像,需要用hisi的工具才能烧录
打开HiTool.exe,选择hisi3520dv400,然后,选如下第二步的burn,如下可以串口烧录,也可以网口烧录,
第一次烧录时,只能选串口烧录,烧录很慢,先只勾选uboot,按下面填好fastboot,kernel,fs,的地址,大小,点击烧录,重新断电上电,烧录成功。
烧录好后,设置uboot环境变量,ip,服务器ip等。
setenv baudrate 115200
setenv use_mdio 0
setenv ethaddr=d2:34:88:84:c2:b0
setenv bootfile "uImage"
setenv bootdelay 3
setenv filesize CA0000
setenv fileaddr 82000000
setenv gatewayip 192.168.0.1
setenv netmask 255.255.255.0
setenv ipaddr 192.168.0.199
setenv serverip 192.168.0.7
setenv bootargs 'mem=128M console=ttyAMA0,115200 root=/dev/mtdblock2 rootfstype=jffs2 rw mtdparts=hi_sfc:1M(boot),4M(kernel),24M(rootfs)'
setenv bootcmd 'sf probe 0;sf read 0x82000000 0x100000 0x400000;bootm 0x82000000'
setenv stdin serial
setenv stdout serial
setenv stderr serial
setenv verify n
saveenv
printenv
reset
后面可以选串口和网口继续烧录kernel,fs,选网口比较快,设置填写hisi工具的服务器ip,填pc电脑ip,板端配置填板卡设置好的ip,物理地址不用可以。
在Windows,安装tftp32工具,将kernel,和fs放入到工具目录下,启动tftp工具,点击hisi工具烧录,,重新断电上电,一分钟可烧完。
2、网络不行的话,选择串口也行,只是慢,十几分,选择串口的时候,我老是失败,后面一个一个烧,不是三个一起烧录,
注意报错原因,我有一次根文件系统一直失败,发现文件系统太大了,我设置的是24m大小,实际是200m,所以大小是根据自己的文件大小来设置的。
方法二:uboot下,tftp下载
注意:如果是emmc,就要用emmc命令,如果启动介质是nand,就要用nand命令,我是spi norflash,用spi命令,可以翻看我的其他文档
有介绍。
setenv baudrate 115200
setenv use_mdio 0
setenv ethaddr=d2:34:88:84:c2:b0
setenv bootfile "uImage"
setenv bootdelay 3
setenv filesize CA0000
setenv fileaddr 82000000
setenv gatewayip 192.168.0.1
setenv netmask 255.255.255.0
setenv ipaddr 192.168.0.199
setenv serverip 192.168.0.7
setenv bootargs 'mem=128M console=ttyAMA0,115200 root=/dev/mtdblock2 rootfstype=jffs2 rw mtdparts=hi_sfc:1M(boot),4M(kernel),24M(rootfs)'
setenv bootcmd 'sf probe 0;sf read 0x82000000 0x100000 0x400000;bootm 0x82000000'
setenv stdin serial
setenv stdout serial
setenv stderr serial
setenv verify n
saveenv
printenv
reset
uboot要先设置好,设置好serverip,就是主机ip,在linux系统,搭建好tftp服务器,一定要能通确保,
以16M SPI Flash为例。
1)地址空间说明
| 1M | 4M | 11M |
|---------------|---------------|---------------|
| boot | kernel | rootfs |
以下的操作均基于图示的地址空间分配,您也可以根据实际情况进行调整。
2)烧写u-boot
sf probe 0
mw.b 82000000 ff 100000
tftp 82000000 u-boot-hi3520dv400.bin
sf probe 0
sf erase 0 100000
sf write 82000000 0 100000
reset
3)烧写内核
mw.b 82000000 ff 400000
tftp 82000000 uImage_hi3520dv400
sf probe 0
sf erase 100000 400000
sf write 82000000 100000 400000
4)烧写文件系统
mw.b 82000000 ff 1800000
tftp 82000000 rootfs_hi3520.jffs2
sf probe 0
sf erase 500000 1800000
sf write 82000000 500000 1800000
也可以使用Windows下的tftp工具,如下图,下载一个工具,
将要下载的镜像,放入同一级目录,目录名称不能有中文最好,
打开工具,自动识别到当前目录和ip,没有就自己手动填对。
在uboot模式下,终端输入烧录命令,刚开始下载失败,tftp工具提示找不到文件,可能文件名有错,复制一样的文件名,不能有中文字符
后面多试几次,就成功了。
最后一定别忘了,重新写进去,否则启动不了,还不知道傻傻的,啥原因
后面调试代码,就可以通过nfs方式,挂载,调试代码了。
nfs挂载:
setenv baudrate 115200
setenv use_mdio 0
setenv ethaddr=d2:34:88:84:c2:b0
setenv bootfile "uImage"
setenv bootdelay 3
setenv filesize CA0000
setenv fileaddr 82000000
setenv gatewayip 192.168.0.1
setenv netmask 255.255.255.0
setenv ipaddr 192.168.0.99
setenv serverip 192.168.0.85
setenv bootargs 'mem=128M noinitrd init=/linuxrc console=ttyAMA0,115200 root=/dev/nfs rw nfsroot=192.168.0.85:/root/2109/decode/rootfs_hi3520,v3 ip=192.168.0.142:192.168.0.85:192.168.0.1:255.255.255.0::eth0:off'
setenv bootcmd 'sf probe 0;sf read 0x82000000 0x100000 0x400000;bootm 0x82000000'
setenv stdin serial
setenv stdout serial
setenv stderr serial
setenv verify n
saveenv
printenv
reset