ESP-IDF ESP32开发环境搭建

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

下载包目录

安装后的工具链目录:

配置环境变量:

. $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 .

配置和编译:

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

idf.py set-target esp32

idf.py menuconfig

默认配置保存

编译:

idf.py build

生成的目标文件

反编译:

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

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

得到目标文件:

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

工具链验证:

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

     

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

CONFIG_FREERTOS_BREAK_ON_SCHEDULER_START_JTAG机制:

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

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

结束!

猜你喜欢

转载自blog.csdn.net/tugouxp/article/details/113823336