总链路分段硬件复位 → start.S 汇编初始化 → stm32_start () 芯片 C 底层初始化 → os_start () NuttX 内核完整初始化 → NSH 控制台启动 → 挂载 ROMFS 并执行 rcS 启动脚本 → 调用 px4_main.c阶段 1硬件上电 / 看门狗 / 软件复位硬件层无代码MCU 复位CPU PC 指针强制指向 Flash 起始地址 0x08000000硬件自动读取向量表前两个字0x00主堆栈 MSP 初始栈顶地址0x04复位中断服务程序 Reset_Handler 入口地址CPU 跳转 Reset_Handler进入nuttx/arch/arm/armv7-m/start.S阶段 2start.S 汇编初始化纯汇编无 C 运行环境文件路径nuttx/arch/arm/armv7-m/start.Scpsid i关闭全局中断防止初始化阶段外设中断干扰加载向量表预设值初始化 MSP 主堆栈中断 / 复位专用栈判断复位来源冷上电 /bootloader 跳转决定是否完整初始化 RAM清零.bss段循环把 RAM 未初始化全局变量区全部置 0拷贝.data段将 Flash 中已初始化全局变量复制到 RAM可选配置双堆栈 MSP/PSP区分中断栈与任务栈跳转至芯片 C 初始化函数stm32_start()本阶段仅搭建 C 语言运行环境不操作任何外设、不配置时钟阶段 3stm32_start.c STM32 芯片底层初始化文件路径nuttx/arch/arm/src/stm32/stm32_start.cRCC 复位全部外设外设寄存器恢复出厂默认配置外部晶振 HSE / 内部 HSI配置 PLL 倍频设置 SYSCLK、AHB、APB 分频系统主频开启 Cortex-M FPU 浮点单元CPACR 寄存器为姿态解算提供硬件浮点开启 Flash 预取缓冲、指令缓存提升 Flash 代码运行速度初始化 SysTick 滴答定时器提供内核调度时基划分 RAM 空闲区域初始化系统堆malloc/free 底层内存池调用board_early_initialize()板级早期初始化路径boards/xxx/xxx/src/board_init.c功能基础 LED、电源使能引脚、PMIC 预上电、传感器供电开关初始化全部硬件底层就绪调用 NuttX 操作系统入口os_start()阶段 4os_start () NuttX 内核全量初始化文件路径nuttx/sched/os_start.c初始化内核全局状态、TCB 任务控制块链表同步机制初始化信号量、互斥锁、条件变量、POSIX 消息队列中断子系统 irq 初始化注册硬件中断向量、中断优先级分组内存管理 mm 初始化任务静态栈管理、堆内存分配器VFS 虚拟文件系统初始化挂载设备节点、初始化 CDev 字符设备框架初始化块设备驱动框架SD/FRAM 等存储外设底层接口创建系统空闲 IDLE 任务最低优先级无其他任务时运行开启全局中断cpsie i启动抢占式优先级调度器调度器切换至 IDLE 任务NuttX RTOS 正式运行阶段 5NuttX 自动启动 NSH Shell 任务os_start 完成调度后内核自动运行第一个用户任务NSH 控制台NSH 初始化串口控制台、标准输入输出 stdout/stderrNSH 自动挂载内置 ROMFS 文件系统固件内置只读文件系统对应资源ROMFS/px4fmu_common/NSH 执行启动脚本rcS路径/etc/init.d/rcS阶段 6rcS 启动脚本PX4 业务入口前置文件路径ROMFS/px4fmu_common/init.d/rcS配置系统环境变量、日志目录、参数存储分区初始化高精度 hrt 定时器、挂载 FRAM/SD 卡文件系统执行核心入口命令px4_main脚本调用平台层入口函数进入 PX4 专属业务层阶段 7px4_main PX4 飞控框架主入口文件路径platforms/nuttx/px4_main.c初始化 PX4 平台封装层封装 NuttX 原生系统调用初始化 uORB 消息总线、参数管理模块依次加载所有板载外设驱动IMU、GPS、PWM、RC 输入等启动 WorkQueue 高低优先级任务线程池启动飞控核心业务任务commander、姿态估计、姿态控制、mavlink 通信等极简纵向时序总览快速记忆复位 → start.S栈 bss/data 初始化→ stm32_start时钟 / FPU / 板级早初始化 → os_startNuttX 内核、调度、中断、VFS 初始化→ NSH 启动 → 挂载 ROMFS 执行 rcS 脚本 → 调用 px4_main.c关键分界标记start.S ↔ stm32_start汇编结束进入芯片硬件时钟配置stm32_start ↔ os_start裸机硬件初始化完成进入 RTOS 操作系统os_start ↔ NSH内核调度器启动拥有多任务能力NSHrcS ↔ px4_main通用 NuttX 系统结束进入 PX4 飞控专属底层框架