پروگرامر Sis-Link ساخت پروگرامر ARM و AVR: دگردیسی

0
698
پروگرامر Sis-Link ساخت پروگرامر ARM و AVR
پروگرامر Sis-Link ساخت پروگرامر ARM و AVR

پروگرامر sis-link

در قسمت قبل (معرفی پروگرامر Sisoog-Link) به معرفی و قابلیت‌های پروگرامر sisoog-link پرداختیم، قابلیت‌های منحصربه‌فردی که شاید با تکیه‌بر آنها بتوان پروگرامر sisoog-link را یک پروگرامر حرفه‌ای خواند، پیاده‌سازی و برنامه‌نویسی این پروگرامر هفته‌ها وقت گرفته‌است. نه‌تنها این مطلب بلکه غالب مطالب منتشرشده دارای کیفیت بالایی هستند که همگی با صرف‌وقت و هزینه شخصی انجام‌شده‌است و به جرات میتوان گفت حتی برخی مطالب نمونه خارجی هم ندارند، شاید میتوانستیم در این زمان پروژه‌های پولسازی را پیاده‌سازی کنیم، اما همانطورکه قبلا هم اشاره کرده‌ایم “پول” دغدغه ما نیست، دغدغه ما کمک به افراد علاقمند و ارتقاء فرهنگ اشتراک‌گذاری و جاانداختن مفهوم Open Source است.

تا جای‌ممکن سعی کرده‌ایم که پروگرامر Sisoog-link ساده و کاربردی باشد، برای همین قید طراحی سخت‌افزار را زدیم و از یک نمونه آماده خیلی ارزان قیمت (پروگرامر کوچک ST-Link) به‌عنوان سخت‌افزار استفاده‌کردیم، البته این انتخاب چالش‌هایی را دربرداشت که خوشبختانه بر آنها فائق آمدیم و تمام تمرکز خود را برروی نرم‌افزار گذاشتیم. به‌نحوی‌که پروگرامر قادر باشد به‌صورت مستقیم و بدون واسطه در کامپابلرهای رایگان و غیررایگان مورد‌استفاده قراربگیرد.

بگذارید گذری‌به مقاله قبل بزنیم و قابلیت‌های پروگرامر Sisoog-link را با هم مرور کنیم:

  • سخت افزار ارزان و در دسترس
  • پشتیبانی از بوت لودر جهت بروز رسانی فریمور
  • پشتیبانی از رابط SWD برای پروگرام میکروکنترلر ARM
  • پشتیبانی از رابط ISP برای پروگرام میکروکنترلر AVR
  • پشتیبانی از پروتکل STK500 جهت ارتباط مستقیم با نرم افزار های Codevision و Bascom Avr و
  • AtmelStudioپشتیبانی از پروتکل CMSIS-DAP برای ارتباط مستقیم با نرم افزار های Kail و IAR
  • پشتیبانی از تمام هسته های Cortex-m نظیر تمام خانواده های ST برخی میکروهای جدید NXP و Atmle و…

البته هنوز کار طراحی این پروگرامر تمام‌نشده‌است و درحال اضافه‌کردن آی‌سی‌های حافظه هستیم(حدود ۱۰۰نوع آی‌سی مختلف) که در اکثر دستگاه‌های الکترونیکی مورد‌استفاده قرار می‌گیرند و در ارتقاء‌های آینده این پروگرامر دردسترس خواهد بود.

برای ساخت sis-link از کجا شروع کنیم؟

مشخص‌است اولین گام؛ تهیه سخت‌افزار است، اما برای تهیه سخت‌افزار راه‌های مختلفی وجود دارد، اعم‌از ساخت آن یا استفاده‌از سخت‌افزار آماده یا استفاده‌از پروگرامر موجود برروی بردهای دیسکاوری؛ بگذارید اینطور دسته‌بندی کنیم، شما سخت‌افزار ST-Link را موجود دارد یا موجود ندارید. اگر که سخت‌افزار ST-link را موجود ندارید، احتمالا یا باید آن‌را از بازار تهیه‌کنید یا آن‌را خودتان بسازید.

اگر قصد تهیه آن‌را از بازار دارید دو انتخاب خواهید داشت، اول اینکه سخت‌افزار رسمی ارائه‌شده توسط ST را خریداری‌کنید یا اینکه دانگل پروگرامر ST که خیلی کوچک و ارزان است را تهیه‌کنید، در زمان نوشتن این مقاله قیمت پروگرامر ST-Link که توسط شرکت ST ارائه‌شده‌است حدود ۵۰هزارتومان و قیمت پروگرامر دانگل (پروگرامر کوچک ST-link) هم حدود ۱۹هزارتومان است! و به‌راحتی میتوانید از بازار تهیه‌کنید‌؛ یکی‌از دلایل انتخاب این سخت‌افزار؛ دقیقا قیمت مناسب تهیه آن است شاید با‌توجه‌به قیمت‌های موجود اصلا برای کسی صرفه نداشته‌باشد که بخواهد سخت‌افزار آماده که جعبه هم دارد، کانکتور مناسب هم دارد را کنار بگذارد و خود دست به ساخت آن بزند.

