AVR, پروژه های سیسوگ, توصیه شده, دسته‌بندی نشده

بوت لودر bootloader جهت میکرو AVR

Sisoog Bootloader

همه چیز در مورد بوت لودر bootloader جهت میکروهای AVR 

به همراه سورس مخصوص کدویژن و همچنین برنامه تحت ویندوز Sisoogloader

 

بوت لودر Bootloader چیست؟

اگر شما هم جزء آن دسته از اشخاصی هستید که بصورت آماتور و حتی حرفه ای برنامه میکرو کنترلر می نویسید متوجه دغدغه آپدیت بعد از تحویل پروژه خود هستید.

برای نمونه شما پروژه ای را تحویل کارفرما میدهید, و تعداد زیادی از اون را هم تولید میکنید.

بعد از مدتی تصمیم میگیرید که سیستم هاتون آپدیت بشند و یا اینکه یک باگ در سیستم مشاهده میکنید که تصمیم میگیرید که اون را رفع کنید!

نگید که قراره همه دستگاهها بازگشت داده بشند و یا اینکه قراره شما یک فایل هگز به کارفرما بدید و بگید برو با این پروگرمر به این شکل دستگاهها را آپدیت کن!

(و احیانا کارفرمای عزیز نیز اگر پول زیادی برای سخت افزار شما داده باشه میتونه فردا به راحتی از این سیستم یک کپی داشته باشد و تولید انبوه کنه 🙂   ( البته این صرفا یک شوخی و احتمال ضعیف هست ).

خب, دقیقا اینجا هست که بوت لودر برای شما میتواند رویایی ترین قابلیت میکرو شود.

از نظر تقسیم بندی و ساختار بوت لودر شامل سه قسمت مهم می باشد.

  • پشتیبانی میکرو کنترلر شما و قابلیت بوت لودر در میکرو شما, برای نمونه میکروهای 8051 از این قابلیت پشتیبانی نمیکرد. ( یعنی این قسمت یک قابلیت سخت افزاری در میکرو شما میباشد)
  • نرم افزاری که بر روی بوت لودر میکرو شما نوشته میشه ( تقریبا مشابه برنامه ای است که در برنامه نویسی اون میکرو استفاده میکنید)
  • نرم افزاری که قرار است اطلاعات برنامه را بر روی میکرو شما ارسال نماید (نرم افزار کامپیوتری یا میکروکنترلری مشابه)

بهترین مثالهایی که بصورت عمومی میتوان برای بحث بوت لودر زد:

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

در دنیای دیجیتال میتوان بایوس کامپیوتر را هم شبیه بوت لودر تجسم کرد, برنامه ای بسیار ساده که وظیفه دارد بستری مناسب فراهم کند که برنامه اصلی ( مثلا ویندوز..) بر روی اون نصب بشه.

 

بوت لودر Bootloader چطور عمل میکند؟

قسمت بوت لودر در میکروکنترلر, آدرسی متفاوت از برنامه اصلی دارد و غالبا نیز حجم کمی از فلش به این قسمت (بوت لودر) اختصاص داده میشود.

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

سپس باید فیوزبیتهای و یا تنظیمات خاص میکرو خود را طوری انجام دهید که میکرو شما به محض ریستارت شده وارد برنامه بوت لودر گردد.

برنامه نوشته شده در این قسمت باید شامل موارد زیر باشد:

  • تا حد امکان ساده و کم حجم
  • ساختار آن باید طوری باشد که هنگام ریستارت کمترین زمان را جهت بررسی ارتباط خارجی صرف نماید.
  • ساختار نوشته شده حتی الامکان نباید نیاز به آپدیت در آینده داشته باشد.

 

بوت لودر و پروگرمر چه تفاوتی با هم دارند؟

 

از نظر ساختار معماری میتوان گقت این دو قسمت, آدرسی کاملا متفاوت در میکروکنترلر شما دارند و این امکان در بوت لودر وجود دارد که میتواند به فلش برنامه اصلی دسترسی پیدا نموده و آن را پاک و بازنویسی نماید.

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

مثلا از طریق بوت لودر و درگاه سریال, I2C , 1Wire و حتی مثلا از طریق GSM Modem و از راه دور توانایی پروگرام کردن را خواهید داشت و این قابلیت مهم بوت لودر هست بدون در نظر گرفتن سخت افزار اضافی میتوانید امکان پروگرام کردن میکرو خود و آپدیت آن را در آینده داشته باشید.

امنیت برنامه در بوت لودر

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

شما میتوانید برنامه میکرو خود را توسط یک کد انکریپت  Encrypt نموده و در برنامه بوت لودر میکرو این اطلاعات توسط کلید شما بازگشایی و پروگرام شود.

 

محاسن و کاربردهای بوت لودر Bootloader:

همانطور که در بالا ذکر شد مهمترین محاسن بوت لودر موارد زیر میباشد:

  • امکان حذف پروگرام جهت پروگرام های بعدی ( شبیه بردهای آردوینو)
  • امکان اینکریپت Encrypt کردن اطلاعات فلش برای واگذاری و ارسال فایل آپدیت به افراد دیگر
  • امکان آپدیت کردن میکرو از درگاههای متفاوت از جمله سریال , بلوتوث , وای فای WIFI , GPRS و …..

نکته مهم:

در ساختار برنامه بوت لودر شما این موضوع باید حتما و با دقت مورد لحاظ قرار گیرد که برنامه بوت لودر حتما از گرفتن اطلاعات درست و بدون مشکل مطمئن شود و بعد اقدام به پروگرم فلش اصلی شما نماید.

مثلا در صورتیکه شما یک پکت از درگاه سریال ارسال می کنید توسط CRC پکت ارسالی و دریافتی را از نظر درست بودن بررسی نمایید.

در ساختاری که از راه دور مقل GPRS  شما سعی میکنید بوت لودر سیستم این کار را انجام دهد ابندا فایل را کاملا دریافت کنید سپس کل فایل ریخته شده را از نظر صحت اطلاعات دریافتی چک نمایید و سپس اقدام به جایگزینی برنامه جدید نمایید.

مطمئن باشید که برنامه فرستاده شده از نظر کارکرد درست است! برای نمونه شما اگر برنامه اشتباهی ارسال کنید دستگاه این برنامه را جایگزین خواهد نمود و علنا برنامه اصلی درستی به کار نخواهد افتاد تا سیستم شما امکان بروز اوری و تصحیح داشته باشد.

در دستگاههای حساس ساختار بوت لودر شما میتواند همزمان از چند بستر امکان بروزآوری داشته باشد: مثلا از بستر سریال, از بستر GPRS  و یا حافظه خارجی مثل مموری کارت… که این امکان را میدهد در صورت بوجود اومدن مشکل بتوان از یک بستر دیگر عملیات بروز آوری انجام گیرد.

 

 

بوت لودر bootloader مخصوص AVR برای کد ویژن CodeVision Avr

در زیر سعی داریم یک نمونه بوت لودر که میتوان بر روی اکثر مدل های AVR اجرا نمود را به همراه سورس کدویژن codevision و برنامه تحت ویندوز تفسیر کنیم.

در ابتدا می ریم سراغ برنامه ای که باید روی میکرو AVR ریخته بشه و نحوه پروگرام اون و نکات مربوط را ذکر میکنیم.

به عنوان مثال نیز سعی میکنیم در زیر یک برنامه بوت لودر تست بر روی سخت افزار  ATMEGA128 و بر روی USRAT1 ریخته و آن پیوست نماییم.

لازم به ذکر است که منبع اصلی برنامه میکرو این پروژه از سایت MicroSyl.com عاریه گرفته شده است و با تغییراتی در نحوه ارتباط و همچنین منطبق کردن آن با کدویژن و نوشتن برنامه اختصاصی تحت ویندوز Sisoogloader در وب سایت سیسوگ منتشر میگردد.

 

codevision bootloader

ساختار فلش و بوت لودر در میکروهای AVR

در ایتدا باید بدونیم که لازم هست در قسمت فیوز بیت ها یک سری تغییرات را اعمال کنیم تا میکرو ما هنگام  ریستارت اول سراغ بوت لودر برود  و برنامه اونجا را اجرا نماید  و صد البته باید حتما در برنامه بوت لودر آدرس دهی مناسبی داشته باشیم تا بعد از اتمام کار بوت لودر میکرو سراغ برنامه اصلی برود که با دستور  زیر این کار انجام می گردد:

 

پس طیق صحبت بالا ابتدا ما بیت BOOTRST را فعال میکنیم تا میکرو به محض ریستارت شدن میکرو وارد اجرای برنامه در قسمت بوت لودر شود

 

BOOTRST BOOTloader

 

سپس لازم است که سایز بوت لودر را توسط BootSZ0 , BootSZ1 تعیین کنیم طبق جدول زیر:

BootSZ Bootloader Bootloader

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

 

AVR Bootloader

 

خب اجازه بدید الان برنامه میکرو را هم یک بررسی کوتاه داشته باشیم..

در برنامه پیوست شده شما باید در فایل Bootloader.h نوع میکرو خود را انتخاب کنید. که ما نیز میکرو تست خودمون یعنی  ATMEGA128 را انتخاب نموده ایم.

 

سپس لازم است که تنظیمات سریال را تنظیم کنید از جمله باودریت و فرکانس …

در زیر  تابع MAIN  برنامه را مشاهده میکنید:

که در ابتدا سعی میشه تنظیمات مربوط به سریال و انجام بشه که مربوط به ارتباط بیرونی خواهد بود و سپس میتوانید حتی با چک کردن نوع سورس ریستارت ساختار مناسب آپدیت برنامه اصلی را مشخص کنید.

سپس طبق یک تراکنش که شامل یک تبادل اطلاعات با برنامه ویندوز Sisoogloader هست میتوانید برنامه اصلی را به صورت صفحه به صفجه بر روی میکرو بریزید.

تابع WriteFlashPage عکلیات پروگرام صفحه به صفحه را انجام میدهد.

 

 

در زیر نیز نمایی از برنامه ویندوز  SisoogLoader را مشاهده میکنید.

Sisoogloader Windows App

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

همچنین لازم است که برنامه اصلی از طریق درگاه سریال بر روی میکرو ریخته شود و برای اینکار لازم است در برنامه ویندوز فایل هگز را انتخاب نمایید و سپس پورت و باودریت مناسب را انتخاب کنید و میکرو را ریستارت نمایید تا روال آپدیت بصورت اتوماتیک انجام گیرد.

 

 

دانلود برنامه ویندوز بوت لودر SisoogLoader

Sisoogtloader-AVR.zip (706 دانلود ها)

دانلود بوت لودر سیسوگ مخصوص کد ویژن

Sisoog-Bootloadr-AVR-Codevision.zip (932 دانلود ها)

 

با توجه به استقبال کاربران و درخواست آنها

سورس نرم افزار ویندوز بوت لودر SisoogLoader که به زبان C# نوشته شده به این پست اضافه گردید.

این برنامه با ویژوال استادیو 2013 کامپایل گردیده است.

Sisoog-Loader.zip (994 دانلود ها)

 

 

 

 

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

18 دیدگاه در “بوت لودر bootloader جهت میکرو AVR

  1. امین گفت:

    سلام ممنون از زحمت وتلاش شما و آموزش این مبحث مهم

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

      خواهش میکنم دوست عزیز 🙂

  2. پوریا گفت:

    سلام
    بابت مطالب عالی سایتتون ازتون تشکر می کنم
    سوالی که دارم اینه که خواستم تنظیمات این بوت لودر را برای mega8 انجام بدم ولی با ارور های کامپایلر مواجه شدم می شه راهنمایی کنید
    با تشکر

    1. سلام دوست عزیز
      پروژتون را که تغییر دادید یه جا اپلود کنید و لینکش را بزارید تا خدمتتون بگم

        1. دوست عزیز با قرار دادن
          #define IVCE 0
          این مشکل حل میشه
          البته بعد از این مشکل به علت اینکه بنده نرم افزار را مبتنی بر سکتورهای 256 بایتی قرار داده ام ( بحث رمز نگاری مطرح بود) کمی زمانبر هست که بر روی Mega8 نیز اوکی کنم
          پیشنهادم این هست که از منبع اصلی که در متن هم به اون اشاره کردم استفاده کنید
          http://www.microsyl.com/index.php/2010/05/06/megaload-u-beta-tester-needed/

  3. پوریا گفت:

    سلام تشکر از برنامه خوبتون
    بنده هم از مگا 128a استفاده میکنم و پروگرمرم TNM2000 هست منتهی هر کار میکنم تارکت رو پیدا نمیکنه و عملااا بوت رو پیدا نمیکنه تا کانکت شم
    لطفا راهنمایی بفرمایید

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

      لطفا وضعیت و نحوه پروگرام کردن فیوز بیت ها رو بررسی کنید
      احتمالا مشکل از اونجا باشه

  4. دهقان گفت:

    سلام. آیا امکانش هست که سورس برنامه ویندوز بوت لودر SisoogLoader را بدید .

    1. سلام
      سعی میکنیم دوست عزیز هفته آینده سورس ویندوز را منتشر کنیم

  5. ehsan گفت:

    سلام خسته نباشید، چیزی که من متوجه شدم page number توسط برنامه ویندوز مشخص میشه. می خواستم بدونم ایا کل ریجستر z ((ادرس wordها و ادرس page ها)) رو مشخص میکنه یا فقط قسمت ادرس دهی page رو؟دقیقا برنامه ویندوز برای میکرو چی ارسال میکنه؟ سوال بعدی اینه که چطوری میشه یه counter گذاشت که خود میکرو page ها رو دونه دونه write کنه؟ مثلا اگه متغییر pageadress رو 2 تا 2 تا اضافه کنم جای دیگه برنامه به مشکل نمیخورم؟
    من میخوام میکرو رو با mmc/sd card توسط کدویژن پروگرم کنم چیزی تو اینترنت پیدا نکردم گفتم بشینم برنامه شمارو تغییر بدم، لطفا اگه میتونید کمک کنید

    1. سلام
      متشکرم از شما
      در ابتدای برنامه از صفحه صفر برنامه ویندوز اولین پیچ را ارسال میکنه
      در صورتیکه تاییدیه از سمت میکرو مبنی بر اینکه اون صفجه از نظر بایتهای تاییدکننده درست باشه و اینکه به درستی پکت را گرفته دریافت کنه یک شماره به سمت بالا میرود و این روند ادامه دار خواهد بود

      ما سعی میکنم در اولین فرصت یک سری اطلاعات مربوط به تبادل شدن سریال سیستم با میکرو را خدمتتون اعلام کنیم
      شما لازمه برای اینکه میکرو را توسط MMC پروگرم کنید لازمه موارد زیر را عملیاتی کنید
      اول اینکه در برنامه بوت لودر MMC را اینیت کنید و همچنین اگر لازمه فت فایل سیستم را
      سپس فایل مورد نظر را اگر وجود داشت پیدا کرده و شروع کنید صفجه صفجه بخونید و دیگه تبادل اطلاعات شبیه انچه که در سریال میبنید وجود نخواهد داشت

      1. HOSI گفت:

        ممنون از جوابتون . با بوت لودر و mmc کار کردم ولی حدف من اینه که توسط یک میکرو یک میکرو دیگه پروگرام کنم
        حالا به روش بوت لودر و یا ISP

        1. دوست عزیز شما برای اینکه از قابلیت بوت لودر استفاده کنید چاره ای ندارید برای یکبار حداقل میکرو خود را توسط یک پروگرامر , پروگرم کنید
          حال این برنامه به شما کمک میکند در اینده نیازی با پروگرمر نداشته باشید
          ولی اگر قصد دارید که عملیات پروگرم کردم مستقیم را توسط یک سخت افزار دیگر انجام دهید اون یک مبحث دیگری است.

  6. hosi گفت:

    ممنون .
    عزیز اگه ما بخوایم با یکی میکرو دیگه دیتا به صورت سریال بفرستیم باید چیکار کنیم.
    مثلا دیتا روی مموری بریزیم یا اینکه با یک ماژول مثل nrf دیتا میکرو اول بریزه و روی میکرو دوم بریزه باید چیکار کنیم
    نرم افزار کامپیوتری اول چی میفرسته .

    1. خواهش میکنم دوست عزیز
      کل فرایند بوت لودر سعی شده توضیح داده بشه
      کلیت کاری هم که لازمه شما انجام بدید این هست که توسط اون ارتباط سخت افزاری پکت ها را دریافت کنید و به تابع write_page فرستاده و منتظر باشید که برنامه جایگزین بشه
      هیچ فرقی نمیکنه شما از چه بستری تمایل دارید اون را اپدیت کنید
      بله متاسفانه کل تبادل را فرصت نشد در یک فایل مجزا پیوست نماییم ولی اگر یکبار پورت سریال را هم اسنیف کنید میتونید به تمام پکتهای دریافت و ارسال شده دسترسی پیدا کنید
      البته داخل برنامه هم همه چیز تقریبا مشخص هست

  7. ehsan گفت:

    سلام، ممنون بابت زحماتتون

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

      سلام
      خواهش می‌کنم دوست عزیز
      خوشحالیم که مطالب مورد توجه قرار گرفته است

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

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