راه اندازی 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 را به پروژه اضافه می کنیم.
1 | …\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 که در مرحله 7 ایجاد کردیم رفته و همه فایل های این فولدر را به پروژه اضافه می کنیم.
توجه : شاید برای شما این سوال ایجاد بشه که همه این سورس ها و هدر ها که در برنامه استفاده نمی شود و با این کار حجم کدهای برنامه افزایش می یابد، آیا انجام این کار ضرورتی دارد؟
باید به این مساله اشاره کرد که کامپایلر KEIL از سورس ها و هدر هایی که شما در برنامه اصلی استفاده می کنید، استفاده می کند و از ایجاد کدهای اضافی برای برنامه هایی که استفاده نشده خودداری می کند، پس به هیچ وجه نگران ایجاد کدهای اضافی نباشید. راه های اصولی دیگری به جای اضافه کردن همه کدها موجود است اما در این قسمت از بیان آنها خودداری می شود.
9. بر روی firstProject کلیک راست کرده و گزینه Add Group را انتخاب کرده و نام این گروه جدید را Main می نامیم که شامل برنامه ای خواهد شد که خواهیم نوشت.
10. از منوی File گزینه New را انتخاب می کنیم و پس از آن از منوی File گزینه Save As را انتخاب کرده و نام c را به فایل می دهیم و در فولدر پروژه ذخیره می کنیم.
11. بر روی شاخه Main کلیک راست کرده و گزینه Add Files to Group ‘Main’ را انتخاب کرده و فایل c را به پروژه اضافه می کنیم.
12. تا اینجا حداقل کارهای لازم برای هر پروژه ای انجام شد، در این مرحله باید برنامه مورد نظر را در فایل c بنویسیم و برنامه را کامپایل کنیم. پس از نوشتن کدهای مورد نظر که بصورت زیر است باید برنامه را کامپایل کنیم.
1 2 3 4 5 6 7 | (int main(void { GPIO_SetDir(1, 0xB0000000, 1); /* PORT1 defined as Output */ } |
در این برنامه یکی از پایه های میکروکنترلر به صورت خروجی تعریف می گردد که از دستورات GPIO مربوط به کتابخانه CMSIS می باشد که در آینده بطور مفصل در این باره سخن خواهیم گفت.
13. پس از نوشتن کدهای مورد نظر از منوی Project گزینه Build target را انتخاب می کنیم یا کلید F7 را می زنیم. خواهیم دید برنامه بدون Error کامپایل می گردد.
تا اینجا یک پروژه ساده را با ساده ترین روش ها آموزش دادیم، در قسمت های بعدی هر کدام از قسمت های میکروکنترلر با استفاده از بخش های CMSIS را توضیح خواهیم داد.
اگه ممکنه ورژن ۵ کیل و یه نگاه بندازید
کیل 5 رو با توجه به مشکلی که با J-Link کرک شده داره ؛ سراغش نرفتیم ولی در نهایت فرق چندانی با عمین 4 نداره تنها باید PAck مربوطه رو هم نصب کنید