尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

Windows刷机工具与串口第一次进桌面—【万物智能之开源鸿蒙 OpenHarmony 系统实战开发系列教程】

Windows刷机工具与串口第一次进桌面—【万物智能之开源鸿蒙 OpenHarmony 系统实战开发系列教程】 hdc 能列出设备只说明电脑侧通了。今天把系统刷进去——串口 1500000认清手里那张镜像直到看见桌面。DevEco 和 hdc 装好以后电脑侧能说话了。接下来是板子侧开口并且把系统跑起来。卡住通常不是工具难是三件事叠在一起USB 口插错、波特率还是 115200、手里那张.img不是工具认的格式。任意一件的表现都是「没反应」。顺序可以很简单先让 Windows 认出板子的两种 USB 身份再刷 SD 或 eMMC串口全程开着。桌面出来之后用 hdc 确认当前是从哪块介质启动的。官方对 RK3568 烧录的入口在这儿RK3568 开发板介绍。官方还写了一条 DevEco Device Tool 远程烧录的路。那条路能走下面不靠它。原因很具体Device Tool 把「编译机 烧录 串口」揉成一套 IDE 操作一旦失败日志分散你很难判断是 USB 驱动、是镜像格式、还是板子没进 Maskrom。瑞芯微自己的SDDiskTool和RKDevTool是专门干烧录的失败时窗口里就那几行字好查。1. 先把三条线分清楚别指望一根线干所有事板子跟电脑之间不是「插上 USB 就全通」。物理上至少三条路职责完全不同。flowchart LR PC[Windows 电脑] PC --|数据线, OTG 口| OTG[烧录 / hdc] PC --|USB 转串口, 1500000| UART[UART2 ttyS2] PC --|读卡器| SD[Micro SD 卡] OTG -- EMMC[核心板 eMMC]USB 转串口线插底板调试口丝印一般写 UART、DEBUG、UART2。这条线只运文字U-Boot、内核 printk、最后那个#提示符。它不刷机也不跑 hdc。板子完全砖了、eMMC 空了、系统 panic 了只要 3.3 V 和 UART2 还在这条线就能告诉你卡在哪一步。所以我要求你刷机时串口窗口必须开着。闭着眼刷失败了你连「是 loader 没起来还是内核 panic」都分不清。USB 数据线插底板的OTG / DEVICE口不是旁边那排 Host 口。Host 口是给 U 盘、USB 相机、Wi-Fi 网卡用的板子在那头当主机。OTG 口反过来板子当从机电脑才能看见它。这根线干两件事没系统时走瑞芯微 ROCKUSB 协议刷 eMMC有系统时走 hdc。同一根线、同一个口板子处于不同阶段电脑看到的设备类不一样。这就是为什么你要装两套东西DriverAssistant 认 ROCKUSBhdc 的 USB 调试驱动认 hdcd。读卡器插电脑给 Micro SD 写整包。跟板子当时开不开机无关。SD 卡是「可拿走的磁盘」Windows 把它当普通 U 盘写。写完拔下来插到板子 SD 槽。为什么不能偷懒只留 OTG因为你第一次上手eMMC 里可能什么都没有hdcd 起不来hdc 必然没设备。这时候你若没有串口就只剩「屏亮不亮」这一个比特的信息排障会变成猜谜。反过来只有串口没有 OTG你能看日志但 eMMC 刷不进去hdc 也传不了文件。三条线都接上才是成年人的调试台。线材有坑。USB 线必须能传数据。手机盒子里那根「只能充电」的线插上之后电脑毫无反应设备管理器不刷新你却以为是驱动没装。换线的成本是十秒怀疑驱动的成本是一小时。OTG 口和 Host 口长得一样都是 USB-A 或 Type-C认丝印。认不准就看插上之后板子有没有给 U 盘供电的意思——有供电、电脑仍看不见设备多半插到 Host 去了。2. DriverAssistant让 Windows 认识「没系统的板子」系统起来之后板上跑着hdcd电脑侧hdc.exe跟它握手DevEco 那篇写过。系统没起来、或者你主动让它进 Maskrom 时板上没有 Linux没有 hdcdUSB 控制器被 BootROM / MiniLoader 枚举成瑞芯微的ROCKUSB。Windows 没装对应驱动设备管理器里就是黄色感叹号RKDevTool 左侧空白。你点「升级」没有任何设备可升级。所以先装DriverAssistant。它是瑞芯微的 USB 驱动安装器网上常见 v5.1x。管理员运行一路下一步。装完把板子 USB 拔掉再插一次让 Windows 重新枚举。不必重启电脑但已经打开的 RKDevTool 要关掉重开它不会热更新设备列表。装完怎么验收让板子进一次 Maskrom。具体键位看底板丝印常见做法是OTG 线先插电脑按住Maskrom键不放点一下复位或断电再上电松手。RKDevTool 左侧应出现Found One MASKROM Device设备管理器对应位置出现Rockusb Device或类似名字。出现了驱动就没问题后面刷 eMMC 才有资格谈。进不去 Maskrom按这个顺序排不要一上来重装驱动换数据线、换电脑上的 USB 口。笔记本扩展坞、前置口、带充电协议的口经常枚举不稳。直插机身口。确认按的是 Maskrom不是 Recovery。有的底板两个键挨着按错会进 Loader 或者什么都不进。核心板没供电。Maskrom 是芯片 BootROM 行为3.3 V / 5 V 没到 SoC 时 USB 不会枚举。看电源灯。驱动装了但没对这个 VID/PID 生效。设备管理器里对该未知设备「更新驱动」指向 DriverAssistant 解出来的目录。进到的是Loader Device而不是 MASKROM也不是失败。说明 eMMC 里已经有一份能跑的 MiniLoader上电后它接管了 USB。Loader 状态下 RKDevTool 同样可以「升级固件」。全新核心板、或者上次把 loader 区刷坏了BootROM 才会落到 Maskrom。两种都能刷差别只是砖得深不深。砖深的必须 Maskrom因为这时候 eMMC 里没有能说话的 MiniLoader。有人会问为什么不直接装 hdc 驱动就完了因为 hdc 驱动认的是 Linux 起来之后 hdcd 报的设备类。Maskrom 阶段根本没有 Linux。你把 hdc 驱动装得再完美设备管理器在 Maskrom 里依然不认识 ROCKUSB。两套身份两套驱动这是瑞芯微平台的老规矩开源鸿蒙没改它。3. 你手里那张 img到底是什么东西刷之前先认包。认错包工具要么打不开要么打开了刷进去系统起不来。这两种都比「包是对的、操作错了」难查因为你直觉会去怀疑工具和硬件。打包脚本最后会吐两个文件经常躺在同一个目录里文件头 4 字节谁产生的拿去干什么sd_image.img 或你改名为 emmc-xxx.img 的那份RKFWrkImageMaker**真正刷的整包**update.imgRKAFafptool中间产物。本机 RKDevTool 经常加载失败Windows 上看文件头不必装 hex 编辑器certutil -f -encodehex D:\ohos\sd_image.img D:\ohos\head.txt 4 notepad D:\ohos\head.txt开头应是52 4B 46 57ASCII 就是RKFW。若是52 4B 41 46那是RKAF不要拿去刷。有人看见update.img几个字比较眼熟想当然丢进 RKDevTool结果点「打开固件」直接失败或者打开了分区表是空的。不是工具坏了是格式就不对。更绕的一件事SD 包和 eMMC 包的文件头都是 RKFW。RKFW 只告诉工具「我是瑞芯微整包」不告诉它「我该进 SD 还是 eMMC」。两份包的差别在文件系统镜像里面的fstabSD 版把分区写成fe2b0000.dwmmceMMC 版写成fe310000.sdhci。控制器路径写错内核能起来init 挂system超时十六秒 panic或者第一阶段侥幸挂上了第二阶段挂/data失败五十八秒再 panic。启动链那篇会把这两次死亡时间对上号。所以区分介质的办法是文件名文件名刷到哪用哪个工具含 emmc例如 emmc-hdmi.img核心板 eMMCRKDevTool「升级固件」sd_image*.img或不含 emmc 的 RKFWMicro SD 卡SDDiskTool勾选 SD 启动有人做了个小工具扫一个目录按文件名含不含emmc判断该唤起哪个刷机软件。没有这个小工具也没关系你自己按上表选就行。小工具能防的是手滑——把emmc-xxx.img丢进 SDDiskTool或者把sd_image.img当 eMMC 包升级。fstab 和介质一旦错配串口看起来像「系统坏了」其实是挂载路径指错盘。为什么不在文件头里编码介质因为瑞芯微的 RKFW 格式比开源鸿蒙老得多它只关心「整包能不能按 parameter.txt 写进 NAND/eMMC/SD」不关心开源鸿蒙的 fstab 用哪条总线。介质信息是我们自己在包外面用文件名约定的。约定一旦破自动化选择器和人脑都会选错。4. SD 卡整包刷SDDiskToolSD 卡是第一次点亮最省事的介质。坏了扔掉一张卡不碰核心板上的 eMMC。产线、演示、来回切换「电机版 / 超声波版」这种互斥镜像也是刷卡更快。工具叫SDDiskTool常见 v1.69。它干的事情很粗暴把 RKFW 按 parameter.txt 的分区表从卡的开头把 loader、GPT、各分区镜像一口气写进去。所以它会覆盖卡上原来的所有东西包括你以为「只是数据分区」的那部分。4.1 操作步骤每一步都有为什么管理员打开。不提权Windows 不允许直接写物理磁盘工具会在选磁盘或开始写入时失败报错不一定提到权限。有的版本失败得更安静进度条走一下就结束卡里还是旧内容。勾选「SD 启动」。不勾的话工具仍可能把镜像写进卡但卡开头的启动标志、loader 参数按「这张卡只是存储」来处理。插到板上板子不一定从这张卡起可能继续从 eMMC 的旧系统起。你就看见「我明明刷了怎么还是老桌面」。勾上之后卡被写成可启动盘。这一勾是 SD 方案的命门别省。选固件必须是 RKFW。文件对话框什么后缀都给你列。自己用上面的certutil看过头的再选。选磁盘。下拉框里会出现电脑的C:盘、可能还有第二块机械盘。选错就是把你 Windows 系统抹掉。认的办法看容量是不是 SD 卡的容量64 G、32 G 那种看是不是「可移动」。认不准就拔掉读卡器看哪一项从列表消失消失的那项才是卡。这一段我希望你读两遍。刷机工具不管你它拿到什么磁盘写什么磁盘。开始创建 / 恢复磁盘。弹窗点确定。等进度走完。中途拔卡这张卡大概率变成读不出的脏盘重新刷一次通常还能救但不要依赖这一点。成功后先「弹出」再拔读卡器。Windows 对可移动磁盘的写缓存不一定立刻落盘直接拔有极小概率最后几 MB 没写完。loader 区若写残板上会表现为完全没字比「系统起一半」更像硬件坏了。4.2 刷完插到板上还缺两件事卡本身有系统了板子还得同意从 SD 起。底板上常有拨码或跳线丝印SD/eMMC。拨到 SD。有的核心板是检测「槽里有卡就优先 SD」有的不是以你手头底板说明为准。拨错的表现串口里 U-Boot 明显在从 eMMC 读分区你刚刷的卡内容完全没上场。第二件事U-Boot 找boot_linux分区时经常去 eMMC 上找而不是你以为的「当前启动介质」。新核心板 eMMC 出厂是空的同一张刚刷好的 SD 卡插上去串口打Cannot find partition boot_linux FATAL error: cannot load boot_linux image to ram屏停在 logo或者连 logo 都没有。同一张卡换到一块 eMMC 里曾经刷过系统的核心板上立刻能起来。这不是镜像坏了是 SD 启动暗依赖 eMMC 里也有一份分区表和boot_linux。新板的正确顺序是先 USB 刷一次 eMMC再谈 SD 启动。两盘的 resourcep4和 boot_linuxp5建议都写上。4.3 loader 版本会被 SDDiskTool 覆盖SDDiskTool 写卡是从磁盘 0 扇区开始的loader 区在最前面。你卡上原来那份能启动 4 GB 内存板的 MiniLoaderDDR V1.16 1056 MHz会被镜像自带的 MiniLoader 覆盖。如果镜像里那份是公版 V1.10 1560 MHz4 GB 板会卡在write training result后面没有out没有 U-Boot没有串口的 Linux。看起来像内存坏了。其实是 DDR 训练频率和这份颗粒不对付。启动链那篇写怎么用boot_merger合成 V1.16。这里先记住刷卡不等于「只更新系统分区」它连最前面的 DDR 初始化代码一起换。大内存板必须用带正确 loader 的镜像。strings MiniLoaderAll.bin | grep DDR能看到版本字符串。镜像打出来之后、刷之前抽空看一眼。刷完再在串口里对对不上就是包打错了。5. eMMC 整包刷RKDevTool MaskromeMMC 在核心板上不能拿读卡器写。只能 USB。工具是RKDevTool。5.1 为什么走「升级固件」不走「下载镜像」RKDevTool 有两个常用页。升级固件你丢给它一个 RKFW 整包它自己解析里面的 MiniLoader、parameter.txt、各分区镜像按表写。这是整包刷新的正确入口。下载镜像你自己在表格里填「这个分区对应哪个 img 文件」再勾选要写的行。适合已经有系统、只更新某一个分区的人。第一次点亮不要走这页——parameter 填错一行userdata 偏移越界或者漏写 MiniLoader都能把板子写成怪状态。有的老文档把 RKAF 的update.img配一份config.cfg走「下载镜像」。本机实践里RKAF 经常根本加载失败。eMMC 交付也交 RKFW文件名带emmc。不要和文档里 dayu 公版那套 RKAF 流程较劲。5.2 操作OTG 线接电脑进 Maskrom或 Loader。左侧出现设备。切到「升级固件」。固件路径选文件名含emmc的 RKFW。点「升级」。进度一般是先下载 MiniLoader 让板子从 Maskrom 变成 Loader再按分区写。等日志窗口新打出「下载固件成功」或「下载完成」。「新打出」三个字是经验。RKDevTool 的日志窗口不会在每次操作前自动清空。上次成功的那行「下载固件成功」还躺在上面这次 USB 中途掉了你扫一眼日志以为又成功了。板子复位之后还是旧系统。我自己吃过这个亏以为 eMMC 已经是新桌面其实旧的 RenderService 还在排查方向全错。正确习惯点升级之前把日志清掉或者看最后一行的时间是不是刚才。成功之后不要立刻拔线等板子自己复位或你按复位键。第一次从空 eMMC 起来比 SD 慢给它 4060 秒。串口在刷比盯着屏猜更准。5.3 失败怎么读日志日志 / 现象实际含义打开固件失败、分区表空你丢的是 RKAF或者文件截断了拷贝到一半等待设备超时没进 Maskrom / Loader或驱动没认到 ROCKUSB写到某个分区 USB 错误线、口、供电换线换口关掉占用 USB 的虚拟机升级完成但启动停在 DDRMiniLoader 版本和内存颗粒不匹配升级完成内核 panic 在 wait dwmmc你刷了 SD 版 fstab 到 eMMC最后一项特别阴险。操作「成功」了板子也出字了就是起不来桌面。串口里wait for file .../fe2b0000.dwmmc/by-name/system超时。eMMC 的控制器叫fe310000.sdhcifstab 却去 SD 控制器下面找 by-name。这就是文件名没带emmc、或者带了但内容其实是 SD 包。打包那篇会写刷之前怎么grep dwmmc验 fstab。5.4 刷 eMMC 会不会把 SD 槽里的卡弄坏不会。RKDevTool 升级固件写的是当前 USB 枚举到的存储——Maskrom 下就是芯片接的 eMMC。SD 卡插着也没事它不在这条 USB 烧录路径上。反过来SDDiskTool 写的是读卡器里那张卡不会隔空写 eMMC。两边是隔离的。隔离的代价是你以为「我刷了 SDeMMC 里的旧桌面会消失」不会。两套系统可以同时存在U-Boot 选谁谁就上场。这就是为什么改 DTS 之后只刷了 SD 的 p4板上还在用 eMMC 里那份旧 dtb——U-Boot 去 eMMC 取 resource。刷分区那篇会把「两盘的 p4/p5 都写」当成默认动作。6. 串口1500000 8N1这是这条产品线的法律开源鸿蒙在这块 RK3568 上调试控制台就是 UART2。设备节点ttyS2。内核命令行写死consolettyS2,15000001500000 不是笔误也不是「越高越好」。这是芯片 UART 时钟分频在这块板上的常用值U-Boot 和内核约定好了。你在串口工具里填 115200电平和连线全对窗口里也只是一片乱码或空白。很多人在这里耗一个晚上换线、换板、怀疑晶振。先把波特率改对。Windows 上 PuTTY、MobaXterm、安全 CRT 都可以。参数就这五个项值填错会怎样端口设备管理器里 USB 转串口的 COMx打开失败或打开了没数据波特率**1500000**乱码像板子没起数据位8偶发错字校验None大量错字停止位1错字流控**None**有的工具默认 RTS/CTS表现为能收几个字然后卡住流控这项容易被忽略。板子 UART2 没接 RTS/CTS。工具若默认硬件流控TX 会等一个永远不来的 CTS你敲的回车发不出去看起来像「串口只能看不能敲」。关掉流控再试。接线USB 转 TTL 的 GND 对底板 GNDTX 对底板 RXRX 对底板 TX。3.3 V 电平。5 V 的 USB-TTL 有可能把 SoC 脚打坏别用。TX/RX 接反的表现是完全没字和波特率错、没供电很难一眼分开。所以先确认转接芯片在设备管理器里出现再确认 GND 通再对调 TX/RX 试一次。对调是十秒怀疑芯片损坏是十天。上电后正常的字大概是这个顺序DDR ... V1.16 ... U-Boot ... Hit any key to stop autoboot ... Starting kernel ... [ 0.000000] Booting Linux on physical CPU 0x0000000000 ... ...内核起来之后init 会拉console服务。这个服务在不少公版配置里默认disabled。板级若没在init.rk30board.cfg里写start console你能看日志敲回车没人理。板级配置里已经打开。敲回车应出现#或/ #。# uname -a Linux localhost 5.10.xxx #1 SMP PREEMPT ... aarch64 # param get ohos.boot.hardware rk30boardohos.boot.hardware必须是rk30board。不是rk3568不是板子型号。init 用这个字符串拼文件名init.rk30board.cfg、fstab.rk30board。你改了init.rk3568.cfg当正式文件开机理都不理。源码树和启动链那两篇会把这个后缀钉死。现在先验证它是rk30board证明刷进去的是这份板级不是某份公版镜像。串口噪声多、刷屏影响你看字时# echo 1 /proc/sys/kernel/printk这把控制台日志级别压低。排完障改回去或者重启就恢复默认。7. 第一次进桌面正常长什么样不正常分哪几类2 GB 或 4 GB 内存、屏那路已经在设备树里 okay、镜像是对的时间线大致如下0 s 上电。串口出 DDR 训练、U-Boot 2 s 屏上出现 logo。logo 来自 resource 分区不是 boot_linux 8 s 内核起来串口开始刷 dmesg 15 s 开机动画bootanimation 25 s 动画退桌面图标出来 30 s OTG 插着的话hdc list targets 能列出设备号logo 不是内核画的。U-Boot 从resource 分区里取出logo.bmp和这份分区里的rk-kernel.dtb。所以你换了开机画面却只刷boot_linuxlogo 不变你改了 DTS 却只刷boot_linux内核用的还是 resource 里那份旧 dtb。刷分区和设备树那两篇会反复说。先建立直觉屏上第一张图 resource不是内核镜像。桌面出来之后图标应是横屏排布。这块板的物理屏是 1024×600 一类的横条。若图标竖着挤在一边那是窗口取向被写成了 VERTICAL显示那几篇再处理不挡现在验收「系统活了」。7.1 亮一下又黑桌面其实在这是真发生过的案子不是理论。开机动画播完launcher、foundation、render_service 都起来了串口里能搜到wms.fullscreen.ready。再过大约十几秒屏突然黑。你按复位又能看到动画然后又黑。电源服务里有一个SuspendController配置文件power_suspend.json里有一个timeout源。意思是这么多秒没人点屏就当用户走开了关屏。首启要装一堆预装 HAPCPU 忙你又在盯串口没人摸触摸。计时器不会被复位到点必关。重启之后如果你碰巧点了一下屏计时器被清掉又能亮很久——所以这事看起来「偶发」其实首启无人操作时是必然。临时办法摸一下触摸或按电源键。永久办法删掉/system那份 json 里的 timeout 块。丢到/vendor/etc/power_config/无效加载函数根本不搜 vendor。启动链那篇给具体文件路径和删哪一段。现在先别被黑屏骗去重刷。7.2 卡 logo 不动「卡 logo」是一个筐里面至少四只不同的野兽串口才能分开它们。串口停在 DDR 训练没有 U-Boot。loader 版本和内存容量不匹配。见启动链那篇。重刷带 V1.16 loader 的包。串口Cannot find partition boot_linux。U-Boot 去 eMMC 找分区eMMC 空。先 USB 刷 eMMC。串口内核起来了然后 panicwait for file ... dwmmc或sdhci。fstab 和启动介质错配。确认文件名、确认你用的工具。串口完全正常能敲命令ps 里有 init没有render_service或有但马上退了。这是图形栈。可能是 vendor 里缺 GPU 库config.json 没把芯片产品配进去可能是 SystemUI 起不来导致合成器 layer map 空。先确认串口和 hdc图形问题交给显示那几篇。不要在这一步开始改 DTS。只亮背光没有 logo串口正常。显示口在设备树里 okay 了但 U-Boot / 内核选中的 connector 不是你接的那路或者时序不对。背光 GPIO 被点亮是独立的不代表像素在出。显示总论那篇再拆。7.3 hdc 该出现了用它确认启动介质桌面起来OTG 还插着hdc kill hdc start hdc list targets应打出一串十六进制设备号。没有的话换 OTG 口、确认不是 Host、板上ps | grep hdcd。系统没进到用户态时 hdcd 不存在这是正常的先靠串口。通了立刻跑这三条抄下来hdc shell param get ohos.boot.hardware hdc shell cat /proc/partitions hdc shell mount | grep on / 硬件名必须是rk30board。/proc/partitions告诉你现在内核看见哪些盘只有mmcblk0看得见的是 eMMC。没插 SD或 SD 没枚举。还有mmcblk1SD 卡在位。在位不等于从 SD 启动。从哪启动看 mount 的//dev/root on / ...再配合hdc shell df / /vendor /systemvendor 若在mmcblk1p8你在从 SD 跑在mmcblk0p8从 eMMC 跑。不要用/dev/block/by-name/vendor判断——by-name 永远指向 eMMC。这是后面会反复出现的陷阱。从 SD 启动时ls -l /dev/block/by-name看起来一切正常你dd到 by-name 的 system写的是 eMMC 那份SD 上正在跑的系统纹丝不动。下次重启还是老的。刷分区那篇会把 dd 写成两套完整命令不要在命令里留X这种占位符。现在只做观察不 dd。观察清楚「我现在从哪块盘启动」比什么都重要。8. 刷之前的核对清单建议过一遍再动手闭着眼刷不是勇气是给自己制造不可解释的现场。[ ] DriverAssistant 已装进一次 MaskromRKDevTool 左侧有设备 [ ] 串口 1500000 8N1流控关GND/TX/RX 没接反上电有字或至少有电平 [ ] 镜像头是 RKFW52 4B 46 57不是 RKAF [ ] SD 包文件名不含 emmceMMC 包文件名含 emmc [ ] SDDiskTool 勾了 SD 启动磁盘容量对得上卡不是 C 盘 [ ] RKDevTool 走「升级固件」点升级前清空日志成功判据是本次的「下载固件成功」 [ ] 大内存板MiniLoader 能 strings 出 DDR V1.16 [ ] 新核心板计划里包含「至少 USB 刷一次 eMMC」不要只刷 SD [ ] OTG 插的是 OTG 口读卡器只在刷 SD 时插电脑有一条没打勾就开刷出了「没反应」你不知道该回退哪一步。清单的意义是把状态空间缩小。9. 串口窗口怎么开才像个长期工位工具随便选习惯别随便。我见过有人每次上电重新填一遍波特率填成 115200再问我「怎么又乱码了」。把会话存成配置文件下次只点开。PuTTY。Session 里选 SerialSerial line 填 COMxSpeed 填 1500000。Connection → Serial 里 Data bits 8、Stop bits 1、Parity None、Flow control None。Save 成一个名字比如rk3568-uart2。Logging 打开All session output路径指到D:\ohos\log\uart.txt。刷机、首启、卡 logo事后你都有文本可以搜panic、wait for file、render_service。人的眼睛在刷屏里抓不住十六秒和五十八秒的差别文本搜得出。MobaXterm。新建 Serial session同样 1500000、无流控。它的好处是复制粘贴比 PuTTY 顺。坏处是有的版本默认开硬件流控记得关。不要用 Windows 自带的「蓝牙」那一类串口助手去碰 1500000很多只列出到 115200。工具下拉框没有 1500000 就自己填填不了就换工具。日志文件会涨得很快dmesg 在 1500000 下几分钟就是好几 MB。按天切分或者只在「这次要复现问题」时打开 logging。别把三个月的串口记录丢进聊天里让人帮你看——先自己findstr panic uart.txt。串口还能干一件 hdc 干不了的事在 U-Boot 倒数时敲任意键停在 U-Boot 提示符。 printenv mmc list mmc dev 0 mmc part mmc dev 1 mmc partmmc list能看到当前 U-Boot 认到几块 MMC。mmc part看分区名里有没有boot_linux、resource。新核心板在 eMMC通常是 mmc 0上 part 是空的或没有这些名字就和串口里那句Cannot find partition boot_linux对上了。这比你在开源鸿蒙里猜「是不是 DTS 错了」要快一个数量级。看完boot继续启动或reset重启。U-Boot 里乱mmc erase能把盘清空。这里只 printenv 和看分区不写。真要在 U-Boot 里写盘等你后面真的砖到 USB 也进不了 Maskrom——那种情况很少BootROM 的 Maskrom 不依赖 eMMC 内容。10. 还没编译源码镜像从哪来你现在可能手里已经有一份别人打好的sd_image.img。可以。目标是「工位通」不是「从源码复现」。用现成包刷进桌面后面编出来的包才有对比基线编坏了你知道回到这份能进桌面的包。现成包也要过第 3 节的认包手续。别人拷给你的update.img、网盘里随便下的 dayu 公版、文件名写着 sd 其实 fstab 是 sdhci 的都会让你在「工具会用了」的假象下浪费一天。md5 对一下。Linux 编译机那侧会把产物连 md5 一起丢到共享目录你在 Windows 上certutil -hashfile D:\ohos\sd_image.img MD5和共享目录里那份.md5或笔记对上再刷。拷贝到一半的文件头四个字节可能仍是 RKFW刷进去分区写残表现比「完全没刷」更像软件 bug。md5 是唯一便宜的完整校验。没有现成包、也不想等自己编译那就先把串口和 Maskrom 这两件事做完。板子哪怕没有开源鸿蒙U-Boot 或 BootROM 仍会在串口和 USB 上说话。工位先活包随后到。11. 桌面出来之后先别急着点应用能进桌面会有一种「大功告成」的错觉。先做三件无聊但值钱的事。确认横屏、触摸能点到图标。点得准不准是后话GT911 被写成 720×1280 时会点不准。现在只要求手指点下去有个图标有反应。完全没反应可能是触摸节点没起来也可能是你点的是一块没被合成器覆盖的区域。串口cat /proc/bus/input/devices看有没有触摸设备。没有就记一笔不要在这一步改 HCS。确认 hdc 能进 shell并且 shell 是板子的。hdc shell cat /proc/version hdc shell getprop | grep hardware开源鸿蒙上getprop不一定有用param get ohos.boot.hardware更靠谱。cat /proc/version里的编译时间和用户名后面你自己编内核时要拿来对照刷了boot_linux之后这里必须变。不变就是 dd 写错盘或写到了假文件。把分区表存档。hdc shell cat /proc/partitions hdc shell ls -l /dev/block/by-name hdc shell df -h三份输出粘到笔记。by-name 的目标盘符你现在就该看见全是mmcblk0p*。df 才能告诉你当前/vendor在哪。以后有人包括你自己随手写一条dd of/dev/block/by-name/vendor你有笔记可以立刻指出它会写到哪。不要在这一步装自己的 hap、不要改设置里的显示休眠时间当「修了黑屏」。设置里改的是 settings 数据库首启那次 timeout 源仍然在。系统层的修法在启动链那篇。现在只要求工位能刷、能看、能进、能 hdc。12. Windows USB 自己会捣乱的几种方式不是板子的问题是 Windows 的 USB 电源管理。笔记本上更常见。设备管理器 → 通用串行总线控制器 → 每一个 USB Root Hub → 电源管理把「允许计算机关闭此设备以节约电源」勾掉。不勾掉的表现RKDevTool 升级到一半设备消失hdc 用着用着list targets变空拔插恢复。看起来像线松了。另一个虚拟机占用 USB 控制器。你如果在同一台 Windows 里开了 VMware / VirtualBox并且把 OTG 那个控制器勾给了虚拟机宿主机的 RKDevTool 就看不见 Maskrom。刷机时把虚拟机里的 USB 设备断开或直接暂停虚拟机。调试那篇会把 Linux 编译机和 Windows 刷机机分开就是为了少踩这种抢设备。还有一个hdc 和 RKDevTool 同时占着 OTG。系统已经起来时hdcd 占用着 USB 功能。你这时候想进 Maskrom 刷 eMMC要先让板子离开 Linux——按 Maskrom 键复位。不复位电脑看到的仍是 hdc 设备RKDevTool 左侧空白。不是驱动丢了。选择性暂停、USB 3.0 口对 ROCKUSB 枚举不稳也可以试 USB 2.0 口。我遇到过同一根线蓝口失败、黑口成功。没有理论可讲换口比改驱动快。踩过的坑假成功的「下载固件成功」。日志窗口有历史。以本次新行为准。RKAF 当整包。update.img能用十六进制打开工具不一定能加载。只交 RKFW。eMMC 也交 RKFW靠文件名带emmc。SD 包刷进 eMMC或反过来。操作成功启动 panic。死亡时间 16 秒对 fstab.required58 秒对 fstab.rk30board。串口搜wait for file和ExecReboot。波特率 115200。乱码。先改 1500000。这是被问次数最多的问题没有之一。流控开着。能看不能敲。关 RTS/CTS。OTG 插到 Host。Maskrom 没设备hdc 没设备板子可能在给 U 盘供电。新板只刷 SD、eMMC 空白。Cannot find partition boot_linux。先 USB 刷 eMMC。SDDiskTool 选成电脑硬盘。这不是「坑」这是事故。选磁盘时拔插读卡器对照。覆盖 loader 把 V1.16 写成 V1.10。4 GB 板卡 DDR 训练。刷卡前看 MiniLoader 字符串。以为 by-name 是当前启动盘。现在如果只观察还没事一旦开始 dd假成功会让你改 DTS 却看不见效果。首启黑屏当砖。摸一下屏。再考虑重刷。dd 到/dev/mmcblk1p5而不是/dev/block/mmcblk1p5。现在还不用 dd。你要是自己搜到命令去试节点不存在时 dd 会在/dev下建普通文件打印成功md5 还能对上镜像分区没动。刷分区那篇专门拆这个假成功。工位通了下一步才是在 Linux 上把这棵树编出来。Windows 编不了这份标准系统。刷之前自己过一遍DriverAssistant 能进 Maskrom串口 1500000 无流控头是 RKFW文件名和工具匹配SDDiskTool 勾了 SD 启动且磁盘不是 C 盘RKDevTool 清空日志后再认成功大内存板 MiniLoader 是 V1.16新核心板至少 USB 刷过一次 eMMC。桌面起来立刻把这几条抄下来后面写分区会用hdc shell param get ohos.boot.hardware hdc shell cat /proc/partitions hdc shell mount | grep on / hdc shell df | grep vendor硬件名应是rk30board。vendor 落在mmcblk0p8还是mmcblk1p8决定你以后 dd 走哪套命令。系列第 5 篇 · 芯片瑞芯微 RK3568 · OpenHarmony 4.1API 11 · Linux 5.10
返回列表