学习记录: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),无需手动调用
避免跨阶段依赖 某阶段初始化函数不可调用后一阶段的接口,如板级初始化中不能操作未初始化的驱动
多函数同优先级执行顺序 同优先级的初始化函数,执行顺序与代码中导出的顺序一致
相关推荐
不悔哥1 小时前
开源 Zephyr:现代嵌入式 RTOS 长什么样
单片机·开源·嵌入式
the sun342 小时前
CMSIS标准与各种库的发展历史+哈弗架构+CPU统一编址
stm32·架构·嵌入式
慧都小项2 天前
从 Figma 到 Qt:Qtitan 能减少哪些界面还原工作?
前端·qt·嵌入式·figma·图形界面·工业界面·qtitan
程序员打怪兽2 天前
完整的开发板使用流程
嵌入式
youcans_3 天前
【嵌入式软件AI编程】01. 基于 STM32/Claude Code的AI编程
stm32·mcu·嵌入式·ai编程·claude code
小智学长 | 嵌入式3 天前
实测GPT-6 Astra绘制硬件原理图和PCB效果分享
嵌入式·嵌入式开发·ai工具·单片机开发
一路往蓝-Anbo3 天前
第七篇:以太网设计 —— 从 RMII 时序到变压器隔离的深度拆解
stm32·单片机·嵌入式硬件·嵌入式·stm32硬件设计
玄奕子4 天前
三相逆变器系列(一):看懂三相全桥拓扑
嵌入式·dsp开发·电力电子·ti c2000·三相全桥逆变
the sun344 天前
嵌入式易错点:ARM指令架构、IP核、MCU厂商关系+BOOTLoader刷机原理
stm32·嵌入式
嵌入式阿蔡5 天前
CoAP / LwM2M 轻量协议:受限设备为什么不用 MQTT
单片机·物联网·嵌入式