crazyflie2.0_crazyflie-firmware_总体程序概括

本文档详细介绍了Crazyflie 2.0飞行器的固件程序架构,主要基于FreeRTOS操作系统。在main函数中,初始化了LED、UART、系统、通信、控制器、稳定器及相关扩展板。此外,通过队列传递数据,并进行硬件自检。通过系统启动后,调度器开始运行多个任务,包括adcTask、crtpTxTask等。这些任务将逐步详述其功能和实现过程。

第一个正式版本刚发出去做板,现在有空可以来好好看看STM32F405这边到底做了哪些事情,今天先看到整体程序的架构,crazyflie用的是FreeRTOS,程序中大部分会用到创建任务和队列传递数据的过程,网上有中文版的FreeRTOS资料,看一遍基本明白创建任务及其队列实现的机制,今天我们先看下main这边主要做了什么事情,习惯用SourceInsight浏览代码。

首先从main函数开始:

int main() 
{
  //Initialize the platform.
  platformInit();

  //Launch the system task that will initialize and start everything
  systemLaunch();

  //Start the FreeRTOS scheduler
  vTaskStartScheduler();

  //TODO: Move to platform launch failed
  ledInit();
  ledSet(0, 1);
  ledSet(1, 1);

  //Should never reach this point!
  while(1);

  return 0;
}
1,platformInit();函数我们继续往下看:

使用平台的 ‘esp32’ 开发板,在列出的文件夹中:D:\mixly2.0-win32-x64-rc4\arduino-cli\Arduino15\packages\esp32\hardware\esp32\2.0.7 使用平台的 ‘esp32’ 代码,在列出的文件夹中:D:\mixly2.0-win32-x64-rc4\arduino-cli\Arduino15\packages\esp32\hardware\esp32\2.0.7 cmd /c if exist "D:\\mixly2.0-win32-x64-rc4\\testArduino\\partitions.csv" COPY /y "D:\\mixly2.0-win32-x64-rc4\\testArduino\\partitions.csv" "D:\\mixly2.0-win32-x64-rc4\\mixlyBuild\\partitions.csv" cmd /c if not exist "D:\\mixly2.0-win32-x64-rc4\\mixlyBuild\\partitions.csv" if exist "D:\\mixly2.0-win32-x64-rc4\\arduino-cli\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.7\\variants\\esp32\\partitions.csv" COPY "D:\\mixly2.0-win32-x64-rc4\\arduino-cli\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.7\\variants\\esp32\\partitions.csv" "D:\\mixly2.0-win32-x64-rc4\\mixlyBuild\\partitions.csv" cmd /c if not exist "D:\\mixly2.0-win32-x64-rc4\\mixlyBuild\\partitions.csv" COPY "D:\\mixly2.0-win32-x64-rc4\\arduino-cli\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.7\\tools\\partitions\\default.csv" "D:\\mixly2.0-win32-x64-rc4\\mixlyBuild\\partitions.csv" cmd /c IF EXIST "D:\\mixly2.0-win32-x64-rc4\\testArduino\\bootloader.bin" ( COPY /y "D:\\mixly2.0-win32-x64-rc4\\testArduino\\bootloader.bin" "D:\\mixly2.0-win32-x64-rc4\\mixlyBuild\\testArduino.ino.bootloader.bin" ) ELSE ( IF EXIST "D:\\mixly2.0-win32-x64-rc4\\arduino-cli\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.7\\variants\\esp32\\bootloader.bin" ( COPY "D:\\mixly2.0-win32-x64-rc4\\arduino-cli\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.7\\variants\\esp32\\bootloader.bin" "D:\\mixly2.0-win32-x64-rc4\\mixlyBuild\\testArduino.ino.bootloader.bin" ) ELSE ( "D:\\mixly2.0-win32-x64-rc4\\arduino-cli\\Arduino15\\packages\\esp32\\tools\\esptool_py\\4.5/esptool.exe" --chip esp32 elf2image --flash_mode dio --flash_freq 80m --flash_size 4MB -o "D:\\mixly2.0-win32-x64-rc4\\mixlyBuild\\testArduino.ino.bootloader.bin" "D:\\mixly2.0-win32-x64-rc4\\arduino-cli\\Arduino15\\packages\\esp32\\hardware\\esp
最新发布
03-31
<think>好的,我需要帮用户解决关于ESP32开发板的分区表和引导加载程序的配置问题,以及相关的CMD命令操作。首先,我需要回忆ESP32开发的相关知识,尤其是分区表和bootloader的设置。 用户提到了目标文件夹是D:\mixly2.0-win32-x64-rc4及其子目录,这可能涉及到Mixly环境下的配置。Mixly是基于Arduino框架的图形化编程工具,但ESP32的分区表和bootloader通常是在ESP-IDF环境中配置的。不过用户可能需要手动修改这些文件,或者在Mixly的目录结构中找到相关配置。 根据引用[4],ESP32需要分区表来管理Flash中的不同区域,比如应用程序、OTA更新、文件系统等。默认的分区表可能存储在项目目录下的partitions.csv文件中。用户需要确认这个文件的位置,并修改它以适应自己的需求,比如调整分区大小或添加自定义分区。 关于bootloader.bin,它通常由ESP-IDF编译生成,用户可能需要配置编译选项或使用特定的命令来生成。在Mixly中,可能已经集成了这些工具,但用户如果想自定义,可能需要手动操作。 接下来是CMD命令。用户可能需要使用esptool.py来烧录bootloader和分区表。例如,esptool.py write_flash命令可以将编译好的二进制文件烧录到指定地址。另外,设置环境变量可能也是必要的,如引用[3]中提到,需要将esptool.py和编译器路径添加到环境变量中,以便在命令行中使用。 用户的目标文件夹结构可能需要将分区表文件放在特定的子目录中,比如D:\mixly2.0-win32-x64-rc4\esp32\partitions.csv。然后通过命令行进入该目录,执行编译和烧录命令。需要指导用户如何编辑partitions.csv,配置分区,并生成对应的bin文件。同时,引导加载程序的烧录地址通常是0x1000,分区表的地址是0x8000,这些信息需要准确传递给esptool.py。 可能还需要提醒用户关于分区表的大小和布局的注意事项,例如确保应用程序分区足够大,OTA分区是否正确配置等。此外,如果用户使用自定义分区,可能需要调整项目配置以指向新的分区表文件,如引用[4]中提到的配置目录。 最后,需要验证步骤,比如编译项目后检查生成的bin文件,使用esptool.py烧录并确认设备是否正确启动。可能还需要解释每个命令的作用,如esptool.py的参数含义,分区表各字段的意义等,确保用户理解每一步的操作目的。</think>### ESP32开发板分区表与引导程序配置指南 #### 一、分区表配置(partitions.csv) 1. **文件路径定位** - 默认分区表位于项目目录的`components/partition_table`子目录下[^4] - 在Mixly环境中建议放置在: `D:\mixly2.0-win32-x64-rc4\esp-idf\components\partition_table` - 自定义分区表需通过`menuconfig`指定路径: `idf.py menuconfig` → `Partition Table` → `Custom partition table CSV` 2. **分区表结构示例** ```csv # Name, Type, SubType, Offset, Size, Flags nvs, data, nvs, 0x9000, 0x4000, otadata, data, ota, 0xd000, 0x2000, phy_init, data, phy, 0xf000, 0x1000, factory, app, factory, 0x10000, 1M, ota_0, app, ota_0, , 1M, ota_1, app, ota_1, , 1M, ``` 需注意`Offset`字段必须连续且不重叠[^4] #### 二、引导程序配置(bootloader.bin) 1. **生成位置** - 编译后自动生成在: `D:\mixly2.0-win32-x64-rc4\build\bootloader\bootloader.bin` - 配置参数通过`menuconfig`调整: `Bootloader config` → 设置日志级别/优化选项 2. **烧录地址固定** - Bootloader必须烧录到`0x1000`地址: `esptool.py write_flash 0x1000 bootloader.bin` #### 三、关键CMD命令操作 1. **环境变量设置** ```cmd set PATH=%PATH%;D:\mixly2.0-win32-x64-rc4\tools\xtensa-esp32-elf\bin set PATH=%PATH%;D:\mixly2.0-win32-x64-rc4\esp-idf\components\esptool_py ``` (需添加至系统环境变量实现永久生效[^3]) 2. **完整烧录命令** ```cmd esptool.py --chip esp32 --port COM3 --baud 921600 write_flash \ 0x1000 bootloader.bin \ 0x8000 partitions.bin \ 0x10000 firmware.bin ``` 参数说明: - `--chip esp32`:指定芯片型号 - `0x8000`:分区表固定烧录地址 - `partitions.bin`由`gen_esp32part.py`工具生成 #### 四、验证配置 1. 查看分区信息: ```cmd esptool.py read_flash 0x8000 0xc00 partitions_dump.bin gen_esp32part.py partitions_dump.bin ``` 2. OTA升级测试: ```python import esp esp.ota_get_next_update_partition() # 验证OTA分区切换 ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

技术在路上

帮助需要的人

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值