第三章:使用HiTool下载程序

xiaoxiao2021-02-28  44

1、编译好SDK之后,在osdrv/pub/image_uclibc生成我们需要的镜像,可以看一下文件大小  接下来我们需要用到uboot、kernel、rootfs,其中rootfs是rootfs_hi3518ev200_64k.jffs2 2、烧录原理 开发板中用的是spiflash,有16M的大小。通过主芯片提供的isp下载的机制来下载。通过串口发送数据给主芯片(hi3518e),主芯片接收完数据后暂存到内存中去,之后通过spi接口将数据写入flash中。 这种方式不要求flash中有任何工具,所以很方便。 isp代码固化在了在了芯片的irom中。 一启动会默认的先从uart中接收数据(第一启动顺序),如果烧录工具和芯片通信的上,就会触发isp下载。如果没有就会进行第二顺序启动,即从flash中load代码,里面的细节就先不了解了。 3、烧录工具HI_Tool 这个工具是基于java开发的,所以要先安装jre-6u45-windows-i586,安装完后, 启动Hi3518E V200R001C01SPC030\01.software\pc\Hi_TOOl目录中的HiTool.exe   点击hitool平台中的hiburn,进入到工具界面。  之后可以看到以下界面,hitool支持串口和网路下载,这里我们仅使用串口进行下载,网路这块,以后有机会在试试看吧。 首先一开始要给开发板接上串口和电源,然后再打开这个hitool工具。  1、如果一开始看不到串口的话,点击刷新,就会出现串口号。  2、传输方式选择串口。  3、选择要下载的文件,只能是我们事先编译好的uboot。  4、器件是spi  5、开始地址和长度这个根据我们自己设置的大小来设即可,但不能小于烧录文件的大小。 最后点击烧录就可以开始烧录了。如果还是提醒串口啥的,那就先关闭这个工具,在开发板不断电的情况下,再从第一步开始做起。 开始烧录的时候,会出现以下窗口,但是进度条不会动的,这时候就要将开发板断电再上电,就可以正常下载了,这个下载方式和51单片机一模一样。下载完成会有提示。 4、这里只能下载我们编译好的uboot,否则下载一半会出现串口错误。主要原因是因为hitool的下载机制 、它先将我们要下载的东西存放在内部内存中(0x81000000)然后使用uboot的flash命令去烧写。 以我们现在烧录的uboot来说 1、Send command: getinfo version 2、Send command: getinfo bootmode 3、Send command: getinfo spi 4、Send command: sf probe 0 5、Send command: sf erase 0x0 0x100000 6、Send command: sf write 0x81000000 0x0 0x50000 7、Send command: reset 5、因为嵌入式系统为了简化,没有使用分区表来自动管理flash,所以都是事先定死的。所以在部署一个嵌入式系统前都要人为的定下一个分区 分区名 分区大小 起始地址 截至地址 bootloader: 1M 0x00000000 0x00100000 kernel: 3M 0x00100000 0x00400000 rootfs: 12M 0x00400000 0x01000000 6、接下来的kernel和rootfs则需要用tftp的下载方式下载到内存中去,然后再用uboot中的命令来下载到flash中。 7、tftp更新并重新烧写uboot的命令序列: mw.b 0x82000000 ff 0x100000 tftp 0x82000000 u-boot-hi3518ev200.bin sf probe 0 sf erase 0x0 0x100000 sf write 0x82000000 0x0 0x100000 -------------------------------------------------- tftp更新并重新烧写kernel的命令序列: mw.b 0x82000000 ff 0x300000 tftp 0x82000000 uImage_hi3518ev200 sf probe 0 sf erase 0x100000 0x300000 sf write 0x82000000 0x100000 0x300000 --------------------------------------------------- tftp更新并重新烧写rootfs的命令序列: mw.b 0x82000000 ff 0xc00000 tftp 0x82000000 rootfs_hi3518ev200_64k.jffs2 sf probe 0 sf erase 0x400000 0xc00000 sf write 0x82000000 0x400000 0xc00000 8、正确的bootcmd和bootargs对应的设置命令: set bootcmd 'sf probe 0;sf read 0x82000000 0x100000 0x300000;bootm 0x82000000' set bootargs mem=32M console=ttyAMA0,115200 root=/dev/mtdblock2 rootfstype=jffs2 mtdparts=hi_sfc:1024K(boot),3072K(kernel),12288K(rootfs) 其中mtdparts是告诉内核将来我们的flash各分区大小是和名字是啥。 到内核后会打印出我们设置是分区名称和范围
转载请注明原文地址: https://www.6miu.com/read-1717237.html

最新回复(0)