ARM, Keil, آموزش های متنی

پروگرام کردن میکروکنترلر STM32 با استفاده از Jlink

پروگرام کردن میکروکنترلر STM32 با استفاده از Jlink

از دیرباز یکی از معروفترین و دوست داشتنی ترین پروگرامر/دیباگرهای در زمینه ی میکروکنترلرهای ARM، پروگرامر/دیباگر Jlink (جلینک) بوده که قابلیت برنامه ریزی بر روی اکثر میکروکنترلرهای نسل ARM را دارد. این روزها که میکروکنترلرهای STM در بازار یکه تازی می کنند، کاربران زیادی اولین تجربه ی خودشون رو با پروگرامر/دیباگر ST-Link تجربه می کنند، که پیشنهاد خود شرکت ST هست و برای محصولات و میکروکنترلرهای ST کاربرد دارد. با این حال خیلی از برنامه نویسانی که سابقه ی کار بیشتری با میکروکنترلرهای ARM دارند و یا از میکروکنترلرهای ARM دیگر نیز استفاده می کنند ترجیح می دهند همچنان میکروکنترلرهای STM خود را با پروگرامر جلینک ( JLink ) پروگرام کنند.

پروگرام کردن میکروکنترلر STM با استفاده از Jlink

روش SWD

در حال حاضر به منظور صرفه جویی در مسیر کشی روی PCB و همچنین سایز سوکت پروگرامر بر روی PCB ، بسیاری از طراحان ترجیح می دهند که از روش پروگرام کردن SWD بجای JTAG استفاده کنند. چرا که در روش JTAG احتیاج به پایه های به مراتب بیشتری نسبت به SWD جهت پروگرام/دیباگ میکروکنترلر وجود دارد. این در حالیست که نتیجه چندان تفاوتی ندارد!

و اما Jlink دارای پورت JTAG می باشد، چگونه به پورت SWD دسترسی داشته باشیم. برای تبدیل سخت افزار این مقاله را ببینید ( به زودی )

همینطور که مشاهده شد، کار تبدیل بسیار ساده بود، حال باید تنظیمات مربوط به دیباگر Jlink را درون IDE مدنظر انجام دهیم.

کافیست مراحل زیر را پیگیری کنید.

  1. به عنوان گام اول در بعضی از پکیج ها که پایه های میکروکنترلر محدود است. ممکن است پایه های JTAG آنها با تعدادی از IO ها به اشتراک گذاشته شده باشد. بنابراین به صورت پیشفرض مجبور خواهید بود که وضعیت پایه های بوت را قبل از ورود به حالت پروگرام کردن، تنظیم کنید. برای این منظور …
    • وضعیت پایه ی بوت 1 معمولا به صورت ثابت برابر 0 منطقی نگه داشته می شود.
    • وضعیت پایه ی بوت 0 بایستی به 1 منطقی تغییر پیدا کند و سپس میکرو یک بار reset شود.

توجه، جهت راحتی بیشتر و اینکه نیازی به تغییر وضعیت مداوم پایه های بوت و ریست کردن به ازاء هر بار پروگرام کردن میکرو نداشته باشیم، کافیست در پروژه ای که با نرم افزار STM32cubeMX ایجاد می کنید و تنظیمات اولیه را اعمال می کنید، مطابق تصویر زیر عمل کنید. به این ترتیب از واحد SYS ، مقدار فیلد Debug را برابر با Serial Wire تنظیم کرده و سپس پروژه را تولید کنید. سرعت دولوپ شما به طرز قابل ملاحظه ای بیشتر خواهد شد و نیازی به تغییر وضعیت بوت ها و ریست کردن میکرو وجود ندارد.

STM32cubeMX - stlink - program

2. در نرم افزار Keil ، وارد محیط Options for Targets می شویم. می توانید از ترکیب دکمه های Alt + F7 نیز استفاده کنید.

پروگرام کردن میکروکنترلر STM با استفاده از Jlink

3. وارد تب Debug شده، پروگرامر/دیباگر Jlink را از منوی کشابی انتخاب کنید. مطابق تصویر زیر. در نهایت بر روی دکمه Settings کلیک کنید.

پروگرام کردن میکروکنترلر STM با استفاده از Jlink

4. از منوی باز شده، مطابق با تصویر، بخش پورت را SW انتخاب می کنیم. به این ترتیب مطابق تصویر، در لیست سمت راست با عنوان SW Device ، یک مورد ثبت می شود که نشان می دهد ارتباط پروگرامر با میکروکنترلر صحیح می باشد.

