HLK-7621-uboot(2026.07)笔记-02
arch/mips/dts/mt7621-u-boot.dtsi语法123456节点名 { 属性; 子节点 { 属性; };};
spl-img节点123456789spl-img│├── 输出:u-boot-spl-ddr.img│└── mkimage │ ├── 参数:描述架构、镜像类型、加载地址、入口地址…… │ └── 输入:u-boot-spl-ddr.bin
将原始 SPL 二进制交给 mkimage 进行镜像格式封装。
filename123spl-img { filename = "u-boot-spl-ddr.img";};
表示这个 Binman 节点最终生成的文件名为:
1u-boot-spl-ddr.img
mkimage 节点123mkimage { ...};
表示 Binman 不直接复制数据,而是调用 U-Boot 的:
1mkimage
...
HLK-7621-uboot(2026.07)笔记-02
arch/mips/mach-mtmips/mt7621/tpl/tpl.clegacy_img_hdr 总结
legacy_img_hdr 是什么
legacy_img_hdr 是 U-Boot legacy image 的镜像头,放在 SPL 数据前面,用来描述后面的 SPL 镜像。
它在这里的位置
123[TPL][legacy_img_hdr][SPL payload]
TPL 通过:
1__image_copy_end
找到这个 header。
主要字段
123456ih_magic -> 镜像标识ih_size -> SPL 大小ih_load -> SPL 加载地址ih_ep -> SPL 入口地址ih_hcrc -> header CRCih_dcrc -> SPL 数据 CRC
谁写进去的
在编译/打包阶段,由电脑端的 mkimage 写入。
主要通过:
1234image_set_magic()image_set_size()image ...
HLK-7621-uboot(2026.07)笔记-01
arch/mips/mach-mtmips/mt7621/tpl/start.Sbal
Branch And Link
跳到 mips_cm_map
把返回地址保存到 ra
jrJump Register
0xbe10dff0 是什么地址?MT7621 是 MIPS32。MIPS32 经典地址空间里:
12345670x80000000 ~ 0x9fffffff KSEG0 cached 不经过 TLB0xa0000000 ~ 0xbfffffff KSEG1 uncached 不经过 TLB
KSEG0 KSEG1
是一段 CPU 的虚拟地址空间
.set noreorder
它不是 CPU 指令,而是告诉 汇编器:不要擅自帮我重新排列指令。
.macro init_wr sel
定义一个汇编宏 #d ...
HLK-7621-ALL-KIT-V2.4 OpenWrt 编译、TFTP 救援与固件恢复记录
资源地址
官方资料(HLK-7621-ALL-KIT-V2.4 开发板):https://www.hlktech.com/Goods-51.html#datum
百度网盘分享(HLK):https://pan.baidu.com/s/1jLOFNGjvsZZwDDnIy7wbnA?pwd=83pg 提取码:83pg
本文记录基于旧版 OpenWrt Barrier Breaker(Linux 3.10.14)为 MT7621 编译固件,并在根文件系统损坏后通过 U-Boot、TFTP 和 initramfs 恢复系统的完整过程。
一、编译环境与常用命令OpenWrt 构建系统通常禁止使用 root 用户编译。如果出现以下错误:
12Build dependency: Please do not compile as root.Prerequisite check failed.
应切换到普通用户,并确保源码属于该用户:
12sudo chown -R "$USER:$USER" ~/mtkopenwrtcd ~/mtkopenwrt
首次完整编译可执行:
...
Hexo 双主题构建记录:Butterfly 主站与 cactus 子站共存
记录一次 Hexo 同时使用 Butterfly 和 cactus 两个主题的实现过程,包括配置拆分、独立输出、最终组装和踩坑点。
STM32 外部存储器:RAM 与 Flash 对比详解
在 STM32H743 这类高性能 MCU 上,经常会看到 FMC 外部存储控制器支持多种外部存储器,例如:
SRAM
PSRAM
SDRAM
LPSDR SDRAM
NOR Flash
NAND Flash
这些名字看起来都像“存储器”,但它们的用途差别很大。最核心的区别是:
12RAM:运行时临时存储,速度快,掉电丢失。Flash:长期保存数据,掉电不丢,但写入和擦除较慢。
本文主要从 STM32 外挂存储器的角度,对 RAM 和 Flash 进行系统对比。
一、RAM 与 Flash 的本质区别
对比项
RAM
Flash
中文理解
运行内存
非易失性存储器
掉电是否保存
否,掉电丢失
是,掉电不丢
主要用途
程序运行时的数据缓存
长期保存程序、图片、字库、文件、参数
读速度
通常很快
NOR 读取较快,NAND 读取中等
写速度
快
慢
是否需要擦除
不需要
通常写入前需要擦除
是否有擦写寿命
一般不重点考虑
有擦写寿命限制
是否适合放变量
适合
不适合
是否适合放 framebuffer
适合
不适合
是否适合存图片资源 ...
STM32H743 移植 CherryUSB 与 SEGGER RTT 的问题排查记录
开源项目地址:yjrqz777/h7rec
这篇记录整理了在 STM32H743 工程中移植 CherryUSB 和 SEGGER RTT 时遇到的问题。工程里同时使用了 FreeRTOS、ST7735 LCD、CherryUSB CDC 设备和 Keil MDK。
最开始的现象比较迷惑:USB 移植前 LCD 正常,加入 CherryUSB 后屏幕不亮;调试模式下要点几次 Run 才可能点亮;屏幕亮一会后还会复位。后面继续排查,又遇到了 RTT 输出延迟、Keil 链接 _sys_* 重定义等问题。
下面按问题和解决方式整理。
1. 移植 CherryUSB 后 LCD 不亮一开始看起来像 LCD 初始化坏了,但后面确认 LCD 本身没问题。问题是在 USB 相关代码启动后才出现的。
关键原因有三个:
CherryUSB DWC2 FIFO 参数对 USB_OTG_FS 配得过大。
CherryUSB 默认日志走 printf,Keil 没有 retarget 时可能触发 semihosting。
FreeRTOS 的 defaultTask 栈偏小,而任务里用了 s ...
小米路由器 AX3600 解锁 SSH 开启发烧之旅
记录小米路由器 AX3600 解锁 SSH 端口、修改密码、备份分区与固化权限的完整流程。
SSH 免密登录 VSCode(附 Debug 排查)
关键词:VSCode SSH、SSH 无法免密登录、SSH 免密登录失败
1. sshd 配置文件检查确保 /etc/ssh/sshd_config 中公钥登录已开启:
1PubkeyAuthentication yes
2. 生成公钥并上传到服务器2.1 命令行方式(推荐)123ssh-copy-id 用户名@ip地址# 例如ssh-copy-id mi@192.168.0.1
2.2 手动方式找到本地的 ~/.ssh/id_rsa.pub,将其内容复制到服务器的 ~/.ssh/authorized_keys。
确保是普通用户新建 ~/.ssh/authorized_keys(不要用 root):
12mkdir ~/.sshtouch ~/.ssh/authorized_keys
复制也好、上传文件也罢,只要将本地 id_rsa.pub 的内容写入服务器 authorized_keys 即可。
3. Debug:免密登录失败排查主要根据 sshd 输出信息定位问题。
调整日志级别服务器端 /etc/ssh/sshd_config:
1LogLevel DEBUG
服务端 ...
解决 STM32 HAL 库使用 VSCode 打开识别不到头文件及 uint8_t 等问题
本质是这个C/C++插件识别不到 **include** 目录导致(配置文件:c_cpp_properties.json)



