px4启动流程

文章详细介绍了PX4操作系统基于Nuttx实时嵌入式系统的启动流程,从Bootloader到Nuttx内核的初始化,再到应用任务的启动。Nuttx操作系统启动后,通过CONFIG_USER_ENTRYPOINT宏定义分别进入FMU的nsh_main和IO的user_start。FMU执行nsh_consolemain函数,运行启动脚本rcS,初始化Sd卡、uORB、传感器等。IO则进行基础环境初始化后进入死循环。此外,文章提到了中间件如px4_work_queue、uORB在启动过程中的作用。

PX4操作系统介绍

Nuttx 是一个实时嵌入式操作系统(Embedded RTOS),它很小巧,在微控制器环境中使用。Nuttx完全可扩展,可从从小型(8位)至中型嵌入式(32位)系统。它的设计目的还在于完全符合POSIX标准,完全实时,并完全开放。
从编程的角度来看,Nuttx文件系统看起来与Linux文件系统非常类似,但是,有一个根本的区别:Nuttx根文件系统是一个伪文件系统,而真正的文件系统可以挂载在伪文件系统中;相比之下,在典型的Linux安装中,Linux根文件系统是一个真正的文件系统,伪文件系统挂载在真正的根文件系统中。Nuttx选择的方法,旨在提供从非常小的平台到中等平台等的支持,以便具备更好的可扩展性。

PX4启动流程

px4操作系统nuttx为嵌入式实时操作系统,该系统类linux系统,在unix基础上进行裁剪。初学者对于程序的认知,大多数都是从main()函数开始启动, 实际上我们接触的所有软件程序,使用到的main函数都不是程序实际开始运行的入口,只是用户程序的入口而已。从这个角度而言,PX4的每个任务的main函数都是该任务的入口。这一篇我们分析一下PX4是如何从单片机的启动入口引导到应用任务启动的。
Nuttx操作系统和大多数操作系统相似,都先进入Bootloader启动引导程序,然后再启动fmu和io的操作系统。
PX4的启动流程分为两个部分,第一部分为Nuttx的启动,到加载nsh启动脚本;第二部分为PX4启动脚本的执行,用于启动PX4的所有应用程序。

在这里插入图片描述
一、第一部分Nuttx的启动流程:飞控程序跑起来之前的操作——bootloader
Bootloader是系统上电后启动的一段引导程序,负责引导进入Nuttx系统。

1.1bootloader和Nuttx启动
在嵌入式系统中,通常并没有像BIOS那样的固件程序(注,有的嵌入式CPU也会内嵌一段短小的启动程序),因此整个系统的加载启动任务就完全由BootLoader来完成。

Bootloader是嵌入式系统在上电后执行的第一段代码,在它完成CPU和相关硬件的初始化之后,再将操作系统映像或固化的嵌入式应用程序装在到内存中然后跳转到操作系统所在的空间,启动操作系统运行.

1.2主处理器和协处理器的固件烧写和运行流程
在这里插入图片描述
上图为主处理器和协处理器,固件下载到固件运行的流程图。值得说明的一点是分别给两个处理器下载blootloader以后,主处理器等待下载飞控固件,用地面站通过USB向飞控固件,下载完以后,主处理器的飞控固件启动,这时候通过串口给协处理器下载固件(固件只是下载一次)。这个工作完成之后,主处理器和协处理器同时开始工作。

Firmware\src\modules\px4iofirmware 这里面主要是一些,IO口的操作和安全开关的操作。他会在编译飞控固件的时候,一起被编译成为px4io-v2.bin,放在NUTTX文件系统中,在主处理器运行的时候把这个固件烧写进入协处理器。具体的烧写到单片机的FLASH哪个位置由px4io.cpp文件设置。

从编译后文件.map文件中,可以观察到fmu和io板都是从stm32_start.o文件开始启动。在这里插入图片描述
在这里插入图片描述
对应路径

/platforms/nuttx/NuttX/nuttx/arch/arm/src/stm32/stm32_start.c

void __start(void)描述:This is the reset entry point.就是复位进入的函数,跟32的启动文件进入main函数一个意思。

一开始进行了一系列初始化一系列初始化:

stm32_clockconfig();
stm32_fpuconfig
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值