سلام
دوست عزیز بوت لودر که قفل نمیشه.
قفل کردن قابلیت خواندن و نوشتن روی حافظه فلش میکرو یک امکان سخت افزاری هست و ربطی به محیط توسعه نداره.
بهتره اول با بوت لودر آشنا شیم تا بهتر متوجه بشیم.
بوت لودر یک برنامه است که روی حافظه فلش میکرو قرار میگیره و با شما از داخل میکرو ارتباط برقرار میکنه و فرامین شما رو انجام میده. محیط های توسعه ساده تر مثل بسکام اصلآ بوت لودر ندارند. البته می تونید از بوت لودر استفاده کنید ولی بطور پیش فرض نیازی به بوت لودر ندارند.
در بسکام شما برنامه کامپایل شده رو مستقیمآ روی حافظه فلش منتقل میکنید.
محیط توسعه Arduino یک بوت لودر اختصاصی داره که البته متن باز هست. یعنی شما سورس برنامه اون رو در اختیار دارید.تفاوت یک میکرو Arduino با یک میکرو معمولی در همین بوت لودر هست.
یعنی شما می تونید هر میکرو خام رو که از بازار می خرید، بوت لودر Arduino روش بریزید و در این محیط ازش استفاده کنید و یا بوت لودر رو برد رو پاک کنید.
با پاک کردن بوت لودر دیگه شما از محیط Arduino نمیتونید به برد دسترسی داشته باشید و ارتباط کاملآ قطع میشه.
ولی این به این معنی نیست که برد Arduino شما دیگه غیر قابل استفاده است با کمی سعی و خوندن دستورالعمل های روی سایت اصلی و البته داشتن یک پروگرمر (قطعه سخت افزاری)می تونید دوباره بوت لودر رو روی برد تون بریزید. پس توصیه میکنم اول مراحل ریختن بوت لودر رو روی یک میکرو خام رو تست کنید بعد از اینکه مسلط شدید بوت لودر برد رو پاک کنید تا با مشکل مواجه نشید.
اما آیا پاک کردن بوت لودر به معنای محافظت از برنامه شماست؟
خیر اینطور نیست . همونطور که الان دیگه باید متوجه شده باشید این کار فقط ارتباط Arduino با برد شما رو قطع میکنه ولی همچنان با یک پروگرمر میشه به سادگی برنامه روی میکرو رو خوند و به صورت فایل HEX روی کامپیوتر ذخیره کرد.
برای حفاظت از برنامه روی حافظه فلش شما نیاز دارید تا فیوز بیت های مربوط به قفل برنامه رو فعال کنید. برای اینکار می تونید از یک پروگرمر استفاده کنید. مثلآ با همون روشی که تو بسکام اینکار رو انجام میدید.مثال : برنامه رو در محیط Arduino نوشتید. فایل HEX تولید شده بعد از کامپایل برنامه رو با پروگرمر محیط بسکام باز کنید و پروگرم کنید. فیوز بیتهای قفل رو فعال کنید.
البته می تونید بدون استفاده از پروگرمر هم این کار رو با خود بوت لودر انجام بدید ولی مطمئن شوید که کاملآ اطلاعات کافی را دارید در غیر اینطورت با خطاهای زیادی مواجه خواهید شد.
1- از روی دیتا شیت میکرو و یا با استفاده از یک محاسبه گر (مثل این) مقدار فیوز بیتها رو برای میکرو بدست بیارید.
2- با استفاده از نرم افزار Avrdude که همراه Arduino هست و در حقیقت Arduino از اون برای ارتباط با بوت لودر کمک میگیره مقدار محاسبه شده برای فیوز بیت رو روی اون برنامه ریزی کنید.
چند نکته:
1- قفل کردن برنامه به این معنی نیست که نمیشه از روی میکرو چیزی خوند یا نوشت! با فعال کردن قفل اگر با پروگرمر از روی حافظه Flash بخونید مقادیر اشتباه و بی معنی براتون میفرسته یعنی اگر این مقادیر رو روی یک میکرو دیگه بریزید اصلآ کار برنامه شما رو نمیکنه و یک برنامه بی معنی هست.اگر هم روش بنویسید که برنامه قبلی پاک میشه.
2- قفل ها تا حد امکان از برنامه شما حفاظت میکنند و البته سخت افزاری هستند. ولی در مواردی ادعا شده که این حفاظت قابل شکستن است! ( من تا به حال فقط این ادعا رو شنیدم ولی یک دستور یا برنامه مشخص برای AVR تا به حال ندیدم. چند سال پیش برای میکرو های 8051 سری C ساخت Atmel یک برنامه از اینترنت گرفتم و تست کردم، تا حدودی بد نبود و کار میکرد.به هر حال میتونید تو اینترنت بگردید.)
3-برای حفاظت کامل می تونید : 1- بوت لودر رو پاک کنید 2- فیوز بیتهای قفل رو فعال کنید 3- فیوز بیت مربوط به ISP (برنامه ریزی سریال) رو غیر فعال کنید 4- در صورتی که میکرو JTAG داره فیوز بیت مربوط به اون رو غیر فعال کنید. در این صورت حداکثر تدابیر ممکن رو لحاظ کردید.البته فراموش نکنید که دیگه با پروگرمر های عادی به این میکرو دسترسی ندارید و فقط با یک پروگرمر گرون قیمت که می تونه موازی برنامه ریزی کنه می تونید میکرو رو به حالت اولیه بر گردونید.
موفق باشید