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

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

روش SWD
در حال حاضر به منظور صرفه جویی در مسیر کشی روی PCB و همچنین سایز سوکت پروگرامر بر روی PCB ، بسیاری از طراحان ترجیح می دهند که از روش پروگرام کردن SWD بجای JTAG استفاده کنند. چرا که در روش JTAG احتیاج به پایه های به مراتب بیشتری نسبت به SWD جهت پروگرام/دیباگ میکروکنترلر وجود دارد. این در حالیست که نتیجه چندان تفاوتی ندارد!
و اما Jlink دارای پورت JTAG می باشد، چگونه به پورت SWD دسترسی داشته باشیم. برای تبدیل سخت افزار این مقاله را ببینید ( به زودی )
همینطور که مشاهده شد، کار تبدیل بسیار ساده بود، حال باید تنظیمات مربوط به دیباگر Jlink را درون IDE مدنظر انجام دهیم.
تنظیمات Jlink در محیط Keil
کافیست مراحل زیر را پیگیری کنید.
- به عنوان گام اول در بعضی از پکیج ها که پایه های میکروکنترلر محدود است. ممکن است پایه های JTAG آنها با تعدادی از IO ها به اشتراک گذاشته شده باشد. بنابراین به صورت پیشفرض مجبور خواهید بود که وضعیت پایه های بوت را قبل از ورود به حالت پروگرام کردن، تنظیم کنید. برای این منظور …
- وضعیت پایه ی بوت 1 معمولا به صورت ثابت برابر 0 منطقی نگه داشته می شود.
- وضعیت پایه ی بوت 0 بایستی به 1 منطقی تغییر پیدا کند و سپس میکرو یک بار reset شود.
توجه، جهت راحتی بیشتر و اینکه نیازی به تغییر وضعیت مداوم پایه های بوت و ریست کردن به ازاء هر بار پروگرام کردن میکرو نداشته باشیم، کافیست در پروژه ای که با نرم افزار STM32cubeMX ایجاد می کنید و تنظیمات اولیه را اعمال می کنید، مطابق تصویر زیر عمل کنید. به این ترتیب از واحد SYS ، مقدار فیلد Debug را برابر با Serial Wire تنظیم کرده و سپس پروژه را تولید کنید. سرعت دولوپ شما به طرز قابل ملاحظه ای بیشتر خواهد شد و نیازی به تغییر وضعیت بوت ها و ریست کردن میکرو وجود ندارد.

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

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

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

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

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

به این ترتیب کار تمام است.
منابع پیشنهادی جهت یادگیری بیشتر STM32
می توانید در دوره آموزش STM32 در لینک زیر شرکت کنید.
لینک های مفید
پروگرام کردن میکروکنترلر STM32 با STM32 ST-Link Utility
پروگرام کردن میکروکنترلر STM32 با ST-Link در Keil
از قسمت نظرات در پایین همین صفحه، اگر سوال، پیشنهاد، نظر و یا … دارید می تونید با ما و بقیه ی خوانندگان درمیان بگذارید.
سلام
نرم افرار cube در ساخت پروژه فایل Application/MDK-ARM رو نمیسازه و کامپایل برنامه رو انجام نمیده و ازتمام خطوط برنامه ایراد میگیره ، لطفا راهنمایی بفرمایید
درود بر شما.
احتمالا پک مربوط به میکرو مورد استفاده سمت کیوب و هم سمت کیل باید به صورت جداگانه نصب بشه. پیغام هایی که سمت کیوب دریافت میکنید زمانی که generate رو کلیک میکنید، با دقت بخونید توضیح داده.
با آرزوی بهترین ها.
سلام ببخشید اگر بعد از قسمت debug وارد قسمت setting شدیم و پورت رو sw انتخاب کردیم و سمت راست ارور داد چیکار باید بکنیم؟
درود بر شما.
در صورت داشتن ارور، به این مفهوم هست که اتصال سیم بین پایه ها و یا تغذیه میکرو و دیباگر و یا حتی خود دیباگر دارای مشکل هست. باید مجدد اتصالات رو با دقت بیشتری بررسی کنید.
با آرزوی بهترین ها.
سلام برای stm8 چطور امکان پذیر هستش؟
درود بر شما.
ظاهرا شرکت segger برای stm8 پروگرامر جدا گانه ای ارائه داده، این مورد رو میتونید سرچ کنید برای اطلاعات دقیقتر.
همینطور در نظر داشته باشید که از st-link هم برای پروگرام کردن stm8 میتونید استفاده کنید و شاید گزینه جذابتری باشه.
با آرزوی بهترین ها