welcom ! Handel home

2025年4月14日 星期一

micro-ROS 與 FreeRTOS for STM32F407

 # Creating a FreeRTOS + micro-ROS firmware workspace ros2 run micro_ros_setup $create_firmware_ws.sh freertos olimex-stm32-e407 

這條指令是用來建立 micro-ROS 與 FreeRTOS 整合的 firmware 開發工作區,針對的是 STM32 E407 板(如您提到的 STM32F407VET6 開發板)。

下面詳細說明這條指令的作用與整體開發流程:


🔧 指令說明

bash
ros2 run micro_ros_setup create_firmware_ws.sh freertos olimex-stm32-e407

💡 指令功能:

透過 micro_ros_setup 套件中的 script:

  • 建立一個 firmware workspace(韌體開發工作區)

  • 使用 FreeRTOS 作業系統

  • 目標平台為 olimex-stm32-e407(STM32F407 為核心的開發板)


📁 建立後的目錄結構

執行後會在 firmware 目錄下建立以下結構:

plaintext
firmware/ ├── apps/ ← 用戶自訂的 app(會包含 main.c 或 app.c) ├── freertos_apps/ ← micro-ROS 範例 app ├── libmicroros/ ← micro-ROS 客戶端程式碼 ├── middleware/ ← DDS 中介軟體(eProsima Micro XRCE-DDS) ├── mcu_ws/ ← STM32 MCU support(CMSIS, HAL, etc) ├── platforms/ ← 各種 MCU 平台支援碼(含 olimex-stm32-e407) └── build/ ← 編譯產物會在這裡

🧱 系統架構關係圖

plaintext
[ ROS 2 Host ] <──DDS──> [ micro-ROS Agent ] ⇅ UART/USB/UDP [ STM32F407 + FreeRTOS + micro-ROS client ]

🪛 開發步驟概覽

  1. 建立 workspace

    bash
    ros2 run micro_ros_setup create_firmware_ws.sh freertos olimex-stm32-e407
  2. 設定你自己的應用程式 將你的應用邏輯寫入 firmware/apps/app.c(會呼叫 rclc 等 ROS 2 API)

  3. 設定 micro-ROS Agent 連線方式

    bash
    ros2 run micro_ros_setup configure_firmware.sh serial --dev /dev/ttyUSB0
  4. 建立 firmware 並編譯

    bash
    ros2 run micro_ros_setup build_firmware.sh
  5. 燒錄 firmware 到 STM32 板子

    • 若是使用 JLink/ST-Link,建議使用 openocd 或 STM32CubeProgrammer 來燒錄

  6. 啟動 micro-ROS Agent(在 PC 上)

    bash
    ros2 run micro_ros_agent micro_ros_agent serial --dev /dev/ttyUSB0 -v6

📝 備註

  • olimex-stm32-e407 是 micro-ROS 團隊預設支援的 target,您若是使用 STM32F407VET6 (非 Olimex 板),也可以複製該板設定作為自己的客製化 board support。

  • 若您使用的是 NuttX RTOSZephyr,create_firmware_ws.sh 的第一個參數可以改為 nuttxzephyr


沒有留言: