4、HiTool工具链实战:HiTool刷机工具、HiBurn烧录、HiReg寄存器工具的使用

说实话,很多刚接触海思平台的工程师,第一关就卡在工具链上。

SDK拿到了,板子也焊好了,结果连固件都烧不进去。我当年第一次用HiTool时,也折腾了一整个下午。后来摸透了这几个工具的脾气,才发现其实没那么复杂。

今天我就把HiTool工具链里最核心的三个家伙——刷机工具、HiBurn烧录、HiReg寄存器工具,给你掰开揉碎了讲清楚。

4.1 HiTool刷机工具——板子的"救命稻草"

HiTool刷机工具,说白了就是给海思芯片灌系统的。你想想看,一块空板子,啥都没有,怎么跑程序?就得靠这个工具把uboot、内核、文件系统一股脑塞进去。

核心功能:

  • 支持串口、网口、USB三种烧录方式
  • 可烧录uboot、kernel、rootfs等分区镜像
  • 支持单个分区烧录和全量烧录

我个人习惯用网口烧录,速度比串口快太多了。串口烧个几十兆的文件,能等到你怀疑人生。但网口有个前提——你得先把uboot跑起来,网络驱动要正常。

我的经验:第一次烧录时,建议先用串口方式把uboot烧进去。uboot起来后,再切到网口烧内核和文件系统。这样既稳又快。

4.2 HiBurn烧录——串口烧录的老黄牛

HiBurn是HiTool里专门负责串口烧录的模块。别看它界面简单,功能其实挺扎实的。

HiBurn烧录流程:

  1. 选择芯片型号(比如Hi3516DV300)
  2. 配置串口参数(波特率、数据位、停止位)
  3. 加载烧录文件(uboot、kernel、rootfs等)
  4. 设置烧录地址(分区起始地址)
  5. 点击烧录,给板子上电

这里有个坑,我曾经踩过。波特率别设太高,115200最稳。有人贪快设到921600,结果烧到一半就卡死了,板子变砖,还得重新来。

避坑指南:烧录过程中千万别断电!我曾经有一次烧到90%时手贱碰了电源线,结果uboot分区写了一半,板子彻底变砖。最后只能用JTAG救回来,折腾了两天。

HiBurn还有一个隐藏功能——烧录校验。烧完后会自动比对文件哈希值,确保数据没出错。这个功能我建议每次都开着,别省那几秒钟。

4.3 HiReg寄存器工具——芯片的"显微镜"

HiReg这个工具,说实话,用得好的人不多。但一旦你学会了,调试硬件问题就像开了天眼。

HiReg可以让你直接读写芯片的寄存器。比如你想看某个GPIO的电平状态,或者查一下时钟是否起振,用HiReg几秒钟就搞定了。

常用操作:

  • read 0x12010000 —— 读取指定地址的寄存器值
  • write 0x12010000 0x1 —— 写入指定值到寄存器
  • modify 0x12010000 0x0 0x1 —— 修改寄存器的某一位

实战场景:有一次我调试I2C设备,死活读不到数据。用HiReg一查,发现I2C控制器的时钟使能位没置起来。就一行命令的事,问题就找到了。

HiReg还支持批量操作。你可以写一个脚本,一次性配置几十个寄存器。这在初始化外设时特别有用。

我的习惯:每次调试新板子,我都会先用HiReg把关键寄存器的默认值读一遍,保存下来。万一后面改乱了,还能恢复回去。这招救过我不少次。

4.4 三个工具的配合使用

这三个工具不是孤立的,它们是一个组合拳。

场景 推荐工具 说明
首次烧录空板 HiTool(串口) 先烧uboot,再切网口
日常更新固件 HiBurn 只烧需要更新的分区
硬件调试 HiReg 查寄存器状态
板子变砖 HiTool(串口+JTAG) 强制烧录救砖

嗯,这里要注意一点。HiReg虽然强大,但别乱写。有些寄存器是只读的,有些是写一次就锁死的。我见过有人把PLL的配置寄存器写错了,结果芯片直接罢工,只能换板子。

4.5 实战小技巧

最后分享几个我这些年攒下来的小技巧:

  • 烧录前先备份——把板子当前的分区镜像读出来,万一新固件有问题还能回滚
  • 用批处理脚本——把常用的烧录命令写成.bat文件,一键执行,省时省力
  • 日志要保留——HiTool的烧录日志里有很多调试信息,出问题时翻一翻,往往能找到线索
  • 版本要匹配——HiTool的版本要和SDK版本对应,不然可能烧录失败

重要提醒:HiReg的修改是即时生效的,没有撤销功能。改之前一定要确认地址和值是对的。我建议先在文档里查清楚寄存器定义,再动手操作。

好了,关于HiTool工具链的三个核心工具,我就讲到这里。说白了,刷机工具是给板子装系统,HiBurn是串口烧录的老方法,HiReg是调试硬件的利器。把这几个工具用熟了,你在海思平台上的开发效率至少能翻一倍。

下一章,我会讲uboot的启动流程和定制方法。到时候咱们再聊。