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 و…

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

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

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

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

با این حال هیچ غیر ممکنی وجود ندارد و ممکن است شخصی خود بخواهد دست به ساخت آن بزند ؛ در این خصوص هم هیچ مشکلی وجود ندارد ، به راحتی با مراجعه به پست “دانلود پروگرامر 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 بر روی پروگرامر برنامه ریزی کنید و پروگرامر رو به حالت قبلی برگردونید.

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

تا اینجای کار ، آماده شده ایم برای تغییر فریمور ، برای آپدیت از بخش دانلودها فایل Sisoog st-link Updater را دانلود کرده و از حالت فشرده خارج کنید. فایل 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 نوشته شده است و برای اجرای صحیح آن لازم است دات نت فریمو ورک 4 بر روی سیستم نصب باشد.

برای اطمینان از نصب سرویس فوق به قسمت 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 تغییر دهید.

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

sisoog stlink service stop

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

st-link-update-framware

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

start-update-stlink

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

دانلود ها:

sis-link-Update (118 دانلود ها)
sisoog-link USB Driver (89 دانلود ها)
sisAutoSwitch (84 دانلود ها)

 

نوشته های مشابه

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

  1. SN2001 گفت:

    سلام آقای زئوس کارتون واقعا بی نظیره تو سطح جهانی من تا ب حال نه تو سایت داخلی و نه خارجی کسی رو ندیدم که بتونه و بخواد این کار رو انجام بده شما اراده فولادی دارید.
    بنده چند سوال داشتم امیدوارم پاسخ بدید:
    1-در برنامه Arduino چگونه میتونم Boot loder رو بسوزونم روی میکرو کنترلر؟آیا از Sk500 داخل اردوینو پشتیبانی میکنه؟
    2- از چه میکرو های سری mega پشتیبانی میکنه؟
    Atmega328P-AU
    Atmega328P-PU
    Atmega32U4
    Atmega1280
    Atmega2560
    Attiny85
    و…

    با تشکر 🙂

    1. زئوس Zeus زئوس Zeus گفت:

      سلام دوست عزیز ، خواهش میکنم دوست گرامی
      بله فکر میکنم بردهای آردوینو امکان استفاده از پروتکل STK500 رو دارند و شما میتونید با استفاده از این پروگرامر بوت بودر آردوینو رو پروگرام کنید.
      در مورد میکروهایی که مطرح کردید فقط در مورد atmega32u4 شک دارم که آیا رابط ISP رو پشتیبانی میکند یا خیر
      در نتیجه شما میتونید به سادگی میکروها رو پروگرام کنید.

  2. جعفر خان مراد گفت:

    سلام و عرض ادب احترام
    با تشکر از زحمات شما در مورد مطالب آموزنده
    با توجه به راهنمایی بیشتر در مورد پروگرام کردن
    STM32F103 و اطلاعاتی در مورد پروگرام کردن
    Disk on chip و سخت افزار لازم نیاز به راهنمایی دارم
    لطفا اگر امکان دارد شماره تماس اعلام بفرمائید
    با تشکر

    1. زئوس Zeus زئوس Zeus گفت:

      سلام دوست عزیز
      باعث خوشحالی ماست که مطالب سایت مورد پسند دوستان قرار گرفته است
      برای ازتباط مستقیم با ما میتونید از تلگرام استفاده کنید
      در قسمت ارتباط با ما آیدی تلگرام سیسوگ ذکر شده است.

  3. ali گفت:

    لطفا پایه های خروجی برای spi پروگرمر avr را مشخص کنید .

    1. زئوس Zeus زئوس Zeus گفت:

      سلام
      واقعا خوشحالم از این کامنت – این نشون میده بلاخره یکی میخواد از این پروگرامر واقعا تست بگیره
      بله ترتیب پایه ها به شکل زیر هست

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

  4. saeed گفت:

    سلام،تو قسمت نصب درایورهای USB من به مشکل خوردم اگه ممکنه راهنمایی بکنید ! تو دیوایس منجر اصلا هیچی نشون نمیده ، خوده درایورها که گذاشتین رو میزنم تصب بشه خطا میده :
    sisoog.com()Ports :Install failed

    1. زئوس Zeus زئوس Zeus گفت:

      سلام دوست عزیز ؛ اول بفرمایید که پروگرام شدن به درستی انجام شد ؟!
      بعد از پروگرام وقتی که اس تی لینک رو جدا میکنید و مجددا وصل میکنید نباید نیاز به درایور خاصی داشته باشه و باید به صورت اوتوماتیک St-Link بشناسه !
      بعد از اون Sis-DAP روی داریور HID بنا شده که نیازی به درایور نداره و توی تمام سیستم عامل ها به صورت خودکار شناسایی میشه
      میشه بگید این پیام رو کجا دریافت می کنید.

  5. Hamid Rostami حمید رستمی گفت:

    با عرض سلام و خسته نباشید
    کار بسیار ارزشمندی انجام دادید و واقعا جای تقدیر و تشکر داره
    دوستان خوبی مثل شما باعث خواهند شد تا جامعه اپن سورس هر چه سریعتر و قویتر به پیش بره و شاهد پیشرفت‌های بیشتری باشیم.
    پستهای مربوط به پروگرامی که زحمت طراحیش رو کشیدید خوندم
    سوالی که برای بنده پیش آمده این هست که امکان استفاده از این پروگرامر در سیستم عامل گنو/لینوکس نیز وجود دارد یا خیر؟
    اگر جواب منفی است بنظرم خوب است که مستندات مورد نیاز جهت ایجاد درایور لینوکسی را در اختیار خوانندگان وبسایتتون قرار دهید تا دوستانی که زمان و توانایی انجام کار را دارند در این زمینه نیز بتونن فعالیت داشته باشند تا کار ارزشمندی که انجام دادید در بین جامعه کاربران لینوکس نیز شناخته و استفاده شود.

    1. زئوس Zeus زئوس Zeus گفت:

      سلام و درود دوست عزیز
      خواهش میکنم ، هدف ما اینه که بتونیم حداقل کمکی رو در اختیار دوست دارن الکترونیک قرار بدیم
      بله قطعا به راحتی قابل استفاده است ، احتمالا برای لینوکس از openocd استفاده می کنید ، این پروگرامر هم توسط openocd شناسایی و استفاده میشه ؛ برای قسمت AVR هم که avrdude به راحتی قابل استفاده است
      اگر آموزشی برای لینوکس قرار ندادیم ، به این دلیل بوده که دوستان لینوکسی به راحتی از پس این چالش ها بر میآن 🙂
      انشالله سعی خواهم کرد که این پروگرامر رو کامل تر کنم و البته آموزشی هم برای لینوکس قرار بدم.
      موفق و پیروز باشید.

  6. احسان گفت:

    سلام
    ممنون از زحمات شما
    برنامه اتوسوییچ واسه من کار نمیکنه
    و همچنان stlink شناسایی میشه

    1. زئوس Zeus زئوس Zeus گفت:

      سلام و درود
      ممنون برای گزارش مشکل ، میشه بفرمایید از چه سیستم عامل و نسخه ای استفاده می کنید ؟
      متشکرم

  7. رضا گفت:

    سلام
    خسته نباشید
    پروگرامر sis-link می تونه STM8S003F3P6 پروگرام کنه؟؟؟

    1. زئوس Zeus زئوس Zeus گفت:

      درود دوست عزیز
      متاسفانه توی این ورژن خیر – قطعا توی ورژن های آینده اضافه خواهد شد.

  8. احسان گفت:

    سلام
    فایل آپدیتر قابل دانلود نیست خطا میده
    برای برگردوندن به حالت اول توضیح ندادید ایا امکانش هست پروگرامر های روی بورد های دیسکاوری و نوکلیو که پورت سریال داره اما غیر فعال شده تو فرمور رو درست کرد

    1. زئوس Zeus زئوس Zeus گفت:

      سلام دوست عزیز ، مشکل دانلود فایل حل شد
      در مورد برگرداندن به حالت قبلی – بله حتما توضیح میدیم توی مقاله بعدی
      بله این کار شدنی هست ولی با توجه به محدودیت EndPoint های USB ، امکان ایجاد بیشتر از 3 اینترفیس مختلف وجود نداره که در حال حاظر از هر 3 اینترفیس داریم برای منظوری استفاده می کنیم.

  9. محمد گفت:

    سلام
    لینک دانلود Sisoog-st-link-Updater.zip مشکل داره.

    1. زئوس Zeus زئوس Zeus گفت:

      سلام دوست عزیز ، ببخشید برای تاخیر پیش آمده – مشکل برطرف شده و هم اکنون فایل قابل دانلود است.

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

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