banner
按时间整理的学习笔记。

文章归档

Scroll down
Embedded

嵌入式开发真正拉开差距的地方,是定位问题的能力。一个问题发生后,能不能快速判断属于启动、文件系统、网络、应用、驱动还是硬件,直接决定修复效率。

设备能在实验室跑起来,只是第一步。真正部署到现场后,固件升级能力会变得非常关键。没有可靠 OTA,后续修 bug、加功能、修安全问题都会变成高风险操作。

很多嵌入式 Linux 产品的核心不是驱动,而是设备服务。它负责联网、接收云端或其他设备的控制协议、保存配置、上报状态、处理升级和自恢复。设备服务写得稳不稳,直接影响产品现场表现。

Buildroot 适合快速构建精简嵌入式 Linux 系统。它可以同时生成交叉工具链、内核、rootfs 和镜像。对入门和中小型产品来说,Buildroot 的学习成本比 Yocto 低很多。

RootFS 是嵌入式 Linux 用户态的地基。应用能不能启动、配置会不会丢、日志写到哪里、系统能不能长期运行,很多问题最后都会回到 rootfs 设计。

理解启动链路,是排查嵌入式 Linux 问题的基础。系统启动失败时,不能只说“板子起不来”,而要能判断卡在 BootROM、Bootloader、Kernel、RootFS 还是 init 阶段。

嵌入式 Linux 开发绕不开交叉编译。开发机通常是 x86_64,目标板可能是 ARM、AArch64、MIPS 或 RISC-V。代码在开发机上编译,最终要在目标板上运行,这中间最容易出问题的是架构、动态链接器和依赖库。

嵌入式 Linux 入门的第一步,不是改内核,也不是写驱动,而是把开发环境搭起来,把板子稳定连上,把启动日志完整拿到。只要这一步不扎实,后面遇到启动失败、网络不通、应用跑不起来时,就会缺少最基本的排查入口。

学习嵌入式 Linux 最容易遇到的问题,不是资料太少,而是资料太散。今天看驱动,明天看 Buildroot,后天又去研究 U-Boot,结果每个概念都知道一点,但真正拿到一块板子时,还是不知道从哪里开始开发。

更合理的方式,是按真实项目的开发链路学习:先能把系统跑起来,再能改 rootfs,再能开发应用,最后再深入内核和驱动。

精简 Linux 系统里的时区问题经常被低估。桌面发行版通常有 systemd、timedatectl、完整 tzdata 和图形化配置,但嵌入式 rootfs 里可能只有 BusyBox、少量动态库和几个启动脚本。更常见的情况是 /etc/localtime 位于只读 rootfs 中,运行时不能直接替换;设备还需要通过 MQTT 接收其他设备下发的时区修改协议,并且重启后不能丢失配置。

12345
请输入关键词进行搜索