一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

PX4模塊設計之十:PX4啟動過程_px4啟動流程

 netouch 2023-07-03 發(fā)布于北京

分類專欄: PX4 文章標簽: 單片機 嵌入式硬件
于 2022-07-19 17:56:33 首次發(fā)布
版權聲明:本文為博主原創(chuàng)文章,遵循 CC 4.0 BY-SA 版權協(xié)議,轉載請附上原文出處鏈接和本聲明。

PX4飛控啟動過程從邏輯的角度看,分為以下幾個階段:

  1. 飛控硬件上電
  2. 飛控硬件初始化
  3. 飛控bootloader初始化
  4. 飛控系統(tǒng)初始化
  5. 飛控應用初始化

通常來說,購買飛控板、外圍傳感器等,在正確組裝和連線的情況下,需要最為關注的是飛控應用初始化階段。作為購買的硬件,其他階段只要正確按照使用手冊操作,一般不會有太大的問題。

注1:硬件廠家對于開發(fā)的飛控板子調(diào)試,最重要的1、2、3、這幾塊的ICT測試,確保硬件質(zhì)量OK。后面才是應用軟件的移植(常說的porting)以及調(diào)優(yōu)。

注2:這里我們作為使用者(非硬件制造廠家)對每個階段做一個簡單的介紹,并結合實際情況給出可能出現(xiàn)的問題,以及尋找答案的工種(硬件,軟件)。

1. 【硬件】飛控硬件上電

這個階段如果不注意,容易出現(xiàn)硬件損壞。最為重要的注意事項:

  1. 電源正負極不要接反;
  2. 電源輸入/輸出不要出現(xiàn)短路;

注:很多電腦的USB口子都有電源保護功能(即使短路也不會將板子和電腦燒壞,請先確認USB口是否有這個保護功能),可以先通過有保護功能的USB口進行上電檢查,確保沒有短路或者反接的問題。

后續(xù)只要新增硬件,都要進行相關檢測,確保硬件上電瞬間冒煙損壞硬件,通常購買的硬件(電調(diào)、LED燈帶、GPS、圖傳、攝像頭等等)。

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

炸機或者出現(xiàn)冒煙等情況導致上電后無響應,就要注意硬件初始化到哪里(電池、電調(diào)、飛控、圖傳、接收機、傳感器),那個部件出現(xiàn)什么問題了。這個時候尚未到bootloader階段,最長使用的方法是全部斷開鏈接,一段一段的檢查。

電池
 └──> 電調(diào)
     ├──> 電機
     ├──> 圖傳
     └──> 飛控
	     ├──> 燈帶
	     ├──> GPS
	     ├──> 攝像頭
	     └──> 接收機

3. 【硬件+軟件】飛控bootloader初始化

通常這個部分主要是為了刷固件,因為bootloader+system+application是對應的一整套(比如:PX4的bootloader和betaflight的固件就不配套)。

注:如果bootloader啟動卡住,請先檢查板子上按鈕(通常按鈕長按進入燒錄固件模式,是否有斷路或者短路的情況)

4. 【硬件+軟件】飛控系統(tǒng)初始化

通常來說這塊是指bootloader將控制權交給系統(tǒng)(nuttx或者其他OS),進入idle任務,并正確調(diào)用系統(tǒng)啟動腳本。

注:bootloader和固件燒錄正確的情況下,通常這塊不會出問題。

__start
 └──> nx_start
     └──> nx_bringup
         └──> nx_create_initthread
             └──> nx_start_application
                 └──> nxtask_create //CONFIG_USER_ENTRYPOINT nsh_main --> platforms\nuttx\NuttX\apps\system\nsh\nsh_main.c main
	main  //nsh_main
     ├──> nsh_initialize // --> boardctl(BOARDIOC_INIT, 0) --> board_app_initialize
     └──> nsh_consolemain (nsh_main)
             └──> nsh_initscript
                 └──> nsh_script(vtbl, "init", NSH_INITPATH);

宏定義如下:

#  ifndef CONFIG_NSH_ROMFSMOUNTPT
#    define CONFIG_NSH_ROMFSMOUNTPT "/etc"
#  endif

#  ifndef CONFIG_NSH_INITSCRIPT
#    define CONFIG_NSH_INITSCRIPT "init.d/rcS"
#  endif

