学习记录: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),无需手动调用
避免跨阶段依赖 某阶段初始化函数不可调用后一阶段的接口,如板级初始化中不能操作未初始化的驱动
多函数同优先级执行顺序 同优先级的初始化函数,执行顺序与代码中导出的顺序一致
相关推荐
lularible10 小时前
从沙子到车辙(3.3):数据通路与控制器的“双人舞“
开源·嵌入式·汽车电子
lularible15 小时前
从沙子到车辙(3.5):存储层次
开源·嵌入式·汽车电子
lularible15 小时前
从沙子到车辙(3.4):流水线——指令级并行的艺术
开源·嵌入式·汽车电子
lularible17 小时前
从沙子到车辙(3.1):组合逻辑——没有记忆的计算
开源·嵌入式·汽车电子
济6171 天前
ROS开发专栏---创建软件包 和编写第一个节点---适配Ubuntu 22.04
嵌入式·ros2·机器人方向
Jason_zhao_MR1 天前
RK3576 MIPI Camera ISP调试:主观调优与工程实战(下)
stm32·嵌入式硬件·安全·系统架构·嵌入式
LN花开富贵2 天前
Ubuntu aarch64 架构安装 NoMachine 远程控制 避坑与实战
linux·运维·笔记·学习·ubuntu·嵌入式
2023自学中2 天前
imx6ull开发板,Linux-c编程,识别 键盘、鼠标、触摸屏坐标
linux·嵌入式·开发板·应用编程
IAR Systems2 天前
瑞萨RH850与IAR:助力下一代“软件定义汽车”开发
汽车·嵌入式·iar
lularible2 天前
从沙子到车辙(2.1):思想实验——在原始森林里造芯片
开源·嵌入式·汽车电子