วิธีติดตั้ง tool chain ใน Visual Studio Code เพื่อให้ run และ debug โปรแกรม STM32F407VG สำหรับคนที่ไม่อยากใช้ IDE ตระกูล Eclipse ใช้งานร่วมกับ STM32CubeMX ได้
แสดงตัวอย่าง STM32F407VG เป็น ARM Cortex 4 อยู่ในบอร์ด STM32F4DISCOVERY คนที่ไม่ได้ใช้บอร์ดนี้ให้ดัดแปลงหัวช้อต่าง ๆ ให้ตรงบอร์ดที่มี
สร้าง folder g:\VSARM แล้วใส่ folder ต่าง ๆ ดังนี้
ถ้าไม่มี g: ให้ใช้ไดร์ฟอื่น ไฟล์ STM32F407.svd ให้ดาวน์โหลดจาก
ถ้าไม่ได้ใช้เบอร์ STM32F407VG ให้เลือกไฟล์ที่ตรงกับที่ใช้
- ติดตั้งโปรแกรม STM32CubeMX
- ติดตั้ง GNU Embedded Toolchain for ARM – https://developer.arm.com/open-source/gnu-toolchain/gnu-rm/downloads\ ลงใน folder g:\VSARM\armcc
- ติดตั้ง Texane’s ST-Link Tools –https://github.com/texane/stlink/releases/tag/1.3.0 ลงใน folder g:\VSARM\stlink
- ติดตั้ง Make for Windows ลงใน folder g:\VSARM\GnuWin32
- ติดตั้ง ST-Link drivers – https://www.st.com/en/development-tools/st-link-v2.html
- ติดตั้ง OpenOCD for Windows https://gnutoolchains.com/arm-eabi/openocd/ ไว้ใน G:\VSARM\OpenOcd
- ติดตั้ง Visual Studio Code แล้วติดตั้ง extenstion หกตัวดังนี้
- C/C++ – https://marketplace.visualstudio.com/items?itemName=ms-vscode.cpptools
- Cortex Debug – https://marketplace.visualstudio.com/items?itemName=marus25.cortex-debug
- Project Manager – https://marketplace.visualstudio.com/items?itemName=alefragnani.project-manager
ใส่ Windows Environment variables
ใส่ Environment path
เพิ่ม part G:\VSARM\OpenOcd\bin
เปิด STM32Cube กำหนด GPIO เพื่อเตรียมทำไฟกระพริบ กำหนด Project setting / Code Generator ให้ Toolchain / IDE = Makefile แล้วกด generate code
จะได้ MakeFile อย่างภาพล่าง
คำสั่งเพื่อ Make และ flash
make GCC_PATH=G:\VSARM\armcc\bin -f STM32Make.make flash
เปิด folder ที่ STM32Cube เจ็นโค้ดใน VSCode แล้วทำ workespace และทำให้เป็น project
ก็อปไฟล์ STM32F407.svd มาใส่ในนี้ด้วย
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
ใส่ keyboard shortcuts (ก็อปไปแทนที่ทั้งหมด)
// Place your key bindings in this file to overwrite the defaults
[
{
"key": "f5",
"command": "workbench.action.tasks.runTask",
"args": "Make Firmware"
},
{
"key": "f6",
"command": "workbench.action.tasks.runTask",
"args": "Load Firmware"
}
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
แก้ไฟล์ launch.json (ก็อปไปแทนที่ทั้งหมด)
{
// 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": [
{
"type": "cortex-debug",
"request": "launch",
"servertype": "stutil",
"cwd": "${workspaceRoot}",
"executable": "./build/test.elf",
"name": "Debug (ST-Util)",
"device": "STM32F407VG",
"v1": false,
"svdFile": "${workspaceRoot}/STM32F407.svd"
}
]
}
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
แก้ไฟล์ task.json (ก็อปไปแทนที่ทั้งหมด)
{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"version": "2.0.0",
"tasks": [
{
"type": "shell",
"label": "STM32 Make",
"command": "make",
"args": [
"GCC_PATH=G:\\VSARM\\armcc\\bin",
"-f",
"STM32Make.make"
],
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
}
},
{
"type": "shell",
"label": "STM32 Flash",
"command": "make",
"args": [
"GCC_PATH=G:\\VSARM\\armcc\\bin",
"-f",
"STM32Make.make",
"flash"
],
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
}
}
]
}
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
ใส่โค้ดไฟกระพริบ
เมื่อกดปุ่ม F5 จะเห็นแบบนี้
ให้เสียบบอร์ดแล้ว เลือก flash LED ที่บอร์ดควรกระพริบ
ตัวอย่าง output message ที่ terminal
ทดลอง debutg
ตั้ง break point ได้ ดูค่า register ได้
กด F1 พิมพ์ debug เพื่อดูคำสั่ง
ดู disassembly ของ function ต่าง ๆ เช่น main
ตัวอย่างโปรเจ็ต์ไฟล์
link