简介海思HiTool烧写工具是一款面向海思芯片嵌入式开发和硬件调试场景的烧录工具包由官方提供的多个功能模块共同组成。其中镜像烧写模块用于将固件写入eMMC或Flash调试信息抓取模块支持分类采集日志和录制码流升级包制作模块可生成Loader镜像寄存器读写模块提供图形化的内存与寄存器查看修改功能开机画面制作模块支持制作瞬播预览镜像适用于海思平台开发人员、维修人员和产线工程师的日常固件维护与量产烧录工作。压缩包一共包含1220个文件整体大小166.47MB主要文件类型包括jar运行库、cfg烧写配置、chip芯片参数、dll动态库、xml界面配置、tcl脚本等各类文件按功能模块和芯片型号分目录存放方便按需查找。目前已有3201人学习下载。借助这套完整工具用户无需分别寻找零散烧录组件直接打开主程序即可一站式完成连接配置、串口烧写、升级包生成、镜像上载和寄存器内存调试等操作能够显著提升海思机顶盒、电视主板及物联网终端在开发调试和生产验证环节的效率。1. 海思HiTool烧写工具不是所有板子坏了都要动烙铁海思HiTool烧写工具是海思芯片方案里最常用的上位机烧录工具。做机顶盒、安防摄像头、网络播放器这类产品的工程师几乎都绕不开它。很多刚入行的朋友第一次见到它是因为手里的开发板或者电视盒子变砖了——fastboot被覆盖、分区表写坏、U-Boot刷不进这时候HiTool就是那瓶“后悔药”。它通过串口或网口连上板子绕过系统里的各种问题直接把固件以分区为单位写进eMMC、NAND或SPI Flash里。适合的人是三类做海思方案的嵌入式开发、电视盒子/安防设备的维修佬、以及想在量产阶段做半自动烧录的产线工程师。这篇按我自己的使用顺序来写从连得上、烧得进到烧完能起来、坑在哪里一条线说完。2. 认识HiTool的文件体系XML分区表、镜像文件和三种烧写方式2.1 HiTool是什么、版本与运行环境HiTool的官方定位是海思芯片的PC端烧写与调试工具网上能见到的常见版本包括hi tool 5.0.16、5.0.12这类5.x版本有些老资料里还有更早的3.x、4.x。很多人习惯叫它“海思烧录工具”或者“海思烧写工具”其实说的是同一个东西。它不是一个单纯刷机软件而是一个带图形界面的上位机能做的事包括擦除分区、烧写单个或多个镜像、读取器件信息、修改MAC地址、部分型号还支持通过串口命令行交互。运行环境上Windows下最省事常见的是Windows 7、Windows 10 64位系统直接跑Win11偶尔会碰到USB驱动签名问题我一般先装驱动再开HiTool。有些资料里会看到“海思ubuntu22.04.rar”这种压缩包说明部分平台是有Linux版本的HiTool但实际生产环境里绝大多数人还是用Windows版本因为量产电脑基本都是Windows。Ubuntu下跑的话常见做法是用Wine跑Windows版或者装Linux版然后手动加串口权限后面避坑章节再细说。2.2 烧写前必须准备的几类文件拿到一个海思平台刷机包比如网上常见的“海思3798mv310刷机包下载”回来解压后你会看到一整套文件。不能只拿一个.img就去烧你得搞清楚每个文件是干什么的。以典型的Hi3798MV310盒子刷机包为例通常会包含这些东西文件类型常见文件名作用分区表fastboot.xml、partition_xml.xml描述烧写哪些分区、每个分区写到哪个地址引导程序fastboot.bin、u-boot.bin第一阶段引导HiTool先把它加载进DDR再运行内核kernel.img、boot.imgLinux内核或Android boot镜像根文件系统rootfs.img、system.img系统主体盒子能不能起来看它私有分区trust、secureOS、baseparam安全启动、参数存储用户数据userdata.imgAndroid/OpenHarmony的数据分区特别提醒一句分区表XML是整个烧写过程的地图。HiTool烧写时是按XML里的配置去定位每个镜像写到哪里、写多大不是你自己在界面里随便拖一个文件就行的。很多维修包里附带的“readme.txt”会写清楚“用Hitool烧写xml选xxx.xml”这个千万不能拿错。不同芯片平台的XML一般不能互用比如拿Hi3516的XML去刷Hi3798的板子工具能识别出partition数量都对不上。2.3 串口烧写、网口烧写和USB烧写怎么选HiTool常见的连接方式有串口、网口、USB这三种实际用的时候怎么选我一般看镜像大小和板子状态。串口烧写是最基础的方式适用于板子还能进烧写模式、但系统已经起不来的情况。HiTool通过串口先往DDR里装载一份最小引导然后引导加载剩下的镜像。串口速度一般不高常见的是115200bps有些平台支持到921600整个烧写过程会比较慢适合烧写几十MB以内的小固件或者只烧写fastboot、kernel这种单个分区。网口烧写是量产和救砖最常用的方式。操作流程是先用串口把板子搞定进入烧写状态然后HiTool通过TFTP协议把镜像从PC传到板子写入eMMC。这种方式速度快得多烧一个几百MB的完整系统也就是一分钟上下。要求是PC和板子之间用网线直连并且IP要在同一网段。很多老工程师的经验是串口负责“点火”网口负责“灌油”两个一起用最稳。USB烧写在部分海思芯片上支持但在HiTool的常见应用里USB多用于小容量SPI Flash或者特定开发板不如串口网口组合普及。我自己的习惯是默认用“串口配置网口传输”的方案除非板子网口硬件坏了才退回纯串口。3. 实操烧写从安装驱动到写完重启完整走一遍eMMC烧写3.1 第一步把USB转串口设备和驱动搞定你手上如果是一块裸板或者已经变砖的盒子第一步是把板子上的调试串口接到PC。绝大多数海思板子都预留了4针串口排针丝印一般是GND、TX、RX、VCC有的还有R36这种特殊接口定义但基本都离不开这三根线。用USB转串口线连接时我一般只接GND、TX、RX三根VCC不接避免供电冲突。接好后在Windows设备管理器里看一下端口号# 查看当前系统里的COM口列表 Get-WmiObject -Class Win32_SerialPort | Select-Object DeviceID, Name, Description # 或者按硬件方式看确认USB转串口芯片有没有被识别 pnputil /enum-devices /class Ports常见USB转串口芯片有CH340、PL2303、FT232。如果你看到设备管理器里出现“COM3”或者“USB Serial Port (COM4)”说明驱动已经装上。如果只看到一个带问号的未知设备那就去装对应芯片厂商的驱动。PL2303要注意老版本芯片用新驱动反而会报“芯片不支持”的问题我手里常备一个PL2303的旧版驱动和一个CH340驱动哪个能用用哪个。设备管理器里确认出COM口号之后在HiTool的串口配置里填这个号就行。提示很多烧写失败案例都是“串口根本没通”就开始烧结果工具一直报“connect board failed”。先把串口收发测通再进烧写流程能省一晚上。3.2 第二步在HiTool里配置串口参数和烧写方式打开HiTool之后常见的主界面会有“烧写”“升级”“调试”等页签。选“烧写”页签芯片类型选对应平台比如Hi3798MV310传输方式选“网口”然后配置板端信息串口选择刚才确定的COM口波特率一般选115200如果板子特别老有些平台用57600看刷机包文档。服务器IP就是PC的IP建议手动设成固定IP比如192.168.1.100。客户端IP也就是板子烧写时临时用的IP填同一个网段的另一个地址比如192.168.1.101。配置完成后下一步是导入分区表XML。点击“选择xml”按钮选中刷机包里的fastboot.xml。导入成功后HiTool会把XML里定义的所有烧写分区和对应镜像文件列成一个表格这个时候要逐行检查一下每个分区名后面的“烧写文件”路径是不是对的有没有指向空文件文件大小是不是0字节。3.3 第三步让板子进入烧写模式海思平台一般有两种进入烧写模式的方法一种是最常见的“上位机触发”先断开板子电源在HiTool里点“烧写”或者“开始”按钮然后给板子上电。板子从eMMC引导如果检测到串口有特定握手命令就会进入烧写模式如果引导本身已经坏了板子在乱打印或者完全没有输出这种就适合用第二种。第二种是“强制烧写”部分海思芯片支持在bootrom阶段强制进入烧写做法是把板子上的boot引脚拉低或者按住板子上的特定按键再上电。具体哪个按键看板子丝印常见的是标着“UPGRADE”“BOOT”或“REC”的轻触开关。对于完全变砖的板子这个方法几乎是唯一的救砖入口。开机之后HiTool状态栏会从“等待设备”变成“已连接”日志窗口里会出现一串握手信息。这时候不要急着点烧写先确认日志里有没有类似“fastboot ready”之类的输出。如果没有大概率是波特率不对或者板子没进烧写模式。3.4 第四步开始烧写并观察日志连接成功后HiTool会先往DDR加载fastboot然后用fastboot协议和各分区镜像进行交互开始烧写。整个过程大致可以分为三段快速传输阶段HiTool先把XML里指定的小镜像fastboot、bootargs、trust等通过网口传到DDR写入对应分区。大镜像传输阶段轮到kernel、rootfs、system、userdata体积较大的文件时进度条会明显变慢日志会显示每MByte的传输进度。收尾校验阶段写完最后一个分区后部分XML会有校验选项HiTool会回读比较。烧写完成提示出现后板子会自动重启或者等待手动断上电。第一次烧写时不要直接烧全部分区。我一般的做法是只勾选fastboot和bootargs两个分区先烧一遍确认整个链路没问题再全选烧写整个系统。这样做的原因是如果串口配置或者网口传输有问题只烧两个小分区能快速暴露问题不用每次都等一个大镜像跑到一半再失败。3.5 烧写过程中日志里的几个关键字符串HiTool日志窗口里的输出很多新手看不明白。我这里列几个经常出现的以及它们的意思Burn start开始烧写Send fastboot ... OKfastboot镜像传输成功Erase partition ... OK擦除指定分区成功Write partition ... OK写入分区成功Verify partition ... OK回读校验成功Burn complete全部烧写结束如果日志里出现的是Send fastboot ... Failed或者Write partition ... Failed就不用继续等后面的分区了直接断电排查。日志里还会出现一些以0x开头的错误码这些错误码在海思的《HiTool工具使用指南》里能查到比如常见的0x00000001是参数错误0x00000005一般是访问超时。手册在刷机包里一般不会带可以单独找海思SDK的文档目录或者直接按“错误码芯片型号”搜比自己猜快得多。4. HiTool烧写避坑驱动不识别、网口不通、烧一半超时的几条血泪经验4.1 COM口识别到了但HiTool连不上板子现象设备管理器里明明有COM3HiTool也选的COM3但点连接之后一直卡在“正在连接设备”或者报错“open serial port failed”。原因最常见的是COM口号选错。USB转串口的COM号经常在插拔之后变化插到不同USB口就会从COM3变成COM7。还有一部分是驱动版本不对PL2303用新驱动会直接拒绝老芯片设备管理器里能看到设备但打不开。另外还有一个容易忽略的坑有些USB转串口线看起来是标准线实际上TX和RX是交叉的你接的板子TX对应的是线的RX反过来就完全没有数据。解决先在设备管理器里确认端口号是不是HiTool填的那个不是就改再试其他USB口。如果还是连不上用串口助手把波特率调到115200短接TX和RX做自发自收测试能收到自己发的字符说明线没问题。最后检查接线顺序GND必须共地TX接板子的RXRX接板子的TX。4.2 烧写到了大镜像进度条卡住然后报timeout现象小分区烧得很好一到烧写kernel或者rootfs进度条走到一半就卡住日志出现timeout或者transfer file failed。原因网口传输不稳定。最常见的是PC和板子之间的网线品质不行百兆网线用了四芯线或者网口接触不良另一个常见原因是Windows防火墙拦截了HiTool和板子之间的TFTP通信还有一个问题是PC端网卡开启了电源节能模式传输大数据时网卡自动降速。解决换一根短的成品网线能直接插PC和板子的网口不要经过交换机关闭Windows防火墙的公用网络拦截把HiTool加入允许程序列表进入PC网卡属性里的高级选项关闭“绿色以太网”“节能以太网”这类电源管理选项。如果用的还是百兆网络设备把PC网卡强制成百兆全双工反而比千兆自适应稳定。4.3 烧写成功了但板子重启后黑屏没有输出现象HiTool日志显示Burn complete板子重新上电但HDMI没有画面串口也没有打印任何内核日志。原因这个属于典型的“文件不对”或者“分区烧错”。最常见的是把其他机型刷机包里的文件拿来烧了镜像本身有问题或者和硬件不匹配。比如用Hi3798MV300的fastboot刷MV310的板子或者是XML里分区大小和eMMC实际布局不一致造成错位。还有一种情况是只烧了boot和system没烧baseparameter导致内核启动参数丢失。解决先纯串口上电看有没有任何打印。如果有打印说明至少fastboot活着完全没有打印就得重新进入强制烧写模式先烧回原厂的fastboot、bootargs、baseparameter这三个基础分区再考虑换别的刷机包。烧写完不要急着上电检查XML里分区表确认没有把“fastboot”写到“kernel”的地址上——这个错误我在第一次刷Hi3798时犯过后来养成一个习惯拿到新平台的分区表先逐个分区看size和偏移量有没有重叠。4.4 同一个刷机包别人烧成功我烧失败现象完全一样的HiTool版本、一样的刷机包、一样的板子别人一把过你烧就报Load fastboot failed。原因硬件差异和操作顺序差异。别人用的是板载串口你用的是USB转串口线芯片和电平有差别部分板子对串口电平特别敏感还有少数情况是DDR类型不一样——同一个板号有两种DDR颗粒配置XML里的DDR参数是按其中一种写的另一种配置下fastboot起不来。解决先确认板子硬件版本看丝印或者问卖家/方案商要对应版本的XML再尝试降低波特率到57600烧写握手速度变慢反而更稳还可以检查板子供电用一个5V/2A以上的电源适配器给板子单独供电不要依赖USB口的供电去跑整个系统。4.5 Ubuntu 22.04下用HiTool串口权限和32位库问题现象Linux版HiTool能启动但打开串口失败报permission denied或者找不到libusb。原因当前用户没有dialout组权限或者系统缺少32位兼容库HiTool的串口通信模块跑不起来。解决先用usermod把当前用户加入dialout组然后重新登录如果提示缺库用包管理器安装libusb和对应的32位版本# 把当前用户加进dialout组很多Linux串口权限问题的根源都在这里 sudo usermod -aG dialout $USER # 安装常见串口依赖具体包名根据发行版会有差异 sudo apt update sudo apt install libusb-1.0-0 libusb-1.0-0-dev lib32z1 lib32ncurses6配置完重启一次图形会话再打开HiTool。Linux下面如果始终折腾不通就别硬刚了装个Windows虚拟机把USB设备直通过去很多时候反而省时间。做技术调试最怕的不是有问题是在同一个坑里反复浪费时间。5. 烧完之后的验证与进阶校验分区结构、调整调试权限、量产批烧5.1 烧完怎么确认系统真的起来了HiTool显示烧写成功不代表板子真的能用。烧完之后的第一件事是看串口日志从fastboot启动到内核解压再到挂载根文件系统每一步都有打印。如果串口一直在fastboot阶段循环说明后续分区没被正确加载。进入系统之后再用adb或者串口shell做一次分区确认。以Android盒子为例# 查看当前系统识别的所有块设备和分区 adb shell cat /proc/partitions # 查看分区名到实际设备的映射表 adb shell ls -l /dev/block/by-name/这两个命令能让你快速确认XML里烧写的分区名和实际系统里访问的分区名是否一致。很多第三方刷机包把分区的排列顺序都改掉了靠原厂XML烧进去之后system里的挂载脚本却按另一个by-name去找分区就会导致烧写成功但系统起不来。另外还可以检查一下每个关键分区的文件系统类型# 检查system和data分区的文件系统格式 adb shell blkid /dev/block/mmcblk0p*如果system分区的类型显示为ext4或者erofsdata分区显示为f2fs或ext4基本属于正常如果显示为unknown说明分区内容没对齐要回到烧写步骤重新检查XML。5.2 烧完要调系统开发权限怎么办有些刷机包烧完之后adb shell默认进不去root日常调试很不方便。这里要做的事不是重烧而是检查系统里有没有开放调试开关。“海思电视盒子调用开发权限”这个需求在维修和二次开发里非常常见。一般做法是先看系统版本和当前权限状态# 查看当前adb权限状态 adb shell getprop ro.debuggable adb shell getprop ro.secure adb shell id如果ro.debuggable是0表示系统没有开放adb root权限常见处理方法是换一个默认打开root的刷机包或者修改固件里的default.prop。但要注意很多新版海思固件对system分区做了完整性校验直接改system挂载会导致开机校验失败。我自己不太推荐为了拿root而烧非官方魔改包尤其是带secure boot的机型遇到校验问题会连锁翻车。如果你的板子是自己开发的那在烧写时就可以提前把fastboot参数里加上androidboot.selinuxpermissive这类内核参数或者直接让方案商在userdata分区里预置调试脚本。这些事最好在烧写之前想清楚不要等量产了再回头补权限。5.3 串口控制台的日志级别和速度调整调试阶段海思串口默认的打印很多时候够用但有些问题需要更详细的日志。我一般会在烧写之前把内核bootargs里的loglevel调高到7或者8这样内核驱动的完整加载过程都会打到串口定位驱动加载顺序问题特别有效。但这里有一个很容易被忽略的问题串口打印太多会拖慢系统启动。如果你的产品是机顶盒用户按下电源键到出现画面的时间是有要求的一个满屏打印的调试固件和一个安静启动的正式固件启动时间差别可能有一两秒。所以量产版固件里我会把loglevel调回3或者4。调试版和量产版固件分开管理不能图省事用一个固件走到底。5.4 量产阶段用HiTool做批量烧写的几条经验量产不是一台一台手动烧。HiTool本身支持批量烧写常见做法是把PC当作烧录台板子通过测试工装连接每次更换板子后自动开始烧写。需要注意的几点电源控制用可控电源烧写完自动下电再上电让板子自动进入下一轮烧写流程能省一个人工。镜像管理一个XML对应一个机型文件名里带日期和版本号不要覆盖式命名。量产最怕的是昨天烧的和今天烧的固件不一样最后出货的板子混着两个版本。烧写校验不要把“烧写完成”当作合格标准要加“烧后自检”这一步比如通过串口读取板子型号、MAC地址、SN码跟订单信息比对。HiTool在没有上层软件配合的情况下只能做到基础校验真正的出货合格判定要靠产线脚本。我曾经遇到过一次批量烧写翻车一整批板子烧写成功但到终端用户手里陆续出现WIFI MAC地址冲突最后定位下来是产线烧写时没擦除baseparameter分区导致所有板子都用了同一个调试时期的参数。从那之后我做的所有烧写配置都会在量产前做一次“三连检查”烧一台样机、备份它的分区表、然后对照XML逐个确认分区有没有被固化参数污染。6. 给新手的最后一组经验先备份、再动手、多准备一根线和一颗平常心HiTool这个工具摸熟了你就会发现它其实不复杂真正考验人的是对硬件的敬畏。我自己的习惯是任何一台新板子到手里先用dd把原始固件完整备份一遍再开始折腾。Linux下备份eMMC分区可以用这条命令# 把整块eMMC备份到外部存储注意目标路径一定要写对 adb shell dd if/dev/block/mmcblk0 of/sdcard/backup_mmc.img bs1M变砖了可以随时用HiTool把备份烧回去。没有备份之前不要轻易动fastboot和trust这两个分区它们相当于板子的灵魂烧坏了轻则重新进烧写模式再救重则只能动用编程器拆芯片读写的笨办法。另外常备几样东西能显著减少调试时的心烦一根质量好的USB转串口线、一根1米以内的成品网线、一个支持5V/2A的独立电源。很多时候烧写失败真不是软件问题就是线材和供电在作怪。遇到玄学问题先换线再换USB口最后换电脑大部分问题就消失了。HiTool这个方向值不值得投入精力我的回答是值得。海思平台在机顶盒、摄像头、智能硬件里占据了很大的份额会熟练使用HiTool哪怕只是会烧写和救砖在很多嵌入式岗位里都是实打实的加分项。从工具本身来说它不难难的是你愿不愿意花时间把分区表、烧写流程、镜像结构理解透。我第一次用HiTool救砖时整台盒子黑屏了一周后来发现不过是把fastboot.bin选错了版本。那之后的每一次烧写我都会先核对一遍芯片型号、DDR配置、XML路径三个要素到目前为止再没失过手。希望这些经验能帮你在海思平台上少走一些弯路也希望你手里的每一块板子都能一次点亮。本文还有配套的精品资源点击获取
