前言
在板子上存在uboot的前提下进行如下操作,如果板子上从未烧写过uboot,就需要使用 HiTool 工具进行烧写。HiTool 工具位置放在 Hi3559A***/01.software/pc/HiTool,使用说明请参见该目录下的《HiBurn工具使用指南》
注意:单 Linux 方案要烧写 image_glibc_multi-core_arm64 目录中的镜像文件!获取方式为:进入到hi3995_tools/Hi3559AV100_SDK_V2.0.3.1/osdrv目录下
source /etc/profile
make BOOT_MEDIA=spi AMP_TYPE=linux all
1. 配置tftp服务,防火墙务必关闭
2. 参数配置
setenv ipaddr 192.168.119.200 setenv ethaddr 00:10:ab:20:81:70 setenv netmask 255.255.255.0 setenv gatewayip 192.168.119.1 setenv serverip 192.168.119.100 ping 192.168.119.100
确保网络畅通。
以上为举例,IP 以实际为准。
3. 烧写 multi-core 版本映像文件到 SPI NAND
注意:单 Linux 方案要烧写 image_glibc_multi-core_arm64 目录中的镜像文件!
3.1. 地址空间说明
以下操作基于图示的地址空间分配,也可以根据实际情况进行调整。
3.2. 拨码选择主 CPU
通过拨码开关 SW1.4 设置选择主 CPU:
0:从 A53MP Core0 启动;
1:从 A53UP 启动。
3.3. 烧写 u-boot
mw.b 0x44000000 0xff 0x100000 tftp 0x44000000 u-boot-hi3559av100.bin nand erase 0x0 0x100000 nand write 0x44000000 0x0 0x100000
3.4. 烧写内核
mw.b 0x44000000 0xff 0x900000 tftp 0x44000000 uImage_hi3559av100_multi-core nand erase 0x100000 0x900000 nand write 0x44000000 0x100000 0x900000
3.5. 烧写文件系统
mw.b 0x44000000 0xff 0x1000000 tftp 0x44000000 rootfs_hi3559av100_2k_4bit.yaffs2 nand erase 0xA00000 0x1000000 nand write.yaffs 0x44000000 0xA00000 0xb934c0 (0xb934c0 为 rootfs 文件实际大小)
实际文件大小参考tftp传过去后的大小显示
Using gmac0 device TFTp from server 192.168.119.100; our ip address is Filename 'rootfs hi3559av100 2k 4bit.yaffs2'. Load address: 0x44000000 Loading: ############# ####### ######## ########################################### *###########################*############## 9.5 MiB/s done Bytes transferred = 12137664(b934c0 hex) Hx--1024
3.6. 设置启动参数
参数说明:
bootargs:
• mem=xxxM 分配给Linux操作系统的内存大小;
• root=/dev/xxx 指定根文件系统所在的设备号、分区号;
• rootfstype=xxx 指定根文件系统类型;
• rw 声明启动权限,即以读写方式启动;
• rootwait 指等待设备/dev/mmcblk0p1设备就绪后才尝试挂载rootfs,仅emmc需要该参数;
• mtdparts/blkdevparts 根据flash/emmc总容量划定各分区大小;
setenv bootargs 'mem=512M console=ttyAMA0,115200 root=/dev/mtdblock2 rw rootfstype=yaffs2 mtdparts=hinand:1M(boot),9M(kernel),16M(rootfs)' setenv bootcmd 'nand read 0x44000000 0x100000 0x900000;bootm 0x44000000' saveenv
4. 重启系统
reset