پروگرامر 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 را مشاهدهکنید.
تا اینجای کار، آماده شدهایم برای تغییر فریمور، برای آپدیت از بخش دانلودها فایل Sisoog st-link Updater را دانلود کرده و درجایی از درایو C از حالت فشرده خارج کنید. فایل STLinkUpgrade.jar را اجرا کنید، برای اجرای آن بهراحتی روی آن دابلکلیک کنید. بعداز اجرا باید پنجرهای مثل عکسزیر ظاهرشود.
چناچه پروگرامر st-link متصل باشد و درایور های آن بهصورت صحیح نصبشدهباشد باید سریال پروگرامر درمقابل ST-Link ID بهنمایش درآید. برروی کلید Open in update mode کلیککنید، تا نسخه کنونی فرمور st-link بهنمایش درآید.
بعداز نمایش نسخه فرمور، برای شروع بروزرسانی برروی کلید upgrade کلیککنید تا فرایند بروزرسانی شروع شود.
بعداز آن صبرکنید تا فرایند بروزرسانی کاملشود و پیام Update successful در پایین پنجره بهنمایش درآید.
خوب تبدیل انجامشد، الان شما پروگرامر sisoog-link دارید بههمین راحتی و خوشمزگی (البته از اول اینطور نبود و بعداز کلی مشقت به این درجه نائل شد).
نصب درایورهای USB
پروگرامر sisoog-link درواقع از سه رابط usb مجزا تشکیلشدهاست، رابط اول که درواقع رابط پروگرامر ARM است و از استاندارد CMSIS-DAP و از پروتکل HID استفاده میکند که نیازیبه درایور ندارد و بهصورت خودکار توسط ویندوز شناسایی می شود. پس اگر قصد برنامه ریزی ARM بااستفادهاز keil و IAR و.. را دارید جای نگرانی نیست و بدون نصب درایور قادر خواهیدبود که میکروکنترلر موردنظر را پروگرام و دیباگ کنید. لازمبهذکر است که نهتنها میکروکنترلرهای st بلکه تمام میکروکنترلرهای Cortex-m از تمام شرکتها قابل برنامهریزی هستند (حتی بردهای Raspberry PI بعدها درموردش بیشتر خواهیم نوشت).
اما دو رابط دیگه هم وجود داره که هردو از نوع مبدل USB به سریال هستند، و برای نصب اونها باید درایور مربوطه را نصب کنید، برای دانلود درایورها به بخش دانلودها درانتهای همین پست مراجعه کنید. یکیاز رابطها مخصوص پروگرامر STK500 است و دیگری رو برای استفاده در نرمافزار FLASHROM قراردادیم که فعلا از اون استفادهای نمیشه. اگر داریورها رو نصب کنید، دو عدد پورت سریال به پورتهای کامپیوتر اضافه میشود که بهسادگی باتوجهبه نام پورتها کاربرد آنها مشخص است.
رفع یک نقص جزئی
اتفاقیکه میافته از این قراره که اگر پروگرامر را از پورت USB جداکنید و دوباره مجدا وصلکنید پروگرامر st-link شناسایی میشه! و این بهخاطر نحوه عملکرد بوت لودر است، در ابتدای اتصال برنامه در قسمت بوت لودر میماند و از آن خارج نمیشود تا اینکه اولین دستور برای کانکتشدن ازطریق کامپیوتر ارسال بشه، بعداز اون میکروکنترلر از بوت لودر خارج میشه و برنامه قسمت User اجرا میشه!
اما راه چاره چیست ؟ ، یکیاز راهها اینهکه بعداز اتصال پروگرامر به پورت USB، نرمافزار st-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 تغییر دهید.
انجام این کار باعث میشود که بعداز اتصال پروگرامر به کامپیوتر از حالت بوت لودر خارج نشود.
بعداز این مرحله پروگرامر را به کامپیوتر وصلکرده و نرمافزار STM32 ST-LINK Utility را اجرا کنید و از منوی ST-Link زیر منوی Firmware update را انتخابکنید.
در پنجرهی بازشده بر روی Device Connect کلیککرده تا اطلاعات مربوطبه پروگرامر بهنمایش درآید بعداز آن برروی کلید yes کلیککنید تا پروگرامر به st-link آپدیت شود.
بله، بههمینسادگی میتوانید پروگرامر را بهحالت قبل برگردانید!
MOSI -> SWIM
MISO -> SWDIO
SCK -> SWCLK
Reset -> Reset
فایلهای دانلودی موردنیاز
منبع:سیسوگ