Buildroot 和 Yocto 做产品发行版时如何选择?
Buildroot 以生成单一完整镜像为中心,配置和上手相对直接,适合固定产品;Yocto/BitBake 以层、Recipe、包和可复用发行版为中心,适合多产品、复杂定制与长期供应链,但学习和构建成本更高。
Question Bank
按知识、方向与难度筛选;每道题都有分层回答和工程追问。
Buildroot 以生成单一完整镜像为中心,配置和上手相对直接,适合固定产品;Yocto/BitBake 以层、Recipe、包和可复用发行版为中心,适合多产品、复杂定制与长期供应链,但学习和构建成本更高。
Oops 表示内核检测到严重异常并打印上下文,可能杀死当前任务后继续但系统已不可信;Panic 会停止或按策略重启整个系统。先固定内核构建,查看异常类型、PC/LR、调用栈、寄存器、进程、中断上下文和 taint。
理解一致性内存、流式映射的所有权切换、方向参数、地址能力和 IOMMU。
常见匹配优先考虑设备树 compatible/of_match_table,也可能使用 ACPI、id_table 或设备与驱动名称。匹配成功后 Driver Core 调用 probe,驱动再通过标准资源接口获取 MMIO、IRQ、Clock 等。
硬中断、软中断以及持自旋锁或禁止抢占的路径不能调用可能调度睡眠的 API,因为当前上下文不能安全切走。进程上下文不等于一定可睡眠,还要检查当前持锁和中断状态。
说明设备号、cdev、open/read/write/ioctl/poll、私有数据和生命周期。
原子读改写只保证目标操作不可撕裂,其内存排序强度取决于具体 API;relaxed、acquire、release 和全屏障版本语义不同。发布对象状态时必须按内核内存模型选正确原语,不能靠 volatile。