آموزش پروگرام و قفل کردن برنامه در میکروکنترلرهای LPC17XX
به طور کلی برای پروگرام کردن میکروکنترلرهای سری LPC17xx سه راه اصلی وجود دارد
1 – پروگرام کردن توسط پروتکل JTAG توسط پروگرامرهای J-Link ، ,ULINK و Wiggler :
پروگرام کردن میکروکنترلر از این روش نیازمند تهیه پروگرامر مجزا میباشد . به طور مثال پروگرامر J-Link از طریق پورت USB و نرم افزار jlink به کامپیوتر متصل و شناسایی میشود ولی پروگرامر Wiggler از طریق پورت پرینترLPT و نرم افزار H-JTAG . هر دوی این پروگرامر ها قادر است به پروگرام وعیب یابی میکروکنترلر میباشند.
2 – پروگرام کردن توسط بوت لودر ISP از طریق پورت سریال و نرم افزار Flash –Magic :
این بوت لودر توسط شرکت سازنده بر روی حافظه ROM میکروکنترلر ریخته میشود و قادر است ازطریق پورت سریال 0 و نرم افزار Flash-Magic حافظه Flash میکروکنترلر را از طریق دستورات استاندارد ISP-Commands پروگرام نماید . استفاده از این روش نیازمند پروگرامر مجزا ندارد و کافی است پورت سریال 0 توسط مداری مشابه شکل زیر به پورت COM کامپیوتر وصل شود.

3 – پروگرام کردن از طریق بوت لودر ثانویه USB :
علت نام گذاری این بوت لودر به عنوان بوت لودر ثانویه این میباشد که گر چه این بوت لودر توسط شرکت سازنده توسعه داده شده است ولی به صورت پیش فرض روی میکروکنترلرها پروگرام نمیشود. ویژگی اصلی این بوت لودر فراهم کردن امکان پروگرام میکروکنترلر به صورت مستقیم و بدون واسطه توسط پورت USB و کلاس استاندارد USB Mass Storage میباشد . در این روش برای بار اول بوت لودر توسط یکی از دو روش قبلی روی میکروکنترلر پروگرام میشود و بعد از آن زمانیکه میکروکنترلر توسط USB به کامپیوتر وصل شود به عنوان یک حافظه ذخیره سازی شناخته میشود و پروگرام کردن میکرو به سادگی کپی، پیست کردن فایل BIN برنامه داخل این حافظه میباشد.
قفل کردن برنامه :
برای حفاظت از برنامه های پروگرام شده روی میکروکنترلر و جلوگیری از کپی شدن آن میبایست حافظه کد یا همان 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 بیتی میباشند که میبایست با عدد هگز 0xFFFFFFF که مربوط به کلید سطح 0 میباشد جایگزین شوند.
کلید سطح 0 : 0xFFFFFFF
کلید سطح 1 : 0x12345678
کلید سطح 2 : 0x87654321
کلید سطح 3 : 0x43218765
پس از تغییر کلید موبوطه تغییرات را ذخیره نموده ، برنامه را مجددا کامپایل و پروگرام نمایید .
دیدگاه