با اینحال هیچ غیرممکنی وجود‌ندارد و ممکن‌است شخصی خود بخواهد دست به ساخت آن بزند؛ در این خصوص هم هیچ مشکلی وجود ندارد، به‌راحتی با‌مراجعه‌به پست “دانلود پروگرامر ST LINK به همراه سورس” که قبلا منتشر کردیم این سخت افزار ارزان قیمت را بسازید.

چطور پروگرامر را پروگرام کنیم ؟!

این قسمت از پروژه واقعا چالش بود و دقیقا مصداق “هرچه بگندد نمکش می‌زنند وای به روزی که بگندد نمک” یا این سوال فلسفی که “اول مرغ بوده یا تخم مرغ” ؛ ممکنه در نگاه اول بی‌ربط به‌نظر‌برسه همونطورکه برای ما به‌نظر می‌رسید ولی واقعا این‌طور نیست؛ از اونجایی‌که تا پیش‌از این سخت‌افزار ST-Link میکروکنترلرهای دیگر شرکت‌ها رو پروگرام نمیکرد، پس منطقی است وقتی بخوایم دیگر میکروکنترلرها رو هم کار بکنیم باید یه پروگرامر دیگه هم داشته‌باشیم که برای ما میشه پروگرام J-Link ؛ پس با پروگرامر J-Link آی‌سی موجود روی پروگرامر ST-Link رو پروگرام می‌کنیم!

حالا اگر شخصی رو فرض‌کنیم که هیج مدل پروگرامر دیگه‌ای نداره چی؟! اون باید چکار کنه؟ چطور پروگرامر ST-Link خودش رو به پروگرامر همه‌کاره sisoog-link تبدیل‌کنه؟ دقیقا این اون چالشی بود که درموردش صحبت کردم، و شاید یکی‌از وقت‌گیرترین قسمت‌های این پروژه بود!

اگر بخوایم مرور کنیم، اگر شما پروگرامری جز st-link دراختیار دارید یااینکه دوتا پروگرامر st-link در اختیار دارید،

که به‌راحتی فایل hex (دانلود از قسمت دانلودها) مربوط‌به پروگرامر sisoog-link دانلود و پروگرام کنید و پروگرامرتون رو به sisoog-link تبدیل‌کنید. اما اگرچنین امکانی را در اختیار نداشته‌باشید احتمالا باید به‌جایی یا شخصی مراجعه‌کنید که این‌کار را انجام بدهد و معمولا پیداکردن چنین شخصی کار ساده‌ای نیست!

ما به راه سومی هم فکرکردیم، راهی‌که خیلی‌ساده و دردسترس باشد، نیازی‌به در اختیارداشتن چند پروگرامر نباشد، راهی‌که خیلی ساده و بدون دست‌کاری سخت‌افزاری باشد، این‌راه درواقع نیاز بخش تحقیقاتی داشت که تحت‌عنوان “هک پروگرامر st-link” منتشر کردیم. که در ادامه بیشتر به جزییات این دگردیسی خواهیم‌پرداخت.

آپدیت پروگرامر st-link به sisoog-link

قبل‌از هر مقدمه‌ای بگذارید این اطمینان‌خاطر را بدهم که در‌صورتی‌که از پروگرامر sisoog-link راضی نبودید به‌راحتی میتوانید پروگرامر st-link را به‌حالت قبلی برگردانید–پس نگران این موضوع نباشد که این راه یک‌طرفه است! در مقاله “هک پروگرامر st-link” که در قسمت قبل معرفی‌کردیم آموزش‌دادیم چطور برنامه دلخواه را با‌استفاده‌از بوت لودر موجود برروی st-link روی آن برنامه‌ریزی کنیم؛ مزیت استفاده‌از این روش آن است که به‌راحتی می‌توان فریمور اصلی st-link را بااستفاده‌از ابزارهای شرکت st برروی پروگرامر برنامه‌ریزی کنید و پروگرامر رو به‌حالت قبلی برگردونید.

