当前位置: 首页 > news >正文

Zephyr如何注册设备实例

设备树 → 编译期生成 → 运行时访问 流程图:


Zephyr dev->config 工作流程

设备树 (.dts)
─────────────────────────────
anx7451@39 {compatible = "analogix,anx7451";reg = <0x39>;reset-gpios = <&gpio1 5 GPIO_ACTIVE_LOW>;init-delay-ms = <50>;
};│▼
设备树编译 (dtc) + Zephyr 代码生成
─────────────────────────────
生成 C 宏:DT_PROP(DT_NODELABEL(anx7451), reg) = 0x39GPIO_DT_SPEC_GET(DT_NODELABEL(anx7451), reset_gpios) = {...}DT_PROP(DT_NODELABEL(anx7451), init_delay_ms) = 50│▼
编译期展开 DEVICE_DT_DEFINE()
─────────────────────────────
生成静态对象:static const struct anx7451_config anx7451_config = {.bus = ...,.reset_gpio = ...,.init_delay_ms = 50,};static struct anx7451_data anx7451_data;static struct device DEVICE_anx7451 = {.name   = "ANX7451",.config = &anx7451_config,   <─── 指针挂上去.data   = &anx7451_data,.init   = anx7451_init,};│▼
运行时(Zephyr 启动)
─────────────────────────────
1. 内核遍历所有 struct device
2. 调用 anx7451_init(&DEVICE_anx7451)│▼
驱动 init 函数
─────────────────────────────
static int anx7451_init(const struct device *dev) {const struct anx7451_config *config = dev->config;// 使用编译期配置参数gpio_pin_configure_dt(&config->reset_gpio, GPIO_OUTPUT);k_msleep(config->init_delay_ms);
}

完整链路:
设备树参数 → 宏生成 → 编译期静态 config → dev->config 指针 → 驱动运行时访问

http://www.xdnf.cn/news/1436995.html

相关文章:

  • [Java]PTA:jmu-Java-01入门-取数字浮点数
  • 自学嵌入式第三十三天:网络编程-UDP
  • Day19(前端:JavaScript基础阶段)
  • 分布式中防止重复消费
  • Spring Security的@PreAuthorize注解为什么会知道用户角色?
  • 开悟篇Docker从零到实战一篇文章搞定
  • 基于Python毕业设计推荐:基于Django的全国降水分析可视化系统
  • 战略咨询——解读81页中小企业企业战略规划方案【附全文阅读】
  • go-mapus最简单的离线瓦片地图协作
  • C++后端开发重点知识点
  • Adafruit_nRF52_Bootloader 使用 uf2
  • Spring Cloud Config 核心原理
  • 【C++】编写通用模板代码的重要技巧:T()
  • CICD的持续集成与持续交付和Zabbix
  • 【C++】15. ⼆叉搜索树
  • 室内定位---apriltag 视觉定位demo
  • (四)Python控制结构(条件结构)
  • deepseek7b本地部署技巧,新手也能玩得转
  • 下载 | Win11 官方精简版,系统占用空间极少!(8月更新、Win 11 IoT物联网 LTSC版、适合老电脑安装使用)
  • Flink RuntimeContext和FunctionContext:状态计算的核心桥梁
  • Linux中断实验
  • 数字化转型的终极关怀:以人为本
  • Linux笔记14——shell编程基础-8
  • C#类对象映射AutoMapper
  • QT(2)
  • MTK Linux DRM分析(二十九)- MTK mtk_dsi.c(Part.1)
  • Linux 环境配置 muduo 网络库详细步骤
  • Linux 文本处理三大利器:命令小工具和sed
  • 从理念到实践:三层解耦架构与“无系统”论
  • 基于web的高校学籍管理系统的设计与实现-(源码+LW+可部署)