Hi3559AV100 EMMC烧写方法

手上有一块Hi3559AV100的开发板,用来做泊车辅助系统,也算是从算法转嵌入式,搞了三天,各种报错,最终找到一个烧写方法,仅供参考。

开发环境:一台Win10主机,一台装有Ubuntu16.04的电脑和Hisi开发板 三者在同一个局域网内,win10电脑的与开发板的串口连接。

开发环境搭建

  1. 在局域网内Win10电脑与开发板的串口连接,通过网线将开发板连接到路由器上,开启Ubuntu主机并保证其能够连接网络。
  2. 在Ubuntu操作系统中安装好 nfs samba 和ssh等。
  3. Ubuntu 执行命令 sudo dpkg-reconfigure dash /#选择 否
  4. 安装软件包 sudo apt-get install make libc6:i386 lib32z1 lib32stdc++6 zlib1g-dev libncurses5-dev ncurses-term libncursesw5-dev g++ u-boot-tools:i386 texinfo texlive gawk libssl-dev openssl bc
  5. 执行 sudo touch /etc/ld.so.preload 创建文件,并执行 sudo echo "">/etc/ld.so.preload

SDK安装

SDK的安装基本没什么坑的点,跟着官方的教程走基本没问题。

只是需要自己下载Linux内核并手动打补丁,详细的步骤在osdrv中opensource 的kernel readme中有较为详细的说明。

#Uboot、内核kernel和文件系统的编译

这个部分在osdrv的readme中有较为详尽的介绍,注意在编译时需要选择emmc。

make BOOT_MEDIA=emmc AMP_TYPE=linux all

需要修改内核的按照下面的方法自己配置.config文件,手动编译内核。

uboot烧写

由于寄来的是一个空板,需要通过HiTools手动烧写Uboot,注意,每一个emmc、spi flash等需要烧写的Uboot是不同的,使用spi flash等的Uboot烧写emmc的内核和文件系统时会提示找不到MMC设备,从而无法烧写。

另一个需要注意的地方就是在SW1的3号拨码必须拨到0的位置,否则无法进行烧写。

内核、文件系统的烧写

内核文件系统的烧写在文档中没有找到说明,坑还是有不少的,其中的uImage_emmc为编译的文件,由于需要设置CAN接口,对内核进行的部分改动,如果不需要改动,文件为uImage_hi3559av100_multi-core。

在烧写文件系统时需要注意,一定要写write.ext4sp而不是write,否则会引起内核恐慌,无法正常进入系统。

mw.b 82000000 0xff 900000     
tftp 82000000 uImage_emmc    
mmc erase 800 4800    
mmc write 0 0x82000000 800 4800

mw.b 82000000 0xff 0x6000000    
tftp 82000000 rootfs_hi3559av100_96M.ext4    
mmc erase 5000 30000    
mmc write.ext4sp 0 0x82000000 5000 30000

setenv bootargs 'mem=512M console=ttyAMA0,115200 clk_ignore_unused rw rootwait root=/dev/mmcblk0p3 rootfstype=ext4 blkdevparts=mmcblk0:1M(uboot.bin),9M(kernel),96M(rootfs.ext4),-(user)'     
setenv bootcmd 'mmc read 0 0x80000000 800 4800; bootm 0x80000000'  
saveenv 

reset

 

参考文献:

海思SDK官方文档、SDK readme文件 海思芯片系统镜像烧写教程

 

你可能感兴趣的:(嵌入式,嵌入式,linux,内核)