برای اولین قدم لازم است که جاوا را نصب کنید، از اونجایی‌که متاسفانه شرکت اوراکل دسترسی دانلود را برای کشور ایران محدود کرده، برای سهولت جاوا ورژن ۱.۸ را برای دانلود قرارداده‌است. بعد‌از دانلود و نصب جاوا لازمه که درایورهای مربوط‌به st-link را نصب‌کنید، برای دانلود می‌توانید به این صفحه از سایت شرکت مراجعه‌کنید. بعد‌از نصب درایورها درصورتی‌که مراحل نصب به‌صورت درست انجام شده‌باشد، در قسمت device manager ویندوز ، باید اسم st-link را مشاهده‌کنید.

device manager ویندوز
device manager ویندوز

 

تا اینجای کار، آماده شده‌ایم برای تغییر فریمور، برای آپدیت از بخش دانلودها فایل Sisoog st-link Updater را دانلود‌ کرده و درجایی از درایو C از حالت فشرده خارج کنید. فایل STLinkUpgrade.jar را اجرا کنید، برای اجرای آن به‌راحتی روی آن دابل‌کلیک کنید. بعد‌از اجرا باید پنجره‌ای مثل عکس‌زیر ظاهرشود.

اجرای فایل STLinkUpgrade.jar
اجرای فایل STLinkUpgrade.jar

 

چناچه پروگرامر st-link متصل باشد و درایور های آن به‌صورت صحیح نصب‌شده‌باشد باید سریال پروگرامر درمقابل ST-Link ID به‌نمایش درآید. برروی کلید Open in update mode کلیک‌کنید، تا نسخه کنونی فرمور st-link به‌نمایش درآید.

نمایش نسخه فرمور
نمایش نسخه فرمور

 

بعداز نمایش نسخه فرمور، برای شروع بروزرسانی برروی کلید upgrade کلیک‌کنید تا فرایند بروزرسانی شروع شود.

بروزرسانی نسخه فرمور
بروزرسانی نسخه فرمور

 

بعداز آن صبرکنید تا فرایند بروزرسانی کامل‌شود و پیام Update successful در پایین پنجره به‌نمایش در‌آید.

 Update successful
Update successful

 

خوب تبدیل انجام‌شد، الان شما پروگرامر sisoog-link دارید به‌همین راحتی و خوشمزگی (البته از اول اینطور نبود و بعداز کلی مشقت به این درجه نائل شد).

نصب درایورهای USB

درایورهای USB
درایورهای USB

 

پروگرامر sisoog-link درواقع از سه رابط usb مجزا تشکیل‌شده‌است، رابط اول که درواقع رابط پروگرامر ARM است و از استاندارد CMSIS-DAP و از پروتکل HID استفاده میکند که نیازی‌به درایور ندارد و به‌صورت خودکار توسط ویندوز شناسایی می شود. پس اگر قصد برنامه ریزی ARM با‌استفاده‌از keil و IAR و.. را دارید جای نگرانی نیست و بدون نصب درایور قادر خواهید‌بود که میکروکنترلر مورد‌نظر را پروگرام و دیباگ کنید. لازم‌به‌ذکر است که نه‌تنها میکروکنترلرهای st بلکه تمام میکروکنترلرهای Cortex-m از تمام شرکت‌ها قابل برنامه‌ریزی هستند (حتی برد‌های Raspberry PI بعدها درموردش بیشتر خواهیم نوشت).

پورت Sis-Link
پورت Sis-Link

 

اما دو رابط دیگه هم وجود داره که هردو از نوع مبدل USB به سریال هستند، و برای نصب اون‌ها باید درایور مربوطه را نصب کنید، برای دانلود درایورها به بخش دانلودها درانتهای همین پست مراجعه کنید. یکی‌از رابط‌ها مخصوص پروگرامر STK500 است و دیگری رو برای استفاده در نرم‌افزار FLASHROM قرار‌دادیم که فعلا از اون استفاده‌ای نمیشه. اگر داریور‌ها رو نصب کنید‌، دو عدد پورت سریال به پورت‌های کامپیوتر اضافه می‌شود که به‌سادگی با‌توجه‌به نام پورت‌ها کاربرد آنها مشخص است.

پورت COM22و COM23
پورت COM22و COM23

 

رفع یک نقص جزئی

اتفاقی‌که می‌افته از این قراره که اگر پروگرامر را از پورت USB جدا‌کنید و دوباره مجدا وصل‌کنید پروگرامر st-link شناسایی میشه! و این به‌خاطر نحوه عملکرد بوت لودر است، در ابتدای اتصال برنامه در قسمت بوت لودر میماند و از آن خارج نمیشود تا این‌که اولین دستور برای کانکت‌شدن ازطریق کامپیوتر ارسال بشه، بعداز اون میکروکنترلر از بوت لودر خارج میشه و برنامه قسمت User اجرا میشه!

