PX4模块设计之十:PX4启动过程

Posted lida2003

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PX4模块设计之十:PX4启动过程相关的知识,希望对你有一定的参考价值。

PX4模块设计之十:PX4启动过程

PX4飞控启动过程从逻辑的角度看,分为以下几个阶段:

  1. 飞控硬件上电
  2. 飞控硬件初始化
  3. 飞控bootloader初始化
  4. 飞控系统初始化
  5. 飞控应用初始化

通常来说,购买飞控板、外围传感器等,在正确组装和连线的情况下,需要最为关注的是飞控应用初始化阶段。作为购买的硬件,其他阶段只要正确按照使用手册操作,一般不会有太大的问题。

注1:硬件厂家对于开发的飞控板子调试,最重要的1、2、3、这几块的ICT测试,确保硬件质量OK。后面才是应用软件的移植(常说的porting)以及调优。

注2:这里我们作为使用者(非硬件制造厂家)对每个阶段做一个简单的介绍,并结合实际情况给出可能出现的问题,以及寻找答案的工种(硬件,软件)。

1. 【硬件】飞控硬件上电

这个阶段如果不注意,容易出现硬件损坏。最为重要的注意事项:

  1. 电源正负极不要接反;
  2. 电源输入/输出不要出现短路;

注:很多电脑的USB口子都有电源保护功能(即使短路也不会将板子和电脑烧坏,请先确认USB口是否有这个保护功能),可以先通过有保护功能的USB口进行上电检查,确保没有短路或者反接的问题。

后续只要新增硬件,都要进行相关检测,确保硬件上电瞬间冒烟损坏硬件,通常购买的硬件(电调、LED灯带、GPS、图传、摄像头等等)。

2. 【硬件】飞控硬件初始化

炸机或者出现冒烟等情况导致上电后无响应,就要注意硬件初始化到哪里(电池、电调、飞控、图传、接收机、传感器),那个部件出现什么问题了。这个时候尚未到bootloader阶段,最长使用的方法是全部断开链接,一段一段的检查。

电池
 └──> 电调
     ├──> 电机
     ├──> 图传
     └──> 飞控
	     ├──> 灯带
	     ├──> GPS
	     ├──> 摄像头
	     └──> 接收机

3. 【硬件+软件】飞控bootloader初始化

通常这个部分主要是为了刷固件,因为bootloader+system+application是对应的一整套(比如:PX4的bootloader和betaflight的固件就不配套)。

注:如果bootloader启动卡住,请先检查板子上按钮(通常按钮长按进入烧录固件模式,是否有断路或者短路的情况)

4. 【硬件+软件】飞控系统初始化

通常来说这块是指bootloader将控制权交给系统(nuttx或者其他OS),进入idle任务,并正确调用系统启动脚本。

注:bootloader和固件烧录正确的情况下,通常这块不会出问题。

5. 【软件】飞控应用初始化

PX4的应用脚本:

PX4的启动文件:

  • Nuttx系统:build//init.d/rcS
  • Posix系统:build//init.d-posix/rcS

6. 【配置】SD卡配置文件

SD卡文件布局及配置文件(配置文件可以自定义应用初始化流程)。

/
├── etc                     //Extra config (+ mixers)
│   ├── rc.txt              //If this file is present nothing in the system will be auto-started
│   ├── config.txt          //used to modify shell variables. It is loaded after the main system has been configured and before it is booted
│   ├── extras.txt          //used to start additional applications after the main system boot. Typically these would be payload controllers or similar optional custom components.
│   ├── mixers              //Mixers
│   └── NAME_OF_MIXER       //e.g. gimbal.aux.mix
├── log                     //Full flight logs
├── mission_log             //Reduced flight logs
├── fw                      //UAVCAN firmware
├── uavcan.db               //UAVCAN DB + logs
├── params                  //Parameters (if not in FRAM/FLASH)
├── dataman                 //Mission storage file
├── fault_<datetime>.txt    //Hardfault files
└── bootlog.txt             //Boot log file

6.1 extras 应用

e.g. etc/extras.txt

set +e
optional_app start      # Will not result in boot failure if optional_app is unknown or fails
set -e

mandatory_app start     # Will abort boot if mandatory_app is unknown or fails

6.2 mix自定义配置

e.g. gimbal.aux.mix with etc/config.txt

set MIXER_AUX gimbal
set PWM_AUX_OUT 1234
set PWM_AUX_DISARMED 1500
set PWM_AUX_MIN 1000
set PWM_AUX_MAX 2000
set PWM_AUX_RATE 50

7. 参考资料

【1】PX4开源软件框架简明简介
【2】PX4 System Startup
【3】PX4 Custom System Startup
【4】Nuttx nsh-start-up-script

以上是关于PX4模块设计之十:PX4启动过程的主要内容,如果未能解决你的问题,请参考以下文章

PX4模块设计之十七:ModuleBase模块

PX4模块设计之十五:PX4 Log设计

PX4模块设计之十六:Hardfault模块

PX4模块设计之十八:Logger模块

PX4模块设计之十二:High Resolution Timer设计

PX4模块设计之十九:Replay模块