zephyr移植支持类型soc适配

一、前言


    zephyr是一款小型物联网嵌入式RTOS,目前支持多款硬件平台,本文就是介绍下对zephyr支持的硬件平台移植的适配。

二、工程目录简介


 ├──  arch              包含和硬件体系结构相关的代码,每种平台占一个相应的目录

 ├──  boards          板级代码及相关的配置文件,例如stm32h743的就在目录zephyrproject/zephyr/boards/arm/nucleo_h743zi,我们适配自定义单板也主要是修改这个目录

 ├──  cmake           构建 Zephyr 需要额外的构建脚本

 ├──  doc               系统文档目录

 ├──  drivers          设备驱动,每个不同的驱动占用一个子目录

 ├──  dts               devicetrree 源文件,用于描述特定板子的设备细节,如外设寄存器数量及寄存器地址

 ├──  ext               其他功能的支持

 ├──  include        包括所有公共 api 的文件,除了在 lib 下定义的部分

 ├──  kernel         与架构无关的内核代码

 ├──  lib               库代码,包括最小的标准 C 库

 ├──  misc            不属于任何其他顶级目录的杂项代码

 ├──  modules         提供特定芯片系列的一些外设配置选项

 ├──  samples         演示使用 Zephyr 特性的示例应用程序

 ├──  scripts         用于构建和测试 Zephyr 应用程序的各种程序和其他文件。

 ├──  soc             SoC 相关代码和配置文件,如 nRF9160 soc

 ├──  subsys          zephyr 子系统,包括 USB,网络,文件系统及蓝牙等

 ├──  tests           测试 Zephyr 特性的代码

 ├──  CMakeLists.txt CMake 构建系统的顶层文件,包含构建 Zephyr 所需的大量逻辑

 ├──  Kconfig        顶层 Kconfig 文件,它引用 Kconfig.zephyr 文件。也可以在顶级目录中找到

 ├──  west.yml    West 清单,列出由 West 命令行工具管理的外部存储库

三、适配动作


    本文以移植stm32h743系列soc为例,具体芯片型号为STM32H743IIT6;

    首先了解一下一个单板目录的文件结构组成,包括:

        Kconfig.board:与Kconfig.defconfig配合使用,共同组成项目编译选项配置,完成Kconfig功能

        nucleo_h743zi.dts:设备树文件,定义单板的各项设备驱动的数据信息,也是我们适配需要重点修改的文件

        board.cmake:定义单板编译链接下载的方式

        Kconfig.defconfig:与Kconfig.board配合使用,共同组成项目编译选项配置,完成Kconfig功能

        nucleo_h743zi.yaml:描述单板硬件各项数据信息,包括单板型号、flash大小、ram大小、支持的设备驱动等

        doc/:里面存放单板相关的文档和图片说明

        nucleo_h743zi_defconfig:定义单板的各种开关以及指定系统时钟频率

        support/:st-link才有此文件夹,负责支持openocd

   下面开始展示下怎么自定义一个单板目录,其实zephyr对于各个平台的单板的适配都做的很好,所以真正改动的地方不会太多:

    1)首先在zephyr目录下找到自己想要适配的芯片目录,在同级目录下复制一个,我这里是h743,所以我复制的是nucleo_h743zi单板目录,取名nucleo_h743zephyr,之后下面的所有改动都在这个目录下进行

    2)doc和support这俩目录基本不用改动,同系列soc这俩目录是通用的

    3)board.cmake:如果你用的是st-link则不需要修改,如果用的是jlink请参考支持jlink的板子填写

    4)Kconfig.board:将改为(注释内容也最好跟着修改体现一致性,我这里没改是错误举动)

    5)Kconfig.defconfig:将改为

    6)nucleo_h743zephyr_defconfig:将原本复制过来的nucleo_h743zi_defconfig更名为nucleo_h743zephyr_defconfig,并在里面添加系统时钟频率设置CONFIG_SYS_CLOCK_HW_CYCLES_PER_SEC=400000000 #II6为400MHz,具体要根据芯片手册设置

    7)nucleo_h743zephyr.dts:将原本复制过来的nucleo_h743zi.dts更名为nucleo_h743zephyr.dts,这个里面会描述大量驱动设备的数据,例如管脚接口,地址信息,引用的设备,这个需要根据芯片开发手册和硬件原理图去调整

    8)nucleo_h743zephyr.yaml:将复制过来的nucleo_h743zi.yaml更名为nucleo_h743zephyr.yaml,对立面关于单板型号的描述从H743ZI改为H743ZEPHYR,主要是name和identifier这俩属性,其余是通用不需要修改

    9)还有就是有些应用需要制定特殊配置,这时候需要在应用的工程目录下添加.overlay文件,zephyr的驱动样例就有大量操作,例如adc里面就指定通道信息,比较奇怪的是节点名@后面数字超过15需要使用十进制否则代码识别不了,例如使用通道19就要写成channal@19

至此就将板子接上stLink与主机相连,在CMakeLists.txt同级目录下执行west build -b nucleo_h743zephyr -p编译自定义单板工程,使用west flash命令烧写

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值