PX4源码分析5_PX4启动流程

PX4启动流程,分为4步:

1.__start:

上电之后程序入口为Firmware/NuttX/nuttx/arch/arm/src/stm32/stm32_start.c中的__start函数,负责stm32芯片的底层初始化,包括是时钟,GPIO等。

2.os_start:

__start函数调用Firmware/NuttX/nuttx/sched/os_start.c中的os_start函数,负责os的底层初始化,包括队列和进程结构等。

3.os_bringup:

os_start函数调用Firmware/NuttX/nuttx/sched/os_bringup.c中的os_bringup函数,负责os基本进程的启动和用户进程的启动。用户启动入口由CONFIG_USER_ENTRYPOINT宏定义进行指定。

4.CONFIG_USER_ENTRYPOINT:

FMU和IO的启动入口不同,分别为:
(1)FMU中CONFIG_USER_ENTRYPOINT宏定义为nsh_main:
[1] 调用nsh_main函数。
[2] nsh_main函数调用Firmware/NuttX/apps/nshlib/nsh_consolemain.c中nsh_consolemain函数。
[3] nsh_consolemain函数调用nsh_initscript函数。
[4] nsh_initscript函数所执行的脚本即为FMU的启动脚本rcS。
[5] rcS脚本中负责挂载Sd卡,启动uorb,加载参数配置文件,启动dataman数据管理,启动各传感器,commander,执行rc.io,执行rc.interface(混控器),执行rc.mc_app(飞控姿态与位置算法)等。

(2)IO中CONFIG_USER_ENTRYPOINT宏定义为user_main:
调用src/modules/px4iofirmware/px4io.c中的user_start函数,负责IO基础环境的初始化,包括PWM,串口,ADC等,最后进入死循环,用于遥控器输入和与FMU通信的内容。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值