【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

发布了183 篇原创文章 · 获赞 106 · 访问量 16万+

猜你喜欢

转载自blog.csdn.net/qq_20515461/article/details/104739071