راهاندازی LPC1768 بااستفادهاز CMSIS:
CMSIS که اختصار عبارت (Cortex Microcontroller Software Interface Standard) است، درواقع پاسخی است برای نیازهایی که هنگام گسترش نرمافزار در برخورد با میکروکنترلرهای با هستههای Cortex ایجاد میشود. CMSIS برای پردازشگرهای با هسته CORTEX-M که در آینده ایجادخواهندشد نیز گسترشخواهدیافت. CMSIS همکاری گسترده و قوی با تولیدکنندههای مختلف تجهیزات سیلیکونی و نرمافزاری دارد و یک نگرش مشترک برای ارتباط با دستگاههای جانبی، سیستمعاملها و تجهیزات واسط ایجاد میکند. CMSIS برای یک سیستم میکروکنترلی با هسته CORTEX-M بدینصورت تعریف میشود:
- یک راه مشترک و یکسان برای دسترسیبه رجیسترها است و راه همگون برای مشخصکردن بردارهای exception میباشد.
- اسم رجیسترهای هسته و نام بردارهای exception هسته را معین میکند.
- یک واسط بدون وابستگی به دستگاه، برای کرنلهای RTOS ایجاد میکند.
بااستفادهاز CMSIS کاربر میتواند بهراحتی از کدهای یکبار نوشتهشده برای هستههای متفاوت دومرتبه استفادهکند.
بخشهای مختلف CMSIS
پساز بازکردن فولدر LPC17xx.cmsis.driver.library با چندقسمت مختلف روبرو خواهیمبود که عبارتند از:
- Core: این فولدر شامل برنامههای اصلی مربوطبه هستهای است که از آن استفاده میکنیم.
- Drivers: این فولدر شامل تمام هدرها و سورسهای موردنیاز برای امکاناتجانبی میکروکنترلر LPC1768 میباشد.
- Examples: این فولدر شامل مثالهای متنوعاز همه امکانات جانبی میکروکنترلر میباشد که برای آشنایی بیشتر با نحوهی برنامهنویسی CMSIS ایجادشدهاست.
- LPC1700 Peripheral Driver Library Manual: فایل Help برای آشنایی با کلیه قسمتهای CMSIS است.
تا اینجا نگاه مختصری بر CMSIS داشتیم، در بخشبعدی یک برنامهی ساده بااستفادهاز توابع CMSIS ایجاد میکنیم و نحوهی ایجاد یک پروژه را آموزش میدهیم.
ایجاد یک برنامه ساده و استفاده از CMSIS
در این بخش یک برنامهی ساده ایجاد میکنیم و بانحوهی استفادهاز نرمافزار KEIL uVision 4 آشنا میشویم. برای اینمنظور مراحلزیر را بهترتیب طی خواهیمکرد:
برنامه KEIL uVision 4 را بازکرده و از منوی Project گزینه New uVision Project را انتخاب میکنیم و در پنجرهای که باز خواهدشد مسیرمناسب برای ذخیره پروژه را به آن میدهیم و با برگزیدن نام مناسب( firstProject)، برروی Save کلیک میکنیم.
2. پساز ذخیره پروژه از پنجره “Select Device for Target “Target 1 که بصورت خودکار بازخواهدشد، LPC1768 را که در زیرشاخهی (NXP (founded by Philips قراردارد، انتخاب میکنیم و OK را میزنیم.
3. در پنجرهای که بازخواهدشد(پنجره uVision)برروی NO کلیک میکنیم.
4. از قسمت Project بازدن کلید F2 برروی Target 1، نام firstProject را به شاخه میدهیم. همچنین نام Source group1 را به Startup تغییر میدهیم.
5. از مسیر زیر فایل s مربوطبه CMSIS را به پروژه اضافه میکنیم.
…\lpc17xx.cmsis.driver.library\Core\CM3\DeviceSupport\NXP\LPC17xx\startup\arm\ startup_LPC17xx.s
توجهکنید که اگر فایل موردنظر را نمیتوان دید، از قسمت Files of type گزینه (*.*) All files را برگزینید.
6. مجدداً در پنجره Project برروی firstProject کلیکراست کرده و گزینه Add Group را انتخابکنید تا دسته جدیدی به پروژه اضافهشود و نام آن را CMSIS بدهید.
7. در این قسمت میخواهیم کلیه فایلها را به پروژه اضافهکنیم، هرچند انجام این کار روشهای منطقی دیگری نیز دارد اما برای اینکه سادهترین روشممکن را ارائه کردهباشیم چنین عمل میکنیم: در مسیری که پروژه را ایجاد کردهایم یک فولدر جدید بهنام CMSIS Drivers ایجاد میکنیم و تمام فایلهای زیر که مسیر آنها مشخصشدهاست را در این فولدر کپی میکنیم:
…\lpc17xx.cmsis.driver.library\Core\CM3\CoreSupport\همه فایل های این فولدر …\lpc17xx.cmsis.driver.library\Core\CM3\DeviceSupport\NXP\LPC17xx\همه فایل های این فولدر …\LPC1768FBD100\lpc17xx.cmsis.driver.library\Drivers\include\همه فایل ها …\LPC1768FBD100\lpc17xx.cmsis.driver.library\Drivers\source\ همه فایل ها
8. برروی “CMSIS” از پنجره Project کلیکراست کرده و گزینه “Add Files to Group “CMSIS را انتخاب میکنیم.
در پنجرهای که بازخواهد شد به فولدر CMSIS Drivers که در مرحلهی ۷ ایجادکردیم رفته و همه فایلهای این فولدر را به پروژه اضافه میکنیم.
توجه: شاید برای شما این سوال ایجاد بشه که همه این سورسها و هدرها که در برنامه استفاده نمیشود و با اینکار حجم کدهای برنامه افزایش مییابد، آیا انجام اینکار ضرورتی دارد؟ باید به این مساله اشارهکرد که کامپایلر KEIL از سورسها و هدرهایی که شما در برنامهاصلی استفاده میکنید، استفاده میکند و از ایجاد کدهای اضافی برای برنامههایی که استفادهنشده خودداری میکند، پس به هیچوجه نگران ایجاد کدهای اضافی نباشید. راههای اصولی دیگری بهجای اضافهکردن همه کدها موجود است اما در این قسمت از بیان آنها خودداری میشود.
9. برروی firstProject کلیکراست کرده و گزینه Add Group را انتخابکرده و نام این گروه جدید را Main مینامیم که شامل برنامهای خواهد شد که خواهیمنوشت.
10. از منوی File گزینه New را انتخاب میکنیم و پساز آن از منوی File گزینه Save As را انتخابکرده و نام c را به فایل میدهیم و در فولدر پروژه ذخیره میکنیم.
11. برروی شاخه Main کلیکراست کرده و گزینه Add Files to Group ‘Main’ را انتخابکرده و فایل c را به پروژه اضافه میکنیم.
12. تااینجا حداقل کارهای لازم برای هر پروژهای انجامشد، در این مرحله باید برنامهی موردنظر را در فایل c بنویسیم و برنامه را کامپایل کنیم. پساز نوشتن کدهای موردنظر که بهصورتزیر است باید برنامه را کامپایل کنیم.
(int main(void { GPIO_SetDir(1, 0xB0000000, 1); /* PORT1 defined as Output */ }
در این برنامه یکیاز پایههای میکروکنترلر بهصورت خروجی تعریف میگردد که از دستورات GPIO مربوطبه کتابخانه CMSIS می باشد که در آینده بطور مفصل در اینباره سخنخواهیم گفت.
13. پساز نوشتن کدهای موردنظر از منوی Project گزینه Build target را انتخاب میکنیم یا کلید F7 را میزنیم. خواهیمدید برنامه بدون Error کامپایل می گردد.
تا اینجا یک پروژهی ساده را با سادهترین روشها آموزشدادیم، در قسمتهای بعدی هرکدام از قسمتهای میکروکنترلر بااستفادهاز بخشهای CMSIS را توضیحخواهیمداد.
منبع: سیسوگ