ESP-IDFESP32開発環境の構築

ESP32の開発方法を下図に示します。

ダウンロードコード:

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

ESP-IDFはにダウンロードされます~/esp/esp-idf

ツールチェーンをインストールします。

デフォルトで$HOME/.espressif ディレクトリにインストールされているツールチェーン、デバッガ、openocd、pythonパッケージなどをインストールします

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は、DSP命令を使用して実現するコミュニティ開発のアルゴリズムライブラリです。 ESP32での加速。FIR、IIR、ドット乗算、行列乗算、およびその他のアルゴリズムインターフェイスをサポートします。

コードをダウンロードして、デモプロジェクトに入ります。

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は同じベースISAに基づいていますが、それでも大きな違いがあるようです。単一拡張構成の場合。

CONFIG_FREERTOS_BREAK_ON_SCHEDULER_START_JTAG机制:

バグを解決するために、ESP32は初めてスケジュールされたエントリータスクにブレークポイントを導入したと言われています。実装プロセスは次のとおりです。

 実行時にブレークポイントが挿入され、espidfが提供するクローズドソースライブラリ関数が呼び出されます。したがって、jlinkでデバッグする場合、最初にブレークポイントが壊れていることがわかり、パスブレークポイントを再起動する必要があります。

終わり!

おすすめ

転載: blog.csdn.net/tugouxp/article/details/113823336