拓十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Zephyr BSP: 04-Zephyr SoC 移植

Zephyr BSP: 04-Zephyr SoC 移植 摘要:本文是 Zephyr SoC Porting 的入门指南,面向"让公司自研 SoC 成为 Zephyr 支持的 SoC"这一目标。文章从 Zephyr Hardware Model 出发,系统讲解 SoC Porting 的本质——把芯片硬件能力翻译成 Zephyr 能理解的 Hardware Model;梳理了 SoC 与 Board 的分层关系、soc/ 目录与 dts/ 目录的建立方法,并逐一剖析 soc.yml、soc.h、SoC Devicetree、Kconfig.soc / Kconfig / Kconfig.defconfig 的职责与区别。最后给出分阶段移植路线(先编译出 ELF,再进入 Board Porting),并总结判断 SoC BSP 的 5 个核心问题,帮助读者从"照着 Zephyr 文件改"进阶到"根据 datasheet 自建 Hardware Model"。Zephyr SoC Porting目录1. SoC Porting 到底是在做什么?2. 一个公司 SoC 应该怎样进入 Zephyr?3. SoC 和 Board 必须分开4. SoC Porting 的第一件事:建立目录5. soc.yml 是干什么的?6. soc.h 是干什么的?7. SoC Devicetree 才是重点8. SoC Kconfig 又是什么?9. Kconfig 和 Devicetree 的区别10. SoC Porting 不是一次性完成的11. 第一阶段应该达到什么目标?12. 你现在不要急着创建 Board13. 公司 SoC BSP 最终应该长什么样?14. 这篇你真正应该记住的 5 个问题15. 我建议你的下一篇前言本文面向已经具备一定 Zephyr 基础、正准备把公司自研 SoC 接入 Zephyr 的开发者。如果你已经跑通过 Zephyr 的 sample、熟悉west build的基本流程,但面对soc/、dts/、Kconfig这些目录时仍感到无从下手,那么这篇文章正是为你准备的。读完本文,你将掌握以下核心能力:第一,理解 Zephyr Hardware Model 中 Architecture、SoC、Board 的分层关系,明白 SoC Porting 的本质是把芯片硬件能力翻译成 Zephyr 能理解的模型;第二,能够独立搭建soc/VENDOR/SOC目录结构,并分清 soc.yml、soc.h、CMakeLists.txt、Kconfig.soc 等文件的职责;第三,学会用 Devicetree 描述 CPU、Flash、SRAM、UART、GPIO、Timer 等硬件资源,并掌握根据 datasheet 填写reg和interrupts的方法;第四,建立分阶段移植的路线图,先让 Zephyr 编译出 ELF,再进入 Board Porting,最终从"照着 Zephyr 文件改"进阶到"根据 datasheet 自建 Hardware Model"。这一篇开始进入你真正的目标:不是"会用 Zephyr",而是让公司的 SoC 成为 Zephyr 支持的 SoC。你前面的学习顺序非常合适:01 Zephyr Hardware Model ↓ 02 Architecture → SoC → Board ↓ 03 BSP 整体规划 ↓ 04 SoC Porting ← 现在 ↓ 05 SoC Devicetree ↓ 06 SoC Kconfig ↓ 07 Clock / Reset / Interrupt ↓ 08 UART / GPIO / Timer ↓ 09 Board Porting ↓10west build / flash / debug ↓11Upstream / Vendor Zephyr SDKZephyr 当前的 SoC Porting Guide 明确把Architecture、SoC、SoC Series、SoC Family、CPU Cluster、CPU Core分开定义;SoC 是整个硬件支持层中非常关键的一层。1. SoC Porting 到底是在做什么?先不要把它理解成:“在 soc/ 目录里面放几个文件。”真正的 SoC Porting 是:你的 SoC │ ├── CPU ├── Memory ├── Interrupt Controller ├── Clock ├── Reset ├── Timer ├── UART ├── GPIO ├── DMA ├── SPI ├── I2C ├── ADC ├── PWM └──... │ ↓ Zephyr Hardware Model │ ┌────┴─────┐ ↓ ↓ Kconfig Devicetree │ │ └────┬─────┘ ↓ Zephyr ↓ Board所以:SoC Porting = 把你的芯片硬件能力翻译成 Zephyr 能理解的 Hardware Model。这里最重要的不是"写多少代码",而是建立正确的映射关系。2. 一个公司 SoC 应该怎样进入 Zephyr?假设你公司的芯片叫:ACME1234属于:ACME Semiconductor │ └── ACME SoC Family │ └── ACME1234 Series │ └── ACME1234如果 CPU 是 Cortex-M4,那么整个关系大致是:Zephyr │ Architecture │ ARM │ ARM Cortex-M │ ACME
返回列表