#  undef NSH_INITPATH
#  define NSH_INITPATH CONFIG_NSH_ROMFSMOUNTPT "/" CONFIG_NSH_INITSCRIPT

PX4板子啟動平臺公共部分:HRT、console_buffer、crypto、WorkQueue、uorb、log、mavlink_usb_check等。(這部分后續(xù)有時間繼續(xù)深入。)

board_app_initialize
 ├──> px4_platform_init
 ├──> <board_dma_alloc_init()>  //configure the DMA allocator
 │   └──> syslog(LOG_ERR, "[boot] DMA alloc FAILED\n");
 ├──> hrt_call_every(&serial_dma_call, 1000, 1000, (hrt_callout)stm32_serial_dma_poll, NULL); //set up the serial DMA polling at 1ms intervals for received bytes that have not triggered a DMA event.
drv_led_start();
 ├──> led_off(LED_RED);
 ├──> led_on(LED_GREEN); // Indicate Power.
 ├──> led_off(LED_BLUE);
 ├──> <board_hardfault_init(2, true) != 0>
 │   └──> led_on(LED_RED);
 ├──> struct spi_dev_s *spi_dev = stm32_spibus_initialize(CONFIG_NSH_MMCSDSPIPORTNO);//Get the SPI port for the microSD slot
 ├──> <!spi_dev>
 │   ├──> syslog(LOG_ERR, "[boot] FAILED to initialize SPI port %d\n", CONFIG_NSH_MMCSDSPIPORTNO);
 │   └──> led_on(LED_BLUE);
 ├──> int result = mmcsd_spislotinitialize(CONFIG_NSH_MMCSDMINOR, CONFIG_NSH_MMCSDSLOTNO, spi_dev); //bind the SPI interface to the MMCSD driver
 ├──> <result != OK>
 │   ├──> led_on(LED_BLUE);
 │   └──> syslog(LOG_ERR, "[boot] FAILED to bind SPI port 1 to the MMCSD driver\n");
 ├──> <defined(FLASH_BASED_PARAMS)>
 │   ├──> result = parameter_flashfs_init(params_sector_map, NULL, 0);
 │   └──> <result != OK)>
 │       ├──> syslog(LOG_ERR, "[boot] FAILED to init params in FLASH %d\n", result);
 │       └──> led_on(LED_AMBER);
 └──> px4_platform_configure

5. 【軟件】飛控應用初始化

PX4的應用腳本:

PX4的啟動文件:

  • Nuttx系統(tǒng):build/<target>/init.d/rcS
  • Posix系統(tǒng):build/<target>/init.d-posix/rcS

比如:build/px4_sitl_default/etc/init.d/rcS 或者build/holybro_kakutef7_default/etc/init.d

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

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內(nèi)容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    亚洲av又爽又色又色| 欧美人妻一区二区三区| 少妇激情在线免费观看| 欧美黑人在线一区二区| 又色又爽又无遮挡的视频| 97人妻精品一区二区三区男同| 精品人妻少妇二区三区| 国产又粗又爽又猛又黄的 | 成人精品日韩专区在线观看| 亚洲国产黄色精品在线观看| 日韩不卡一区二区三区色图| 国产av天堂一区二区三区粉嫩| 久久中文字幕中文字幕中文| 国产欧美日韩视频91| 亚洲精品欧美精品日韩精品| 国产精品成人一区二区三区夜夜夜| 亚洲熟妇av一区二区三区色堂| 久久re6热在线视频| 中文字幕人妻日本一区二区| 久久99精品国产麻豆婷婷洗澡 | 中文字幕人妻日本一区二区 | 亚洲欧洲一区二区综合精品| 国产精品不卡一区二区三区四区| 欧美日韩国产自拍亚洲| 亚洲欧美日韩色图七区| 欧美日韩国内一区二区| 欧美高潮喷吹一区二区| 免费特黄一级一区二区三区| 国产不卡最新在线视频| 风间中文字幕亚洲一区| 日韩一区二区免费在线观看 | 熟女少妇一区二区三区蜜桃| 91久久精品国产成人| 亚洲欧美精品伊人久久| 日韩一区二区三区观看| 欧美成人国产精品高清| 国产一区二区三区色噜噜| 中文字幕有码视频熟女| 久热青青草视频在线观看| 老鸭窝老鸭窝一区二区| 亚洲天堂精品一区二区|