پروگرام کردن میکروکنترلر STM با استفاده از Jlink

5. از تب Flash Download ، تیک Reset and Run را بزنید. سپس دکمه ی OK را بزنید و کار تمام است.

پروگرام کردن میکروکنترلر STM با استفاده از Jlink

6. از طریق دکمه ی download نشان داده شده در تصویر پایین برد را می توانید برنامه ریزی کنید. بعد از برنامه ریزی نیاز است وضعیت پایه ی بوت 0 را به 0 منطقی تغییر حالت بدهید. و برد را ریست کنید تا راه اندازی مجدد بشود. به این ترتیب برنامه ای که روی حافظه فلش قرار گرفته است اجرا می شود. در صورتی که تنظیمات STM32cubeMX را انجام داده باشید، نیازی به ریست کردن برد و تغییر وضعیت بوت 0 نیست. (پایه ی بوت 0 نیاز است در حالت پیشفرض خود معادل 0 تنظیم شده باشد و نیازی به تغییر ندارد.)

پروگرام کردن میکروکنترلر STM با استفاده از Jlink

به این ترتیب کار تمام است.


منابع پیشنهادی جهت یادگیری بیشتر STM32

می توانید در دوره آموزش STM32 در لینک زیر شرکت کنید.


لینک های مفید

پروگرام کردن میکروکنترلر STM32 با STM32 ST-Link Utility

پروگرام کردن میکروکنترلر STM32 با ST-Link در Keil


از قسمت نظرات در پایین همین صفحه، اگر سوال، پیشنهاد، نظر و یا … دارید می تونید با ما و بقیه ی خوانندگان درمیان بگذارید.

author-avatar

درباره مرتضی زندی

خلق کردن شماره 1 علاقه مندی های من هست. برنامه نویسی بهترین ابزاری بوده که تا الان برای این کار پیدا کردم. بیس الکترونیک دارم و دستی بر آتش در دنیای رشته های مجاور. تجربه سال ها فعالیت در تیم های R&D رو دارم، در این بین در حوزه ی امبدد سیستم ها فعالیتم پررنگ تر هست. عاشق یادگیری و یاد دادن هستم و تلاش می کنم تجربیاتم رو به زبانی ساده از طریق EasyMCU.org به نحوی کاربردی و موثر با علاقه مندان این حوزه به اشتراک بذارم.

6 نظر در “پروگرام کردن میکروکنترلر STM32 با استفاده از Jlink

  1. مهدی زمانی گفت:

    سلام
    نرم افرار cube در ساخت پروژه فایل Application/MDK-ARM رو نمیسازه و کامپایل برنامه رو انجام نمیده و ازتمام خطوط برنامه ایراد میگیره ، لطفا راهنمایی بفرمایید

    1. درود بر شما.
      احتمالا پک مربوط به میکرو مورد استفاده سمت کیوب و هم سمت کیل باید به صورت جداگانه نصب بشه. پیغام هایی که سمت کیوب دریافت میکنید زمانی که generate رو کلیک میکنید، با دقت بخونید توضیح داده.
      با آرزوی بهترین ها.

  2. saeedi گفت:

    سلام ببخشید اگر بعد از قسمت debug وارد قسمت setting شدیم و پورت رو sw انتخاب کردیم و سمت راست ارور داد چیکار باید بکنیم؟

    1. درود بر شما.
      در صورت داشتن ارور، به این مفهوم هست که اتصال سیم بین پایه ها و یا تغذیه میکرو و دیباگر و یا حتی خود دیباگر دارای مشکل هست. باید مجدد اتصالات رو با دقت بیشتری بررسی کنید.
      با آرزوی بهترین ها.

  3. amir گفت:

    سلام برای stm8 چطور امکان پذیر هستش؟

    1. درود بر شما.
      ظاهرا شرکت segger برای stm8 پروگرامر جدا گانه ای ارائه داده، این مورد رو میتونید سرچ کنید برای اطلاعات دقیقتر.
      همینطور در نظر داشته باشید که از st-link هم برای پروگرام کردن stm8 میتونید استفاده کنید و شاید گزینه جذابتری باشه.
      با آرزوی بهترین ها

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

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

This site uses Akismet to reduce spam. Learn how your comment data is processed.