学习记录:RT-Thread 初始化机制

核心:RT-Thread 通过带优先级的宏定义,让初始化函数按序执行,解决依赖冲突问题。

一、核心逻辑

  • 所有初始化宏均基于 INIT_EXPORT(fn, "优先级") 封装,数字越小,初始化时机越早。
  • 严格遵循"硬件→软件→驱动→组件→环境→应用"的启动顺序,适配层间依赖关系。

二、6个关键初始化宏详情表

宏定义 优先级 核心作用 典型使用场景
INIT_BOARD_EXPORT(fn) "1" 板级硬件基础初始化 引脚配置、系统时钟初始化、外设底层使能
INIT_PREV_EXPORT(fn) "2" 纯软件预初始化 数据结构初始化、算法库预处理、无硬件依赖的配置
INIT_DEVICE_EXPORT(fn) "3" 硬件设备驱动初始化 I2C/SPI 总线驱动、传感器驱动、外设功能初始化
INIT_COMPONENT_EXPORT(fn) "4" 系统核心组件初始化 文件系统(DFS)、网络协议栈(LWIP)、GUI 库
INIT_ENV_EXPORT(fn) "5" 运行环境配置初始化 挂载存储分区、设置系统环境变量、初始化日志路径
INIT_APP_EXPORT(fn) "6" 上层应用业务初始化 创建应用线程、初始化业务逻辑、启动用户功能

三、使用注意事项表

注意点 具体说明
优先级不可随意修改 低优先级宏依赖高优先级宏的初始化结果,如驱动初始化(3)不能早于板级初始化(1)
函数导出格式 直接通过宏包裹初始化函数即可,例:INIT_DEVICE_EXPORT(my_uart_init),无需手动调用
避免跨阶段依赖 某阶段初始化函数不可调用后一阶段的接口,如板级初始化中不能操作未初始化的驱动
多函数同优先级执行顺序 同优先级的初始化函数,执行顺序与代码中导出的顺序一致
相关推荐
一直C5 小时前
【ARM嵌入式开发】LCD液晶屏显示原理、色彩模式与显存地址映射详解
lcd·嵌入式·arm·寄存器·cortex-a7
Hespethorn6 小时前
洪泛、路由、网络栈:LoRa 自组网三条路线的设计取舍与量化对比
物联网·嵌入式
用户0510122572969 小时前
RGA(二)——RK3588 的核拓扑与能力差异
linux·嵌入式
用户0510122572969 小时前
RGA(一)——基础知识
linux·嵌入式
用户0510122572969 小时前
RGA(三)——实宽高、虚宽高与对齐约束
linux·嵌入式
燕卫博9 小时前
SSD201 BSP 开发教程
嵌入式·bsp·ssd201
一直C10 小时前
【嵌入式 ARM 驱动开发】PWM 脉宽调制原理与 GT9147 电容触控屏驱动开发详解
嵌入式硬件·lcd·嵌入式·arm汇编·imx6ull·cortex-a7
haliu11 小时前
【FHE 同态加密】我们如何实现同态加密推理(十四):为什么 `RESULT=PASS` 不是判据(纯 C11 · 零依赖)
人工智能·嵌入式·c·fhe·推理引擎·c11·边缘推理·同态加密推理
jianqiang.xue1 天前
【CStackGUI 实战】深色主题终端:app.dark 默认深色 + 顶层命名样式表 + 运行时切换
单片机·嵌入式·cstackgui·c语言gui·可视化拖拽
追涨杀跌老能手1 天前
GD32H759 + RT-Thread 工控实战--第7篇 OSPI Flash
开源·嵌入式