اما راه چاره چیست ؟ ، یکی‌از راه‌ها اینه‌که بعد‌از اتصال پروگرامر به پورت USB، نرم‌افزار st-link رو بازکنید و سعی‌کنید کانکت رو بزنید، بعداز اینکار خواهید دید که پروگرامر sis-link فعال خواهد شد.

فعالسازی پروگرامر sis-link
فعالسازی پروگرامر sis-link

 

که چندان این کار جالب نیست! برای حل این مساله، برنامه‌ای نوشتیم که با اضافه‌شدن‌به سرویس ویندوز به‌صورت اتوماتیک این‌کار را انجام خواهد داد. تنها کافی‌است آن‌را با نام sisAutoSwitch از قسمت دانلود‌ها دریافت نمایید و بعد‌از خارج‌کردن از حالت فشرده (برنامه را مثلا در درایو C قرار دهید یا جایی‌که پاک نشود) فایل install Service.bat را اجرا نمایید، نرم‌افزار به‌صورت اتوماتیک پروگرامر را شناسایی‌کرده و آن‌را از حالت بوت لودر خارج خواهد کرد بدون این‌که شما نیاز باشد کاری انجام‌دهید.

دقت‌داشته‌باشید این برنامه با .net نوشته‌شده‌است و برای اجرای صحیح آن لازم است دات نت فریمو ورک۴ برروی سیستم نصب باشد.

برای اطمینان از نصب سرویس فوق به قسمت service های ویندوز بروید و به‌دنبال Sisoog StLink Auto Switch بگردید!

نصب سرویس ها
نصب سرویس ها

 

در قسمت آینده به‌نحوه استفاده‌از پروگرامر sis-link را در نرم‌افزار‌های keil و iar خواهیم پرداخت. با ما همراه باشید و پروگرامر های sis-link خود را آماده کنید.

تمام برنامه‌های نوشته‌شده برای پروگرامر sis-link مورد آزمایش قرار گرفته‌اند و از صحت عملکرد آنها مطمئن هستیم بااینحال احتمال وجود خطا صفر نیست و ممکن‌است جایی در روال‌ها به‌خطا بربخورید ، پس اصلا نگران‌نباشید هر سوال یا خطایی بود همینجا مطرح‌کنید ، ما آن‌را بررسی‌خواهیم‌کرد و سعی می‌کنیم آن را رفع‌کنیم.

احیای پروگرامر st-link

بعد‌از تبدیل پروگرامر ST-link به sis-link، همچنان این امکان وجود دارد که پروگرامر خود را به‌حالت اولیه یعنی st-link برگردانی، برای این کار تنها کافی‌است که چندگام زیر را به‌صورت مرحله‌به‌مرحله انجام دهد.

ابتدا به قسمت Services در کنترل پنل بروید و سرویس Sisoog StLink Auto Switch را از حالت Start به حالت Stop تغییر دهید.

انجام این کار باعث میشود که بعداز اتصال پروگرامر به کامپیوتر از حالت بوت لودر خارج نشود.

stop Sisoog StLink Auto Switch
stop Sisoog StLink Auto Switch

 

بعد‌از این مرحله پروگرامر را به کامپیوتر وصل‌کرده و نرم‌افزار STM32 ST-LINK Utility را اجرا کنید و از منوی ST-Link زیر منوی Firmware update را انتخاب‌کنید.

اجرای نرم افزار STM32 ST-LINK Utility
اجرای نرم افزار STM32 ST-LINK Utility

 

در پنجره‌ی بازشده بر روی Device Connect کلیک‌کرده تا اطلاعات مربوط‌به پروگرامر به‌نمایش درآید بعداز آن برروی کلید yes کلیک‌کنید تا پروگرامر به st-link آپدیت شود.

آپدیت پروگرامر st-link
آپدیت پروگرامر st-link

 

بله، به‌همین‌سادگی می‌توانید پروگرامر را به‌حالت قبل برگردانید!

 

MOSI -> SWIM
MISO -> SWDIO
SCK -> SWCLK
Reset -> Reset

فایل‌های دانلودی موردنیاز

sisAutoSwitch

sislink_autoupdate

USB_Driver

 

 

منبع:سیسوگ

مطلب قبلیهمه چیز درباره باتری ها قسمت دوم : مشخصات و اصطلاحات
مطلب بعدیهمه چیز درباره باتری ها قسمت سوم : مشخصات و اصطلاحات

پاسخ دهید

لطفا نظر خود را وارد کنید!
لطفا نام خود را در اینجا وارد کنید