2026/05/11
توسط اسماعیل ,
بدون دیدگاه
ابزارهای ضروری توسعه سامانههای نهفته
توسعه سامانههای نهفته به ابزارهایی مثل Toolchain ARM، OpenOCD، CMake و … نیاز دارد. این راهنما، آنها را معرفی میکند و برای هرکدام روش دانلود و نصب در اینترنت محدود (با حجم و دردسر کمتر) ارائه میدهد.
لینک سریع: دانلود همه
1. ARM GNU Toolchain
ARM GNU Toolchain مجموعهای از ابزارهای کامپایل، اسمبل و لینک برای ساخت برنامههای سیستمهای مبتنی بر ARM است. این همان چیزی است که برای تبدیل کدهای C/C++ (و در صورت نیاز اسمبلی) به فایل اجرایی مناسب میکروکنترلرها و SoCها استفاده میشود. نسخهی arm-none-eabi مخصوص توسعهی بدون سیستمعامل (bare-metal) و معمولاً برای میکروکنترلرهاست.
نکته: گزینه x86 یعنی این بسته برای اجرا/نصب روی سیستمهای مبتنی بر معماری x86 (مثل بیشتر رایانههای شخصی) آماده شده است.
مناسب چه کسانی است؟
- توسعهدهندگان و دانشجویانی که میخواهند برای ARM Cortex-M (یا محیطهای bare-metal) پروژه بسازند
- کسانی که قصد دارند پروژه را با ابزارهای استاندارد GNU Make / CMake / Makefile کامپایل کنند
- کاربرانی که میخواهند یک ابزار استاندارد و رایج در اکوسیستم Embedded داشته باشند
این ابزار دقیقاً چه کار میکند؟
- arm-none-eabi-gcc: کامپایل کدهای C/C++
- arm-none-eabi-as: اسمبل کدهای اسمبلی
- arm-none-eabi-ld: لینک نهایی و ساخت خروجی قابل اجرا
- ابزارهای جانبی برای دیباگ/استخراج اطلاعات (بسته به نصب یا همراهی با ابزارهای دیگر)
کاربرد در پروژههای Embedded
در پروژهی سامانههای نهفته، معمولاً فرآیند اینگونه است:
- نوشتن کد (C/C++)
- کامپایل به فایلهای میانی
- لینک با اسکریپت حافظه/ردیفها (Linker Script)
- تولید خروجیهایی مثل
.elf و سپس تبدیل به فایلهای قابل فلش مثل .bin یا .hex
پیشنهاد برای استفاده سریع
برای اینکه شروع کارتان راحتتر شود:
- اگر از قبل IDE یا برد دارید، نسخهی toolchain را مطابق همان برد/چیپ انتخاب کنید.
- اگر پروژه شما از CMake یا Make استفاده میکند، معمولاً فقط کافی است مسیر
bin toolchain را به تنظیمات سیستم یا Environment متصل کنید.
- برای دیباگ معمولاً باید ابزارهایی مثل GDB / OpenOCD هم کنار آن نصب شود.
چکلیست نصب
- دانلود بستهی ARM GNU Toolchain
- Extract و نصب/قرار دادن در یک مسیر ثابت (ترجیحاً بدون فاصله در نام مسیر)
- تنظیم دسترسیها و در صورت نیاز افزودن مسیر
.../bin به PATH
دانلود
Arm GNU Toolchain arm-none-eabi 14.3 rel1 x86 :
Part1 | Part2 | Part3
2. OpenOCD
OpenOCD (Open On-Chip Debugger) یک ابزار متنباز برای دیباگ (Debug) و پروگرام کردن (Programming/Firmware Flashing) میکروکنترلرهاست. معمولاً همراه با GDB استفاده میشود تا بتوانید از طریق رابطهایی مثل JTAG/SWD به چیپ هدف وصل شوید و هم کد را دیباگ کنید و هم روی حافظهاش فلش بزنید.
مناسب چه کسانی است؟
- توسعهدهندگان Embedded که میخواهند با GDB دیباگ حرفهای انجام دهند
- کسانی که میخواهند بدون ابزارهای بسته/گرافیکی خاص، روند دیباگ و فلش را کنترل کنند
- پروژههایی که روی پلتفرمهای ARM Cortex-M زیاد دیده میشود (اما محدود به ARM نیست)
OpenOCD دقیقاً چه کار میکند؟
- برقراری ارتباط با برد/چیپ از طریق رابط سختافزاری (معمولاً SWD یا JTAG)
- فراهم کردن سرویس برای:
- اتصال دیباگر (مثلاً GDB)
- فلش کردن حافظه (با دستورهای مخصوص یا از طریق فایلهای HEX/BIN)
- خواندن/تنظیم وضعیت چیپ (بسته به درایورها و پیکربندی)
کاربرد در کنار Toolchain
ترکیب رایج در Embedded این است:
- ARM GNU Toolchain برای ساخت فایل خروجی (مثل
.elf)
- OpenOCD برای اتصال و فلش
- GDB برای دیباگ قدمبهقدم، تعیین breakpoint و بررسی متغیرها
نکات مهم قبل از نصب
- برای اینکه OpenOCD درست کار کند، باید درایور یا پشتیبانی ابزار پروگرامر/دیباگر (مثل ST-LINK، J-Link، CMSIS-DAP و …) هم فراهم باشد.
- باید فایل/کانفیگ مخصوص چیپ یا برد را داشته باشید (OpenOCD از interface/target استفاده میکند).
دانلود
OpenOCD 0.12.0
3. CMake
CMake یک ابزار متقاطع (Cross-platform) و متنباز برای مدیریت فرآیند ساخت (Build) برنامههاست. به جای اینکه شما مستقیماً دستورات کامپایلر و لینککننده را برای هر سیستمعامل یا محیطی بنویسید، CMake از فایلهای سادهای به نام CMakeLists.txt استفاده میکند تا این کار را خودکار کند.
نکته: CMake خودش کد را کامپایل نمیکند، بلکه فقط فایلهای پروژه (مانند makefile برای GNU Make، یا فایلهای پروژه ویژوال استودیو) را تولید میکند.
مناسب چه کسانی است؟
- توسعهدهندگان نرمافزار (بخصوص C/C++) که روی سیستمعاملهای مختلف کار میکنند (ویندوز، لینوکس، مک)
- کسانی که پروژههای پیچیده با وابستگیهای زیاد دارند و میخواهند فرآیند Build را ساده کنند
- توسعهدهندگان Embedded که نیاز به مدیریت Build برای معماریهای مختلف یا محیطهای Cross-compilation دارند
CMake دقیقاً چه کار میکند؟
- تشخیص محیط: سیستمعامل، کامپایلر نصب شده، کتابخانهها و…
- تولید فایلهای Build: ساخت makefile، فایل پروژه IDE (مثل Visual Studio, Xcode)، یا فایلهای Ninja
- مدیریت وابستگیها: پیدا کردن کتابخانهها و تنظیم مسیرهای درست برای کامپایل و لینک
- پشتیبانی از Cross-compilation: تنظیم راحت برای ساخت برنامهها روی یک معماری (مثل x86) برای اجرای روی معماری دیگر (مثل ARM Embedded)
کاربرد در پروژههای Embedded
در کنار ابزارهایی مثل ARM GNU Toolchain، CMake بسیار مفید است:
- شما در
CMakeLists.txt مشخص میکنید که پروژه شما چه فایلهایی دارد، چه کتابخانههایی لازم دارد، و هدف نهایی چیست (مثلاً یک فایل .elf برای میکروکنترلر).
- سپس CMake را اجرا میکنید تا برای کامپایلر مورد نظرتان (مثلاً
arm-none-eabi-gcc) فایلهای لازم (مثل Makefile) را بسازد.
- در نهایت با دستور
make (یا معادلش) برنامه را Build میکنید.
دانلود
CMake 4.1.1 x64
4. افزونه های VS Code
افزونههای VS Code مجموعهای از افزونهها هستند که محیط کدنویسی Visual Studio Code را برای توسعهی Embedded کاملتر و حرفهایتر میکنند. خودِ VS Code یک ویرایشگر سبک و قدرتمند است، اما برای کار با پروژههای C/C++، CMake، گیت، دیباگ و حتی اتصال به بردهای نهفته، معمولاً به چند افزونهی کلیدی نیاز دارید.
مناسب چه کسانی است؟
- برنامهنویسان C/C++ در حوزه Embedded
- کسانی که از CMake یا Makefile استفاده میکنند
- توسعهدهندگانی که میخواهند با OpenOCD / GDB دیباگ کنند
- افرادی که دنبال یک محیط سبک، قابل تنظیم و سریع هستند
چرا افزونهها مهماند؟
در توسعهی سامانههای نهفته، فقط تایپ کد کافی نیست. شما معمولاً به این امکانات نیاز دارید:
- تکمیل خودکار کد
- نمایش خطاها و هشدارها
- مدیریت پروژه و بیلد
- دیباگ مرحلهبهمرحله
- یکپارچگی با Git و ابزارهای build
افزونههای VS Code این قابلیتها را اضافه میکنند.
افزونههای پیشنهادی برای Embedded
در ادامه چند افزونهی رایج و کاربردی را معرفی میکنیم:
1) C/C++ Extension
افزونهی اصلی برای کدنویسی C و C++ است.
کاربرد:
- تکمیل خودکار
- تشخیص خطاهای نحوی
- رفتن به تعریف توابع و متغیرها
- نمایش هدرها و includeها
2) CMake Tools
اگر پروژهتان با CMake ساخته میشود، این افزونه بسیار مهم است.
کاربرد:
- پیکربندی پروژه
- Build و Clean
- انتخاب Kit یا Toolchain
- مدیریت Targetها
3) Cortex-Debug
یکی از مهمترین افزونهها برای دیباگ بردهای ARM Cortex-M است.
کاربرد:
- اتصال به GDB/OpenOCD
- تنظیم breakpoint
- مشاهده رجیسترها و حافظه
- اجرای step-by-step
4) Makefile Tools
اگر پروژه با Makefile ساخته میشود، این افزونه کمک زیادی میکند.
کاربرد:
- اجرای targetها
- مدیریت بیلد
- سادهسازی کار با پروژههای مبتنی بر Make
دانلود
توجه: برای نصب کافیه فایل رو از حالت فشرده خارج کنید و در مسیر “%USERPROFILE%\.vscode\extensions” قرار بدید.
marus25.cortex-debug-1.12.1
mcu-debug.debug-tracker-vscode-0.0.15
mcu-debug.memory-view-0.0.29
mcu-debug.peripheral-viewer-1.6.1
mcu-debug.rtos-views-0.0.14
ms-vscode.cmake-tools-1.22.27
ms-vscode.cpptools-1.30.4-win32-x64
ms-vscode.cpptools-extension-pack-1.3.1
ms-vscode.cpptools-themes-2.0.0
ms-vscode.makefile-tools-0.12.17
github.vscode-github-actions-0.31.0
bmewburn.vscode-intelephense-client-1.18.2
ARM arm-none-eabi C/C++ Cmake Cortex-M Debug Embedded GNU OpenOCD STM32 toolchain VS Code برنامه نویسی
ارسال نظر