welcom ! Handel home

2025年4月17日 星期四

STM32F407 Micro-ROS 韌體

 

Micro-ROS 韌體已經成功完成 build 並產生了 .elf, .hex, .bin 三種格式的輸出檔案,這表示前面的 linker 問題已解決,build 已經成功 ✅。

$/home/ubuntu/data/firmware_ws/firmware/freertos_apps/microros_olimex_e407_extensions/build/micro-ROS.hex

$/home/ubuntu/data/firmware_ws/firmware/freertos_apps/microros_olimex_e407_extensions/build/micro-ROS.elf

$/home/ubuntu/data/firmware_ws/firmware/freertos_apps/microros_olimex_e407_extensions/build/micro-ROS.bin

$/home/ubuntu/data/firmware_ws/firmware/freertos_apps/microros_olimex_e407_extensions/build/micro-ROS.map



📦 韌體檔案分析

bash
text data bss dec hex 186416 828 118288 305532 4a97c
區段說明
text程式碼區(flash 佔用)
data初始化的全域變數(RAM 佔用)
bss未初始化的全域變數(RAM 佔用)
dec總大小(= text + data + bss)
hex十六進位表示

📌 對 STM32F407VET6(512KB Flash / 128KB RAM)來說:

  • 你使用了 Flash 約 186 KB / 512 KB

  • 使用 RAM 約 119 KB / 128 KB

➤ 非常接近上限,建議你注意 stack、heap 空間配置,避免溢位


🔧 建議你接下來可以做的事:

  1. 燒錄韌體

    • 使用 ST-Link CLI 或 GUI 工具(如 STM32CubeProgrammer)燒錄:

      bash
      st-flash write build/micro-ROS.bin 0x8000000

      或使用 micro-ROS 提供的 flash script(視平台而定)。

  2. 開啟 micro-ROS agent 串接 ROS2 主機

    • 在 ROS2 主機(例如 Raspberry Pi)上執行:

      bash
      ros2 run micro_ros_agent micro_ros_agent serial --dev /dev/ttyACM0
  3. 測試 ROS2 通訊是否成功

    • 開 ROS2 topic monitor:

      bash
      ros2 topic list ros2 topic echo /your_topic

🛠 若你 RAM 太滿,可以這樣做:

  • 移除不必要的 rcl 功能,僅保留 rclc

  • 精簡 message type(例如使用 std_msgs/msg/Int32 取代大型結構)

  • 減少 timer 頻率或 topic 數量

  • 關閉 micro-ROS debug log(減少佔用)


沒有留言: