欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Hi3518ev200使用HiTool下载程序

程序员文章站 2024-02-23 21:01:40
...
1、编译好SDK之后,在osdrv/pub/image_uclibc生成我们需要的镜像,可以看一下文件大小
Hi3518ev200使用HiTool下载程序Hi3518ev200使用HiTool下载程序Hi3518ev200使用HiTool下载程序
 接下来我们需要用到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
Hi3518ev200使用HiTool下载程序

  点击hitool平台中的hiburn,进入到工具界面。

Hi3518ev200使用HiTool下载程序
 之后可以看到以下界面,hitool支持串口和网路下载,这里我们仅使用串口进行下载,网路这块,以后有机会在试试看吧。
首先一开始要给开发板接上串口和电源,然后再打开这个hitool工具。
 1、如果一开始看不到串口的话,点击刷新,就会出现串口号。
 2、传输方式选择串口。
 3、选择要下载的文件,只能是我们事先编译好的uboot。
 4、器件是spi
 5、开始地址和长度这个根据我们自己设置的大小来设即可,但不能小于烧录文件的大小。
最后点击烧录就可以开始烧录了。如果还是提醒串口啥的,那就先关闭这个工具,在开发板不断电的情况下,再从第一步开始做起。
Hi3518ev200使用HiTool下载程序
开始烧录的时候,会出现以下窗口,但是进度条不会动的,这时候就要将开发板断电再上电,就可以正常下载了,这个下载方式和51单片机一模一样。下载完成会有提示。
Hi3518ev200使用HiTool下载程序

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各分区大小是和名字是啥。
到内核后会打印出我们设置是分区名称和范围
Hi3518ev200使用HiTool下载程序Hi3518ev200使用HiTool下载程序
        </div>
            </div>
        </article>