برای حفاظت از برنامه های پروگرام شده
روی میکروکنترلر و جلوگیری از کپی شدن آن میبایست حافظه کد یا همان
ROM برنامه قفل شود.
با انجام این کار حافظه ROM برای
پروگرامر غیر قابل دسترس میشود و تنها امکان پاک کردن حافظه و برنامه ریزی مجدد آن
وجود دارد.
در میکروکنترلرهای
AVR با استفاده از
فیوز بیت ها به راحتی میشد برنامه های پروگرام شده روی میکرو را قفل کرد.
ولی در میکروکنترلرهای آرم فیوز بیتی وجود ندارد و تمام تنظیمات مربوط به
منابع کلاک و قفل حافظه توسط برنامه نوشته شده توسط کاربر تعیین و پس از اجرا فعال
میشود.
به طور کلی برای تنظیمات حفاظتی 4 سطح
مخلتف تعیین شده است که با قرار گرفتن میکروکنترلر در هر یک از این حالت ها سطح
امنیتی تعریف شده برای آن سطح فعال میشود. توجه کنید که برای اعمال تغییر
سطوح میکروکنترلر میبایست یک بار ریست شود.
سطح 0 : یا بدون قفل , در این سطح هیچ محدودیتی برای پروگرام ،
بازنگری و خواندن حافظه توسط پروتکل JTAG و ISP وجود ندارد. این
سطح به صورت پیشفرض فعال میباشد.
سطح 1 : در این سطح پروتکل JTAG به صورت کامل غیر فعال میشود و پروگرام کردن میکروکنترلر تنها از طریق
ISP میسر میباشد.
همچنین دستورات ISP مربوط به خواندن
و مقایسه حافظه نیز غیر فعال میشود. ولی همچنان امکان پاک کردن تک تک سکتورهای
حافظه و برنامه ریزی مجدد آن وجود دارد. این روش مناسب مواقعی میباشد که برنامه
های پروگرام شده نیاز به آپدیت داشته باشد.
سطح 2 : این سطح تقریبا شبیه سطح 1 میباشد با این تفاوت که در این
سطح دستورات ISP مربوط به نوشتن در حافظه RAM و کپی از ROM به Flash نیز غیر فعال میشود و تنها امکان پاک کردن یکباره کل
حافظه و برنامه ریزی مجدد آن وجود دارد.
سطح 3 : این سطح مشابه سطح 2 میباشد با این تقاوت که در این سطح در
صورتی که برنامه ی معتبری در سکتور 0 حافظه فلش وجود داشته باشد پروتکل ISP نیز
غیر فعال میشود. یعنی اگر این سطح فعال شود هر گونه پروگرام کردن
میکروکنترلر از طریق ISP و JTAG غیر فعال فعال میشود ، مگر اینکه برنامه معتبری روی میکروکنترلر
پروگرام نشده باشد. پس برنامه پروگرام شده با این سطح امنیتی آخرین برنامه ای
خواهد بود که روی میکرو پروگرام میشود و تنها در صورتی از آن استفاده کنید که نیازی به آپدیت
نداشته باشید.
فعال کردن هر یک از این سطوح توسط
تغییر فایل startup_LPC17xx.s انجام
میشود. توسط خود کیل و یا
نرم افزار Notepad این
فایل را باز کنید و به دنبال عبارت CRP_Key بگردید.
CRP_Key DCD 0xFFFFFFF
هر یک از سطوح دارای یک کلید 32 بیتی
میباشند که میبایست با عدد هگز 0 xFFFFFFF 0 که
مربوط به کلید سطح 0 میباشد جایگزین شوند.
کلید سطح 0 : 0xFFFFFFF
کلید سطح 1 : 0x12345678
کلید سطح 2 : 0x87654321
کلید سطح 3 : 0x43218765
پس از تغییر کلید موبوطه تغییرات را
ذخیره نموده ، برنامه را مجددا کامپایل و پروگرام نمایید .
خوب بود متشکریم امیدوارم ادامه بدهید