Vscode は、開発およびデバッグ用の STM32/RISC-V 環境 IDE (最も包括的) を構築します。

单片机开发IDE环境如KeilMDK,虽然操作简单、デバッグを容易にするため。しかし、コード編集スタイルは非常に時代遅れで、文字化けした中国語記号は依然としてよく見られます。そして現在、人気の vscode エディターは非常に優れており、無料で非常に軽量で、コード開発エクスペリエンスは非常に優れており、快適に見えます。Clion IDE はエクスペリエンスが優れていますが、無料ではなく、サイズも大きくなります。Stm32cubeIDE は、プロジェクト テンプレートの生成と設定が簡単ですが、自動補完がまだ不十分で、一言で言えば、それぞれに長所と短所があります。

序文

ここでは、STM32 の開発とデバッグ用の IDE を構築し、必要な友人と共有するための Vscode の概要を紹介します。

Zhihui Jun の Clion ベースのプロジェクトと同様に、これらはすべて Cmake ベースのプロジェクトです。実際、チップが STM32 か RISC-V かに限定されません。openocd オンライン デバッグを使用します)。

Vscode にも EIDE プラグインがありますが、個人的には少し面倒に感じており、Cmake の方が汎用的です。Vscode で STM32 を開発するのはあまりクールではありませんが、誰もがスムーズに組み込みシステムを開発できることを願っています。写真はZhihui Jun 著「STM32 開発用の CLion の構成 [エレガントな組み込み開発]」から引用

【ノート】

現在普及している RISC-V MCU では、クロスコンパイル ツールチェーンが存在する限り、vscode をコンフィギュレーションと開発に使用することもできます。RISC-V で正式にサポートされているデバッガのホスト コンピュータは openocd です。openocd は、サーフェス上で最も強力な (他に類を見ない) オープン ソース デバッグ ホスト コンピューターであり、さまざまなターゲット (ARM (M、A シリーズ)、FPGA、RISC-V など) およびさまざまなデバッガー (Jlink、CMSIS-DAP、 FTDI など) は、JTAG および SWD インターフェイスをサポートします。

環境整備

ソフトウェア環境

  • STM32CubeMX (必須ではありません。利点は、迅速な構成に役立つことです。プロジェクト テンプレートがある場合は無視できます)
  • VScode (関連するプラグイン cmakeTools、cortexDebug をインストール)
  • MinGW64 (Windows 環境の gcc ツールチェーン)
  • OpenOCD (または jlinkGdbServer も機能します)
  • gcc-arm-none-eabi (arm の gcc クロス編集ツールチェーン。インストール後に環境変数に追加する必要があります)

使用されているリソースへのリンク

ST公式Webサイトから実行可能ファイルを直接ダウンロード

上記のCMake、MinGW64、arm-none-eabi-gcc、OpenOCDが必要なソフトウェアです。インストール パスには漢字やスペースが含まれないことが望ましいです。これらのコマンド行が cmd で正常に実行できるように環境変数を構成します。

海外の Web サイトのダウンロード速度が遅い場合があります。私が使用しているツール チェーンの Baidu ネットワーク ディスクのアドレスは次のとおりです。

链接:https://pan.baidu.com/s/1NCQykQ57Xh6PFe28TU_GGw?pwd=goyj 
提取码:goyj 
--来自百度网盘超级会员V5的分享

環境変数を構成した後、再起動して環境変数を有効にした後、次のステートメントを使用してコマンド ラインでテストできます。

gcc -v
arm-none-eabi-gcc -v 

cmake --version
情報が出力されていればインストールされています。

建設プロジェクトに手間をかけずに、できるだけ早く体験したい場合は、私のテンプレートを直接使用できます。

プロジェクトのソース コードのダウンロード リンクが添付されており、vscode で直接開くことができます。

https://download.csdn.net/download/qq8864/8785579

Vscodeプラグインのインストール

Vscode は次のプラグインをダウンロードしてインストールする必要があります。最初のスクリーンショットの赤い線のみが必要です。

 

 

cmake スクリプトの内容

cmake の構成とコンパイル ルールは CMakeLists.txt ファイルに基づいています。CMake に精通している場合は、これが非常に便利で強力であることがわかるはずです。慣れていなくても大丈夫です. 基本的には何も変更する必要はありません. ソース コード ディレクトリのパスを追加し、このファイルにフォルダーを含める方法を知っておくだけで済みます. このファイルはほとんど変更されません.

#THIS FILE IS AUTO GENERATED FROM THE TEMPLATE! DO NOT CHANGE!
set(CMAKE_SYSTEM_NAME Generic)
set(CMAKE_SYSTEM_VERSION 1)
cmake_minimum_required(VERSION 3.20)

# specify cross compilers and tools
set(CMAKE_C_COMPILER arm-none-eabi-gcc)
set(CMAKE_CXX_COMPILER arm-none-eabi-g++)
set(CMAKE_ASM_COMPILER arm-none-eabi-gcc)
set(CMAKE_AR arm-none-eabi-ar)
set(CMAKE_OBJCOPY arm-none-eabi-objcopy)
set(CMAKE_OBJDUMP arm-none-eabi-objdump)
set(SIZE arm-none-eabi-size)
set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY)

# project settings
project(vscodeSTM32Demo  C CXX ASM)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_C_STANDARD 11)

#Uncomment for hardware floating point
#add_compile_definitions(ARM_MATH_CM4;ARM_MATH_MATRIX_CHECK;ARM_MATH_ROUNDING)
#add_compile_options(-mfloat-abi=hard -mfpu=fpv4-sp-d16)
#add_link_options(-mfloat-abi=hard -mfpu=fpv4-sp-d16)

#Uncomment for software floating point
#add_compile_options(-mfloat-abi=soft)

add_compile_options(-mcpu=cortex-m3 -mthumb -mthumb-interwork)
add_compile_options(-ffunction-sections -fdata-sections -fno-common -fmessage-length=0)

# uncomment to mitigate c++17 absolute addresses warnings
#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-register")

if ("${CMAKE_BUILD_TYPE}" STREQUAL "Release")
    message(STATUS "Maximum optimization for speed")
    add_compile_options(-Ofast)
elseif ("${CMAKE_BUILD_TYPE}" STREQUAL "RelWithDebInfo")
    message(STATUS "Maximum optimization for speed, debug info included")
    add_compile_options(-Ofast -g)
elseif ("${CMAKE_BUILD_TYPE}" STREQUAL "MinSizeRel")
    message(STATUS "Maximum optimization for size")
    add_compile_options(-Os)
else ()
    message(STATUS "Minimal optimization, debug info included")
    add_compile_options(-Og -g)
endif ()

add_definitions(-DUSE_HAL_DRIVER -DSTM32F103xB -DUSE_STDPERIPH_DRIVER -DSTM32F10X_HD)

include_directories(./STM32F10x_FWLib/inc ./include)
file(GLOB_RECURSE SOURCES "startup/*.*" STM32F10x_FWLib/src/*.c "./source/*.c")

set(LINKER_SCRIPT ${CMAKE_SOURCE_DIR}/STM32F103C8Tx_FLASH.ld)

add_link_options(-Wl,-gc-sections,--print-memory-usage,-Map=${PROJECT_BINARY_DIR}/${PROJECT_NAME}.map)
add_link_options(-mcpu=cortex-m3 -mthumb -mthumb-interwork)
add_link_options(-T ${LINKER_SCRIPT})

add_link_options(-specs=nano.specs -specs=nosys.specs -u _printf_float)

add_executable(${PROJECT_NAME}.elf ${SOURCES} ${LINKER_SCRIPT})

set(HEX_FILE ${PROJECT_BINARY_DIR}/${PROJECT_NAME}.hex)
set(BIN_FILE ${PROJECT_BINARY_DIR}/${PROJECT_NAME}.bin)

add_custom_command(TARGET ${PROJECT_NAME}.elf POST_BUILD
        COMMAND ${CMAKE_OBJCOPY} -Oihex $<TARGET_FILE:${PROJECT_NAME}.elf> ${HEX_FILE}
        COMMAND ${CMAKE_OBJCOPY} -Obinary $<TARGET_FILE:${PROJECT_NAME}.elf> ${BIN_FILE}
        COMMENT "Building ${HEX_FILE}
Building ${BIN_FILE}")

エンジニアリング構成

STM32CubeMX は実際には必要ありません。CMake スクリプトと起動 *.s ファイルを設定するだけで済みます。これらは STM32CubeMX によって生成され、同じボードをコピーして直接使用することもできます。その中で、STM32F103C8Tx_FLASH.ld ファイルはリンク スクリプト ファイルであり、非常に重要です。フィルムの種類が異なると、関連するコンパイルされた実行可能コード、メモリ変数、割り込みベクトル、およびどの記憶領域 (.text、 . RAM および ROM 内の Rodata、.data、.bss などのセクションの場所とレイアウト)。

使い方

初期プロジェクトのエンジニアリング コードは、STM32Cubmx 構成を使用して生成することも、他の場所からコピーすることも、自分で手動でディレクトリを作成することもできます。アセンブリファイルstartup_stm32f103xb.sとリンカスクリプトファイルが必要です。CMakeLists.txt ファイルも必要です。自分で作成することも、書かれたテンプレートを使用することもできます。この記事には既製のテンプレート ファイルが用意されています。これらを使用すると、HAL ライブラリを使用するか標準ライブラリを使用するかは関係なく、どのライブラリを使用するかは関係ありません。

上記のソフトウェア環境とプラグインがインストールされていることを前提として、Vscode でプロジェクトのソースフォルダー (CMakeLists.txt があるフォルダー) を直接開くことができます。cmakeのプロジェクト構成が自動認識され、下部に関連項目が表示されます。以下の図の赤い線で示されているように、

次の図に示すように、下部のステータス バーにある構成アイコン ボタンを選択して、ツールチェーンを切り替えます。 

コンパイル処理ログ

[main] Configuring project: vscodeSTM32Demo 
[proc] Executing command: "D:\Program Files\CMake\bin\cmake.EXE" --no-warn-unused-cli -DCMAKE_EXPORT_COMPILE_COMMANDS:BOOL=TRUE -DCMAKE_BUILD_TYPE:STRING=RelWithDebInfo -DCMAKE_C_COMPILER:FILEPATH=C:\tools\arm-gcc\bin\arm-none-eabi-gcc.exe -DCMAKE_CXX_COMPILER:FILEPATH=C:\tools\arm-gcc\bin\arm-none-eabi-g++.exe -SD:/Users/Administrator/Desktop/test3/vscodeSTM32Demo -Bd:/Users/Administrator/Desktop/test3/vscodeSTM32Demo/build -G Ninja
[cmake] Not searching for unused variables given on the command line.
[cmake] -- Maximum optimization for speed, debug info included
[cmake] -- Configuring done
[cmake] -- Generating done
[cmake] -- Build files have been written to: D:/Users/Administrator/Desktop/test3/vscodeSTM32Demo/build


[main] Building folder: vscodeSTM32Demo 
[build] Starting build
[proc] Executing command: "D:\Program Files\CMake\bin\cmake.EXE" --build d:/Users/Administrator/Desktop/test3/vscodeSTM32Demo/build --config RelWithDebInfo --target all --
[build] [14/29   3% :: 0.202] Building C object CMakeFiles/vscodeSTM32Demo.elf.dir/source/main.c.obj
[build] [15/29   6% :: 0.222] Building C object CMakeFiles/vscodeSTM32Demo.elf.dir/STM32F10x_FWLib/src/core_cm3.c.obj
[build] [16/29  10% :: 0.265] Building C object CMakeFiles/vscodeSTM32Demo.elf.dir/source/printf_uart.c.obj
[build] [17/29  13% :: 0.297] Building C object CMakeFiles/vscodeSTM32Demo.elf.dir/STM32F10x_FWLib/src/stm32f10x_bkp.c.obj
[build] [18/29  17% :: 0.310] Building C object CMakeFiles/vscodeSTM32Demo.elf.dir/STM32F10x_FWLib/src/misc.c.obj
[build] [19/29  20% :: 0.325] Building C object CMakeFiles/vscodeSTM32Demo.elf.dir/STM32F10x_FWLib/src/stm32f10x_cec.c.obj
[build] [20/29  24% :: 0.339] Building C object CMakeFiles/vscodeSTM32Demo.elf.dir/STM32F10x_FWLib/src/stm32f10x_dbgmcu.c.obj
[build] [21/29  27% :: 0.355] Building C object CMakeFiles/vscodeSTM32Demo.elf.dir/STM32F10x_FWLib/src/stm32f10x_dac.c.obj

コンパイルのスクリーンショット: 

プログラムの書き込みとオンライン デバッグ

書き込む前に、エミュレータ設定ファイルを追加する必要があります。以下はDAP-linkの書き込みファイルです。手持ちのダウンローダーのパラメータに従って変更し、xxxlink.cfgの形式で保存し、それを配置します。プロジェクトディレクトリ内の config フォルダー

# choose st-link/j-link/dap-link etc.
source [find interface/cmsis-dap.cfg]
transport select swd
# 0x10000 = 64K Flash Size
# 0x80000 = 512K Flash Size
set FLASH_SIZE 0x80000
source [find target/stm32f1x.cfg]
# download speed = 10MHz
adapter speed 10000
reset_config srst_only
#reset_config none

プロジェクトのルート ディレクトリに新しいフォルダーを作成しconfig、その中に新しい構成ファイルを作成しますdaplink.cfg(ここではエミュレーターとして DapLink を使用しているため)。ファイルの内容は次のとおりです。

# choose st-link/j-link/dap-link etc.
adapter driver cmsis-dap
transport select swd
​
# 0x10000 = 64K Flash Size
set FLASH_SIZE 0x20000
​
source [find target/stm32f1x.cfg]
​
# download speed = 10MHz
adapter speed 10000

ST-Link を使用する場合:

# choose st-link/j-link/dap-link etc.
#adapter driver cmsis-dap
#transport select swd
source [find interface/stlink.cfg]
transport select hla_swd
source [find target/stm32f1x.cfg]
# download speed = 10MHz
adapter speed 10000

最初の 2 行はエミュレータのタイプとインターフェイスを設定し、次の行はフラッシュ サイズチップ タイプダウンロード速度などを指定します。

チップのセットアップ方法がわからない場合は、OpenOCD に付属する一連の構成ファイルを参照できます。パスは OpenOCD インストール ディレクトリの下にありますshare\openocd\scripts

reset_config srst_onlyこの文を設定ファイルに追加しないでください。ダウンロードが失敗します。この文はシステムに再起動を指示するものであり、削除してもダウンロードには影響しません。

ISPシリアルプログラミングプログラム

インサーキットエミュレーションのデバッグが必要ない場合は、これで終了です。生成された 16 進数ファイルは、シリアル ポート ツールを直接使用してプログラムをダウンロードできます。FlyMcuツールソフトウェアは、STM32チップISPシリアルポートプログラミング用のツールで、無料で、比較的使いやすく、使いやすく便利です。シリアル ポートを使用したワンキー ダウンロードには前提条件があります。つまり、回路基板に RS シリアル ポート スイッチング回路が必要であり、その中には DTR とRTSが必要です。目的は、ワンキー ダウンロードの準備をすることです。 STM チップをシリアル ポート プログラミング プログラムに誘導するための原理は、DTR および RTS を通じてブート ピンの変更を制御し、チップをブート アップグレード モードに移行させることです。

ツールのダウンロード アドレス:  MCU オンライン プログラミング ネットワーク: www.mcuisp.com MCU オンライン プログラミング ネットワーク

エミュレータ ダウンローダー

ターミナルにコマンド openocd -f Interface/stlink-v2.cfg -f target/stm32f4x.cfg -c "p​​rogram build/VSCodeF4.hex verify reverse exit" を入力して、プログラムをダウンロードします。

Keil のようなデバッグを VSCode に実装するには、デバッグ ファイルを構成し、左側のデバッグ ボタンをクリックする必要があります。launch.json ファイルの作成を選択します。[C++(GDB/LLDB)] を選択し、デフォルトの構成を選択します。

Cortex デバッグを選択: OpenOcd 

プロジェクトのルート ディレクトリの .vscode フォルダーにある launch.json を編集し、次の内容 (configFiles および svdFile 構成) を追加します。elf ファイルを生成するには、実行可能ファイルのパスを実際のパスに変更する必要があります。

{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "cwd": "${workspaceRoot}",
            "executable": "./bin/executable.elf",
            "name": "Debug with OpenOCD",
            "request": "launch",
            "type": "cortex-debug",
            "servertype": "openocd",
            "configFiles": [
                "stlink-v2.cfg",
                "stm32f4x.cfg"
            ],
            "searchDir": [],
            "runToEntryPoint": "main",
            "showDevDebugOutput": "none",
            "svdFile": "./STM32F40x.svd"

        }

    ]
}

OpenOCDについて 

上記の IDE の手順からわかるように、OpenOCD は gdb とハードウェア デバッガーを接続するツールであり、Linux、MacOS、および Windows で利用できます。OpenOCD は、stm32 で一般的に使用される stlink および jlink デバッガーなど、多数のハードウェア デバッガーをサポートしています。OpenOCD は、PC 上で動作するオープン ソースのデバッグ ソフトウェアで、元々は Dominic Rath が大学在学中 (2005 年) に開発したものです。OpenOCD は、組み込みデバイスにデバッグ、システム プログラミング、バウンダリ スキャン機能を提供するように設計されています。

SVD ファイルはシングルチップのレジスタ ファイルです。このファイルを追加するだけで、デバッグ中にレジスタの値を確認できます。プログラム内のレジスタの変更を確認するポイントをブレークすることで、レジスタ値の変化を確認できます。価値。stm32 マイクロコントローラーの svd ファイルは、keil のチップ パッケージ インストール パスの下にあります。(キールとチップパッケージをインストールした後にのみ見つかります)

デバッグ インターフェイスを実行します。

 これで終わりです。ご質問がございましたら、お気軽にお問い合わせください。最後に、vscode を使用して楽しく開発できるようになり、楽しく開発できるようになります。

その他のリソース

組み込み開発: STM32 開発用の CLion の構成_clion stm32_Hua Zi のブログ-CSDN ブログ

組み込み IDE OpenOCD の原理と stlink が stm32 ボードに接続する方法の紹介 - プログラマーが求めた

Clion を使って STM32 をゼロからエレガントに開発する方法を教えます (3) Clion 組み込み開発に必要なプラグイン_clion プラグインの推奨_Wang Latu のブログ - CSDN ブログ

https://github.com/

STM32 開発用に CLion を構成する [標準ライブラリ] - プログラマー募集

STM32 を開発するために VS Code を構成する [ユニバース & 最強のエディタ] - 電子工学ワールド

STM32CubeMX - STM32Cube 初期化コード ジェネレーター - STMicroelectronics

Clion を使って STM32 をゼロからエレガントに開発する方法を教えます (1) ソフトウェアのインストールと環境構成_clion 開発 stm32_Wang Latu のブログ - CSDN ブログ

vscode-armgcc-openocd は STM32 開発およびデバッグ環境を構築します_vscode のデバッグ stm32_フルスタックロードに関する Nick のブログ

MinGW-w64 - 32 ビットおよび 64 ビット Windows 用 - SourceForge.net でファイルを参照

STM32開発用にCLionを構成する【エレガントの組み込み開発】 bzdww

vscode openOCD Jlink のダウンロードとデバッグ STM32 チュートリアルを構成する - グレー レター ネットワーク (ソフトウェア開発ブログの集合体)

RISC-V MCU ld リンク スクリプトの説明_at > flash_Borrowing Landscape Blog-CSDN Blog

RISCV SOC 開発環境 4 - コードのデバッグ (openocd + gdb) - プログラマー募集

OpenOCD フラッシュ コード構造の解析 (RISCV ベース)_openocd ソース コード解析_ys1115 のブログ - CSDN ブログ

RISC-V デバッグ ソフトウェア openOCD のインストールと構成 - RISC-V テクノロジー フォーラム - 電子テクノロジー フォーラム - 人気の専門電子フォーラム!

RISC-V デバッグの簡単な説明_51CTO ブログ_dpdk の簡単な説明

非常に使いやすいプラグイン - EIDE、VSCODE で ARM プロジェクトをすばやく作成_Uncle Wheat のブログ - CSDN ブログ

おすすめ

転載: blog.csdn.net/qq8864/article/details/131000116