【00】ESPlane2.0 無人機開發指引


點擊跳轉:ESPlane2.0 無人機開發筆記彙總


一、ESP-IDF 環境配置

  1. 設置編譯工具鏈:Setup Toolchain
  2. 克隆 ESP-IDF 代碼倉庫:本項目目前使用 release/v3.3分支
    git clone -b release/v3.3 --recursive https://github.com/espressif/esp-idf.git
    
  3. 設置 ESP-IDF 環境變量:Setup Path to ESP-IDF
  4. 安裝 Python 依賴包:Install the Required Python Packages
    python -m pip install --user -r $IDF_PATH/requirements.txt
    

二、ESPlane2.0 源代碼獲取

對外發布的代碼,目前放在 github 個人倉庫

git clone https://github.com/qljz1993/ESPlane2.git

三、對 ESP-IDF 進行修改(可選)

注意: 爲了避免工程配置出錯,代碼目錄下附帶了已經配置好的 esp32freertos 兩個組件,可以實現對 ESP-IDF 對應組件的覆蓋,無需在。

這兩個組件來自 release/v3.3 分支,最近更新爲20200306 (|6f9a7264ce20c6132fbd8309112630d0eb490fe4),如果使用同樣版本的 ESP-IDF,可以忽略以下配置過程 。以下配置過程僅在 esp32freertos 兩個組件更新時參考。

1. ESP32 鏈接腳本修改

目的:將 esplane 固件中的 帶有paramlog標籤的變量,放置在連續的地址區域

{IDF_PATH}/components/esp32/ld/esp32.project.ld.in文件中找到drom0_0_seg段,添加以下內容:

    /* Parameters and log system datas >drom0_0_seg*/
    _param_start = .;
    KEEP(*(.param))
    KEEP(*(.param.*))
    _param_stop = .;
    . = ALIGN(4);
    _log_start = .;
    KEEP(*(.log))
    KEEP(*(.log.*))
    _log_stop = .;
    . = ALIGN(4);

添加完成後如下所示:

  .flash.rodata :
  {
    _rodata_start = ABSOLUTE(.);

    *(.rodata_desc .rodata_desc.*)               /* Should be the first.  App version info.        DO NOT PUT ANYTHING BEFORE IT! */
    *(.rodata_custom_desc .rodata_custom_desc.*) /* Should be the second. Custom app version info. DO NOT PUT ANYTHING BEFORE IT! */

    mapping[flash_rodata]

    *(.irom1.text) /* catch stray ICACHE_RODATA_ATTR */
    *(.gnu.linkonce.r.*)
    *(.rodata1)
    __XT_EXCEPTION_TABLE_ = ABSOLUTE(.);
    *(.xt_except_table)
    *(.gcc_except_table .gcc_except_table.*)
    *(.gnu.linkonce.e.*)
    *(.gnu.version_r)
    . = (. + 3) & ~ 3;
    __eh_frame = ABSOLUTE(.);
    KEEP(*(.eh_frame))
    . = (. + 7) & ~ 3;
    /*  C++ constructor and destructor tables, properly ordered:  */
    __init_array_start = ABSOLUTE(.);
    KEEP (*crtbegin.*(.ctors))
    KEEP (*(EXCLUDE_FILE (*crtend.*) .ctors))
    KEEP (*(SORT(.ctors.*)))
    KEEP (*(.ctors))
    __init_array_end = ABSOLUTE(.);
    KEEP (*crtbegin.*(.dtors))
    KEEP (*(EXCLUDE_FILE (*crtend.*) .dtors))
    KEEP (*(SORT(.dtors.*)))
    KEEP (*(.dtors))
    /*  C++ exception handlers table:  */
    __XT_EXCEPTION_DESCS_ = ABSOLUTE(.);
    *(.xt_except_desc)
    *(.gnu.linkonce.h.*)
    __XT_EXCEPTION_DESCS_END__ = ABSOLUTE(.);
    *(.xt_except_desc_end)
    *(.dynamic)
    *(.gnu.version_d)
    /* Addresses of memory regions reserved via
       SOC_RESERVE_MEMORY_REGION() */
    soc_reserved_memory_region_start = ABSOLUTE(.);
    KEEP (*(.reserved_memory_address))
    soc_reserved_memory_region_end = ABSOLUTE(.);
    _rodata_end = ABSOLUTE(.);
    /* Literals are also RO data. */
    _lit4_start = ABSOLUTE(.);
    *(*.lit4)
    *(.lit4.*)
    *(.gnu.linkonce.lit4.*)
    _lit4_end = ABSOLUTE(.);
    . = ALIGN(4);
    _thread_local_start = ABSOLUTE(.);
    *(.tdata)
    *(.tdata.*)
    *(.tbss)
    *(.tbss.*)
    _thread_local_end = ABSOLUTE(.);
    . = ALIGN(4);
    /* Parameters and log system datas */
    _param_start = .;
    KEEP(*(.param))
    KEEP(*(.param.*))
    _param_stop = .;
    . = ALIGN(4);
    _log_start = .;
    KEEP(*(.log))
    KEEP(*(.log.*))
    _log_stop = .;
    . = ALIGN(4);

  } >drom0_0_seg

2. 提高 PHY 增益

依次進入:Component config>>PHY>>Max WiFi TX power (dBm)
Max WiFi TX power 改爲 20

3. FreeRTOS 配置文件修改

  • a. 在中FreeRTOSConfig.h文件中修改下列內容:
//將configMINIMAL_STACK_SIZE修改爲2048,默認768
#define configMINIMAL_STACK_SIZE		2048

//將INCLUDE_vTaskCleanUpResources修改爲1,默認0
#define INCLUDE_vTaskCleanUpResources		1  

//添加下列宏定義
#define configUSE_APPLICATION_TASK_TAG  1  
#define configENABLE_TASK_SNAPSHOT  1
  • b. 在menuconfig中修改下列內容:

依次進入:Component config>>freertos>> Tick rate (Hz)
Tick rate 改爲 1000

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章