Zephyr_Bindings目录作用

概述

Bindings目录在zephyr下主要是负责生成与driver tree设备树文件对应的c语言.h文件,通常我们在dts中写好设备描述信息,那么我们需要在c语言中能够用到它,Zephyr的构建工具west会解析dts里的节点,从里面取到compatible的名称,然后在dts/bindings文件夹里去遍历寻找与compatible对应的文件名,然后在里面取到类型信息生成对应的c语言.h文件。

bindings目录介绍

bindings目录由两大目录组成:

1.设备dts的描述类型yaml描述文件

2.vendor-prefixes.txt 设备与厂商描述文件(详情参加:Zephyr:compatible ‘micro,wm89xx‘ has unknown vendor prefix ‘micro‘_17岁boy的博客-CSDN博客

如下是我们在dts里定义的一个硬件:

 wm89xx@1a{
                compatible = "micro,wm89xx";
                reg = <0x1a>;
                label = "wm89xx";
                status = "okay";
        };

那么reg、label这些描述信息被转换成.h文件时应该是什么类型?

这个就需要一个yaml来描述了,这个描述文件需要放在dts/bindings目录下,zephyr会自动取compatible里的内容去找对应的文件,如micro,wm89xx,zephyr会遍历bindings下所有的目录文件找到micro,wm89xx.yaml文件,如果没有则不会生成对应的头文件,这个头文件的作用很重要,当我们编写驱动的时候想要获取label和reg的值时如果没有这个头文件我们就不知道这个值是多少。

yaml文件很简单,如下是一个简单的定义:

description: WM89XX_MICRO
compatible: "cirrus,wm89xx"

label:
    required: true
    type: string
    description: This is Driver Name

reg:
    required: true
    type: int
    description: This Reg Value

这个文件描述了label与reg在定义C头文件时应当是什么类型。

required:是否为必须的,如果是true,那么描述硬件信息时没有这个节点描述则报错

type:类型,可选:<string | int | boolean | array | uint8-array | string-array |phandle | phandles | phandle-array | path | compound>

description:属性描述


最终生成的文件可以在build/zephyr/include/generated/devicetree_unfixed.h文件中找到,如下就找到了label的定义:

#define DT_N_S_soc_S_i2c_40005c00_S_wm89xx_1a_P_label "wm89xx"

这些属性可以通过zephyr提供的一些宏来获取,具体参加Zephyr官网DOC

同时还有devicetree_fixups.h文件,这个文件来自devicetree_unfixed,它的主要作用是为宏定义别名,如果你觉得devicetree_unfixed生成的别名太复杂了,想要生成自己想要格式的或者自己想给指定宏设置一个别名,你可以在这个文件里包含devicetree_unfixed.h,并宏重定义指定宏就可以了。

最终生成的.h文件,给c语言调用的文件在build/zephyr/include/devicetree.h,devicetree基于devicetree_fixups、devicetree_unfixed。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
你好!要搭建 Zephyr 环境,你可以按照以下步骤进行操作: 1. 首先,确保你的开发环境满足以下要求: - 支持的操作系统:Linux(Ubuntu、Fedora、Debian等)、macOS或Windows。 - 至少8GB的RAM空间。 - 15GB以上的磁盘空间。 2. 安装依赖项: - 在 Linux 上,执行以下命令安装所需的依赖项: ``` sudo apt-get install --no-install-recommends git cmake ninja-build gperf \ ccache dfu-util device-tree-compiler wget \ python3-dev python3-pip python3-setuptools python3-tk python3-wheel xz-utils file \ make gcc gcc-multilib ``` - 在 macOS 上,你可以使用 Homebrew 进行安装: ``` brew tap zephyrproject-rtos/zephyr brew install --HEAD west ``` - 在 Windows 上,安装 WSL(Windows Subsystem for Linux),并在 WSL 中执行上述 Linux 安装命令。 3. 获取 Zephyr 代码: - 执行以下命令克隆 Zephyr 的 Git 仓库: ``` git clone https://github.com/zephyrproject-rtos/zephyr.git ``` 4. 安装 Zephyr 开发工具链: - 执行以下命令安装 west 工具: ``` pip3 install --user -U west ``` - 在 Zephyr 代码目录中执行以下命令初始化 west 工具: ``` west init west update ``` 5. 配置环境变量: - 在 Linux/macOS 上,打开 `~/.bashrc` 或 `~/.zshrc` 文件,添加以下行: ``` export ZEPHYR_TOOLCHAIN_VARIANT=zephyr export ZEPHYR_SDK_INSTALL_DIR=<path_to_zephyr_sdk> export PATH=$PATH:$ZEPHYR_SDK_INSTALL_DIR/zephyr-sdk-<version>/sysroots/x86_64-pokysdk-linux/usr/bin ``` - 在 Windows 上,打开 WSL 的 `~/.bashrc` 文件,添加上述行。 6. 构建和运行示例应用程序: - 进入 Zephyr 代码目录中的 `samples/hello_world` 目录。 - 执行以下命令构建应用程序: ``` west build -b <board_name> ``` - 构建成功后,使用以下命令烧录和运行应用程序: ``` west flash ``` 这样,你就成功搭建了 Zephyr 环境,并运行了一个示例应用程序。你可以根据自己的需求进行进一步的开发和调试。祝你好运!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

17岁boy想当攻城狮

感谢打赏

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值