برنامه نویسی

نحوه تنظیم معیار و پروفایل عملکرد در STM32 MCU

هدف
زمان اجرای را اندازه گیری کنید و عملکرد کد را در یک میکروکنترلر STM32 (STM32؟) بهینه کنید:

  • شمارنده
  • پین GPIO PIN
  • Profiler داخلی STM32Cubeide (SWV/SWO)

شرح تصویر
ابزارهای مورد نیاز

شرح تصویر

روش 1: شمارش چرخه با استفاده از DWT (WatchPoint Data & Trace)
پیشخوان چرخه DWT را فعال کنید (برای Cortex-M3/M4/M7)

c

#include "core_cm4.h"  // Adjust to your core type

void DWT_Init(void) {
  CoreDebug->DEMCR |= CoreDebug_DEMCR_TRCENA_Msk;  // Enable trace
  DWT->CYCCNT = 0;                                 // Reset cycle counter
  DWT->CTRL |= DWT_CTRL_CYCCNTENA_Msk;             // Enable counter
}
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

استفاده از مثال

c

DWT_Init();

uint32_t start = DWT->CYCCNT;
myFunction();
uint32_t end = DWT->CYCCNT;

printf("Cycles: %lu\n", end - start);
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

برای تبدیل چرخه ها به زمان 1 / systemcoreclock ضرب کنید.

روش 2: ضامن GPIO + اسیلوسکوپ/آنالایزر
نمونه

c

HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_SET);  // Start timing
myFunction();
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_RESET); // Stop timing
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

می توانید پین را روی یک آنالایزر منطق مشاهده کنید تا مدت زمان عملکرد به میکرو ثانیه یا کمتر باشد.

روش 3: پروفایل STM32Cubeide SWV/SWO
الزامات:

  • MCU با پین SWO
  • از اشکال زدایی st-link یا j-link استفاده کنید
  • پین SWO (اغلب در PB3 یا مشابه ، بسته به MCU خود را وصل کنید)

مراحل:

  1. فعال کردن SWV I/O در STM32CubEmx (تحت SYS> اشکال زدایی> سیم سریال)

  2. در تنظیمات پروژه> پیکربندی اشکال زدایی:

  • به تنظیمات SWV بروید
  • ردیابی و پروفایل را فعال کنید
  1. Debugger را راه اندازی کنید و باز کنید:
  • کنسول SWV
  • ردیابی داده SWV / آنالایزر عملکرد

نماهای پروفایل:

  • زمان اجرای تابع
  • شمارش دستورالعمل
  • استفاده از CPU با گذشت زمان

نکات بهینه سازی بر اساس پروفایل

شرح تصویر

اختیاری: از معیارهای Coremark یا Dhrystone استفاده کنید

  • این معیارهای صنعت به مقایسه عملکرد MCU کمک می کنند.
  • می توانید Coremark را روی STM32 اجرا کنید و DMIPS/MHz را ببینید.
  • ST گاهی اوقات نمونه های Coremark بهینه شده را در repos STM32Cube ارائه می دهد.

خلاصه

شرح تصویر

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا