0
点赞
收藏
分享

微信扫一扫

ESP-IDF ESP32开发环境搭建


ESP32的开发方式如下图所示:

ESP-IDF ESP32开发环境搭建_反编译

下载代码:

mkdir -p ~/esp
cd ~/esp
git clone --recursive https://github.com/espressif/esp-idf.git

ESP-IDF会被下载到​​~/esp/esp-idf​

安装工具链:

安装工具链,debugger, openocd,python包等等,默认安装在​​$HOME/.espressif​​ 目录.

cd ~/esp/esp-idf
./install.sh

ESP-IDF ESP32开发环境搭建_工具链_02

ESP-IDF ESP32开发环境搭建_开发语言_03

下载包目录

ESP-IDF ESP32开发环境搭建_反编译_04

安装后的工具链目录:

ESP-IDF ESP32开发环境搭建_python_05

配置环境变量:

. $HOME/esp/esp-idf/export.sh
alias get_idf='. $HOME/esp/esp-idf/export.sh'
source ~/.bashrc

建立一个项目:

建立一个helloworld 项目

cd ~/esp
cp -r $IDF_PATH/examples/get-started/hello_world .

ESP-IDF ESP32开发环境搭建_反编译_06

配置和编译:

cd ~/esp/hello_world
idf.py set-target esp32
idf.py menuconfig

idf.py set-target esp32

ESP-IDF ESP32开发环境搭建_工具链_07

idf.py menuconfig

ESP-IDF ESP32开发环境搭建_反编译_08

默认配置保存

编译:

idf.py build

ESP-IDF ESP32开发环境搭建_后端_09

ESP-IDF ESP32开发环境搭建_python_10

生成的目标文件

ESP-IDF ESP32开发环境搭建_工具链_11

反编译:

xtensa-esp32-elf-objdump -d build/hello-world.elf >e.dis

ESP-IDF ESP32开发环境搭建_开发语言_12

esp-dsp项目编译:

 ESP32可以理解为阉割了DSP单元的HIFI处理器,虽然其本质上不是DSP,但是和HIFI系列使用同一个Base ISA,ESP-DSP就是社区开发的在ESP32上利用DSP指令实现加速的算法库。支持FIR,IIR,点乘,矩阵乘法等等算法接口。

下载代码,进入demo项目:

cd ~/esp
git clone https://github.com/espressif/esp-dsp.git
cd esp-dsp/examples/dotprod

编译:

idf.py build

得到目标文件:

ESP-IDF ESP32开发环境搭建_开发语言_13

可以利用binutils工具对目标文件进行分析!

工具链验证:

使用xtensa官方工具链xt-objdump反编译hello_world.elf,可以成功,更加说明esp和hifi是同一个ISA架构了。

     

ESP-IDF ESP32开发环境搭建_开发语言_14

但是发现一个问题,xt-objdump没有反编译出正确的汇编指令,函数反编译后输出的是裸指令码,看起来ESP32和HIFI虽然基于同样的base ISA, 单扩展配置方面还是存在很大差异的。

ESP-IDF ESP32开发环境搭建_开发语言_15

CONFIG_FREERTOS_BREAK_ON_SCHEDULER_START_JTAG机制:

据说是为了解决一个BUG, ESP32引入了第一次调度的入口任务处加了一个断点,实现流程为:

ESP-IDF ESP32开发环境搭建_开发语言_16

ESP-IDF ESP32开发环境搭建_后端_17

 运行时插入了一个断点,调用的是espidf提供的闭源库函数,所以用jlink调试时会发现一开始断了一下,需要重新启动运行pass 断点。

结束!

举报

相关推荐

0 条评论