در مقالهی سوم آموزش رزبری پای، به پیکربندی و نصب ابزار موردنیاز برای کامپایل برنامه و همچنین اجرای اولین برنامهی آموزشی بر روی بردهای رزبری پای پرداختیم. دراین مقاله قصد داریم نحوهی نصبو کانفیگ ویرایشگرمتن (ادیتور) ایکلیپس (Eclipse) را آموزش دهیم بگونهایکه قادرباشیم بااستفادهاز این ویرایشگر برای رزبری پای کدنویسی کنیم. تااین مرحلهاز آموزشها شما قادر هستید که برنامهی موردنظر خود را بنویسید و برای اجرا بر روی رزبری پای آماده کنید. اما یک خلاء بزرگ در این میان احساس میشود و آنهم وجود یک ویرایشگر قدرتمند است که کار برنامهنویسی را علاوه بر راحتکردن، تاحدودزیادی نیز جذاب میکند. برای آشنایی با ادیتورها و نحوهی نصبو کانفیگ آنها با ما همراه باشید.
معرفی انواع ویرایشگر متن (ادیتور)
بله البته هنوز امکان نوشتن برنامه در notepad یا ویرایشگرهای متنی ساده وجود دارد ولی مسئلهی مهمی که مطرح میشود سرعت نوشتن برنامه و خوانایی آن است. با رشد برنامه و اضافهشدن توابع مختلف به برنامه، بهخاطرسپردن اسم تابعها و متغیرها تقریباً غیرممکن است و برای استفاده و صدازدن آنها باید اول بهدنبال اسم آنها بگردید بعد پارامترهای ورودی را پیدا کنید و… ؛ این کار بسیار دشوارو طاقتفرسا است. ازطرفی ویرایشگرهای مخصوص برنامهنویسی علاوه بر قابلیت کدکامپلیشن، با رنگیکردن قسمتهای برنامه خوانایی آنرا افزایش داده و به درک برنامه کمک زیادی میکنند.
عکس سمت راست، محیط یک ویرایشگر ساده را نشان میدهد و عکس سمت چپ، یک ویرایشگر حرفهای که قابلیتهای زیادی دارد. برای زبانهای برنامهنویسیِ متفاوت، ویرایشگرهای متفاوتی وجود دارد. برخی از ویرایشگرها هم قادربه پشتیبانیاز چند زبان مختلف هستند. در کار سختافزار و برنامهنویسیِ سیستمی، بیشتر زبان C و ++C مورد استفاده قرار میگیرند و ویرایشگری که بهدنبال آن هستم باید قادربه پشتیبانی از این زبانها باشد. ویرایشگرهای تجاری زیادی وجود دارند که قابلیتهای خوبی را نیز دارا هستند ولی ما فقط ویرایشگرهای آزاد و متنباز را معرفی میکنیم و از آنها استفاده خواهیم کرد. چند نمونهاز ویرایشگرهای پرطرفدار و متنباز:
البته ادیتورهای خیلی زیادی وجود دارند. من فقط ادیتورهایی را معرفی کردم که خود با آنها کار کردهام و بهلحاظ قابلیتی، حداقلهایی را پشتیانی میکنند.
ما چه ویرایشگری را توصیه میکنیم؟
باتوجهبه وجود ویرایشگرهای خیلی خوبی که وجوددارند، مقداری انتخاب سختو سلیقهای است، البته وجود قابلیتهای قابل پشتیبانی ویرایشگر نیز بیتاثیر نیست. درمیان انبوه ویرایشگرهای موجود، ما Eclipse را انتخاب میکنیم. معمولا بیشتر افراد ویرایشگر Eclipse را ویرایشگر Java میشناسند، درصورتیکه این ویرایشگر قدرتمند قادر است ۴۴ زبان برنامهنویسی مختلف را پشتیانی کند و از همه مهمتر برروی چهار سیستم عامل لینوکس، ویندوز،مک، سولاریس قابل راهاندازی و استفاده است.
البته واضحاست که شما در انتخاب ویرایشگرمتن کاملا مختار هستید و بستهبه نیاز و قابلیتها میتوانید ادیتور موردنیاز خود را انتخاب کنید، ما در این آموزشها از Eclipse استفاده میکنیم ، چرا که:
- متن باز است
- قادر به پشتیبانی زبانهای زیادی است
- قابلیت نصب پلاگین دارد
- قادر به اجرا در سیستمهای مختلف است
- رابط کاربری مناسبی دارد
- و… .
چطور Eclipse را نصب کنیم ؟
برای نصبو راهاندازی Eclipse نیاز است که چندگام بیشتر از نصب دیگر ویرایشگرها بردارید. همانطورکه میدانید ادیتور Eclipse برای اجراشدن نیاز به پلتفرم Java دارد. یعنی باید ابتدا جاوا (JRE) را برروی سیستم نصب کنید. بستهبه ورژن Eclipse مورد استفاده، نسخه جاوا هم باید با آن همخوانی داشته باشد، ما در این آموزش از آخرین ورژن موجود Eclispe یعنی ورژن Oxygen استفاده خواهیم کرد. در این ورژن نیاز به Java 1.8 میباشد.
گام اول نصب جاوا:
قبلاز دانلود و نصب جاوا ، چککنید ممکناست جاوا همراه نرمافزار دیگری نصب شدهباشد و نیازیبه نصب مجدد آن نباشد. برای بررسی این موضوع ، دستور زیر را در کامندلاین (ترمینال / کامند پرامت) وارد کنید.
java -version
درصورت نصب جاوا باید خروجی مطابق عکسزیر داشتهباشید، دقت داشتهباشید که ورژن باید حتما 1.8 باشد.
برای نصب مطابق مراحل زیر عمل کنید.
بعداز تمامشدن مراحل نصب، صحت نصبو ورژن جاوا را چککنید.
گام دوم دانلود و نصب Eclipse:
خوشبختانه چون Eclipse از ماشینمجازی Java برای اجرا کمک میگیرد، نیازیبه نصب ندارد و فقط با دانلود فایل اجرایی و خارجکردن آن از حالت فشرده، آمادهی راهاندازی است. دقتداشتهباشید که برای راهاندازی Eclipse دو راه وجود دارد، اول اینکه Eclipse را دانلود کنید بعد پلاگین مربوط به زبان موردنظر (برای زبان سی باید از پلاگین CDT استفاده کنیم) را دانلود و برروی آن نصبکنید این امکان باعث میشود که شما قادر باشید از یک Eclipse بههمراه تعداد دلخواه زبان برنامهنویسی داشته باشید. راه سادهتر هم هست، خوشبختانه پلاگین زبانهای پرطرفدار از قبل برروی Eclipse نصب شده و ورژن مخصوص آن زبان برای دانلود قرار گرفتهاست. برای کوتاهترشدن مسیر، ما در این آموزش راهدوم را انتحاب میکنیم و ورژن مخصوص زبان C را دانلود میکنیم. برای دانلود به سایت Eclipse بروید. در صفحهی بازشده برروی ایکون C/C++ مطابق عکس زیر کلیک کنید:
بعداز دانلود فایل دریافتی را از حالت فشرده خارج کنید.
گام سوم نصب پلاگین توسعه ARM:
بعداز دانلود Eclipse برای اینکه بتوانیم بهراحتی برنامه موردنظر خود را تحت پلتفرم ARM بنویسیم نیاز است که پلاگینی تحت عنوان GNU ARM را برروی آن نصب کنیم. بانصب این پلاگین Eclipse سمپل کدهای نمونه و تمپلیتهای امادهای را به ویزارد ساخت پروژه اضافه میکند که کار ساخت٬و پیکیربندی پروژه را برای پردازندههای ARM آسان میکنید. ابتدا Eclipse را اجرا کنید و برای نصب مطابق مراحل زیر عمل کنید.
در این فورم محل ذخیره سازی WorkSpace را مشخص می کنیم ، در Eclipse علاوه بر مفهوم پروژه ، با مفهوم دیگری به اسم WorkSpace کار داریم. هر WorkSpace میتواند شامل یک یا چند پروژه باشد. در ابتدای باز شدن Eclipse ، مسیر ذخیره سازی WorkSpace را سوال می کنید.
خوب Eclipse باموفقیت اجرا شد، صفحهای هم که مشاهده میکنید، صفحه خوشامدگویی است. این صفحه علاوهبر معرفی Eclipse شامل راهنمایی برای استفادهاز Eclipse است. برای نصب پلاگین از منوی Help زیر منوی Install New Software را انتخاب میکنیم:
در پنجرهی بازشده برای نصب، برروی کلید Add کلیک میکنیم:
در کادر محاورهای بازشده، درون قسمت Name مقدار GNU ARM را وارد میکنیم و در قسمت Location مقدار زیر را وارد کنید. بعداز آن برروی کلید OK کلیک کنید.
http://gnuarmeclipse.sourceforge.net/updates
بعداز آن Eclipse سعی میکنید که اطلاعات مربوط به پلاگین موردنظر را بارگذاری کنید. تا پایان بارگذاری اطلاعات صبر کنید:
بعداز اتمام بارگذاری اطلاعات مربوطبه پلاگین، اطلاعات مربوطبه آن مطابق عکس فوق بهنمایش در میآید. پکیجهای موردنیاز را جهت نصب تیک بزنید و برروی کلید Next کلیک کنید.
در پنجره بعدی، پکیجهایی را که برای نصب انتخاب کردهاید را نمایش میدهد و درصورت صحیحبودن آنها میتوانید برروی کلید Next کلیک کنید یا بازدن Back آنها را اصلاح کنید.
دراین مرحله باید شرایط استفادهاز پلاگین را بپذیرید و برروی کلید Next کلیککنید.
دراین مرحله باید منتظربمانید تا کار نصب بعداز دانلود قسمتهای موردنیاز بهاتمام برسد، توجه داشتهباشید بعداز دانلود قسمتهای مربوط، پنجره محاورهای مطابق عکسزیر بهنمایش درمیآید که باید آنرا تایید کنید.
بعداز اتمام فرایند نصب پلاگین، Eclipse با نمایش پیامی مبتنی بر راهاندازی مجدد، فرایند نصب را خاتمه میدهد. با آن موافقت کنید.
نصب ابزارهای لینوکسی:
بله ما قصد نوشتنو کامپایل برنامه در ویندوز را داریم، ولی برای این کار از ابزارهای رایگان گنو استفاده میکنیم، برای اینکه بتوانیم مطابق با الگوهای گنو برنامه موردنظر خود را در ویندوز کامپایل کنیم، باید ابزارهای لازم در این خصوص را نصب کنیم، نگران نباشید، قبلا این ابزارها بهصورت پکیج نصبی آماده شدهاست و برای دانلود آنها میتوانید به آدرسزیر مراجعه کنید.
https://github.com/gnu-mcu-eclipse/windows-build-tools/releases
آخرین ورژن را دانلود کنید.
بعداز دانلود، مثل تمام نصابهای ویندوزی فقط باید بر کلید Next کلیک کنید و منتظر اتمام نصب باشید. درحین نصب، محل نصب برنامه را بهخاطر داشتهباشید چراکه باید آدرس آنرا به Path سیستم اضافه کنیم. برنامه درهنگام نصب مطابق عکسزیر، محل نصب را مشخص میکند.
بهصورت پیشفرص برنامه در آدرس زیر نصب میشود.
C:\Program Files (x86)\GNU MCU Eclipse\Build Tools\2.9-20170607-0922
بعداز نصب، برای اینکه Eclipse بتواند آنرا فراخوانی کند باید آدرس محلنصب را به Path سیستم اضافهکنیم، برای اینکار ابتدا برروی My Computer راست کلیک (برای چپ دست ها ، چپ کلیک)کنید و گزینه Properties را انتخاب کنید.
در پنجرهی ظاهرشده برروی گزینه Advanced system settings کلیک کنید، مطابق عکس زیر:
بعد در پنجرهی بازشده برروی کلید Environment Variables کلیک کنید:
در پنجرهی بازشده از کادر User variables for …. گزینه PATH را انتخاب کنید و برروی کلید Edit کلیک نمایید:
در پنجرهی بازشده در قسمت Variable Value بهانتهای رشته رفته و بهانتهای آن یک سیمیکالون (;) اضافه کنید و بعداز آن آدرس محلی که فایل make.exe وجود دارد را اضافه میکنیم معمولا این فایل در محل نصب و در پوشه bin است. که آدرس آن به شکل زیر خواهد بود:
C:\Program Files (x86)\GNU MCU Eclipse\Build Tools\2.9-20170607-0922\bin
تمام پنجرههایی را که باز کردید برروی کلید OK کلیک کنید تا کار تمام شود. برای بررسی اینکه آیا بهصورت صحیح Path رو وارد کردید، کامندلاین رو باز کنید و درون آن دستورزیر را تایپ کنید:
make --version
خروجی دستورفوق باید به شکلزیر باشه:
GNU Make 3.81 Copyright (C) 2006 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. This program built for i386-pc-mingw32
و این یعنی اینکه کار نصبو کانفیگ ابزارهای موردنیاز بهخوبی انجام شدهاست و با خیالآسوده میتوانیم بهمرحله بعد برویم.
ایجاد اولین پروژه رزبری پای
بعداز کلی کلنجار رفتن با ویندوز و نصب برنامههای مختلف، حالا دیگه وقتش رسیده که اولین پروژه رزبری پای را بااستفادهاز ویرایشگر Eclipse انجام بدیم. برنامهای که میخوایم برای شروع پیادهسازی کنیم، همون برنامه چشمکزن ساده است که از قسمت دوم این آموزشها همراهمون بوده را میخوایم بااستفادهاز Eclipse برای برد رزبری پای 2 کامپایل کنیم. برنامه که از قبل مشخصه:
/* ============================================================================ Name : main.c Author : Zeus Version : Copyright : Your copyright notice Description : Hello World in C ============================================================================ */ /* The base address of the GPIO peripheral (ARM Physical Address) */ #define GPIO_BASE 0x3F200000UL #define GPIO_GPFSEL4 4 #define GPIO_GPSET1 8 #define GPIO_GPCLR1 11 #define LED_GPFSEL GPIO_GPFSEL4 #define LED_GPFBIT 21 #define LED_GPSET GPIO_GPSET1 #define LED_GPCLR GPIO_GPCLR1 #define LED_GPIO_BIT 15 /** GPIO Register set */ volatile unsigned int* gpio; /** Simple loop variable */ volatile unsigned int tim; /** Main function - we'll never return from here */ int main(void) __attribute__((naked)); int main(void) { /* Assign the address of the GPIO peripheral (Using ARM Physical Address) */ gpio = (unsigned int*)GPIO_BASE; /* Write 1 to the GPIO16 init nibble in the Function Select 1 GPIO peripheral register to enable GPIO16 as an output */ gpio[LED_GPFSEL] |= (1 << LED_GPFBIT); /* Never exit as there is no OS to exit to! */ while(1) { for(tim = 0; tim < 50000; tim++) ; /* Set the LED GPIO pin low ( Turn OK LED on for original Pi)*/ gpio[LED_GPCLR] = (1 << LED_GPIO_BIT); for(tim = 0; tim < 50000; tim++) ; /* Set the LED GPIO pin high ( Turn OK LED off for original Pi)*/ gpio[LED_GPSET] = (1 << LED_GPIO_BIT); } }
اما برای اولین قدم باید یک پروژه بسازیم، برای ساخت پروژه مطابق عکسزیر عمل میکنیم، در اینمرحله قصد ساخت پروژه C رو داریم برایهمین پروژه C رو انتخاب میکنیم:
در پنجرهی بازشده ابتدا نام پروژه را انتخاب میکنیم، پروژه هر نامی میتواند داشته باشد، فقط دقتکنید که نامپروژه نباید دارای فاصله (Space) باشد برای جداکردن بخشها از آندرلاین ( _ ) استفادهکنید. بهعنوانمثال بهجای Start Raspberry باید نوشت Start_Raspberry درقسمت Project Type نوع پروژهای که قصددارید ایجادکنید را انتخابکنید، بستهبه پلاگینهای نصبشده ، ممکناست انتخابهای زیادی وجود داشتهباشد. مثلا پروژههای نمونهی آماده برای خانواده STM32 در این مرحله قابل ملاحضه است. اما ما قصدداریم پروژه را برای Cortex-a7 ایجاد کنیم، بههمیندلیل گزینه Hello World ARM C Project را انتخاب میکنیم، دقتداشتهباشید که Toolchains گزینه Corss ARM GCC را انتحابکنید. این قسمت بستهبه انواع کامپایلرهای نصبشده برروی سیستم ممکناست دارای گزینههای دیگری هم باشد. بعداز آن برروی کلید Next کلیک کنید:
درمرحلهی بعد شما میتوانید نام خود را بهعنوان نویسنده و یا ایجادکنندهی پروژه وارد کنید، اینکار باعثمیشود که هروقت در پروژه فایل جدیدی را ایجاد کردید بهصورت خودکار در بالای برگه اسم شما ذکر شود. البته این امکان اختیاری است. ولی بهخاطر داشتهباشید که در قسمت Linker semi-hosting Options همه نوشتهها را پاک کنید، دراین پروژه نیازیبه آنها نیست. بر روی Next کلیک کنید:
فعلا کاری با قسمت بعد نداریم و بر روی Next کلیک کنید
قسمتبعدی مرحلهی مهمی است، دراین قسمت محل نصب کامپایلر را مشخص میکنیم، باتوجهبه این مسئله که Eclipse قادر به پشتیبانی طیف وسیعی از کامپایلرها است، باید مشخصکنیم که برای این پروژه از کدام کامپایلر استفاده کنیم و اینکه کامپایلر موردنظر در چه پوشهای واقع شدهاست. ما قصد داریم برنامه را برای رزبری پای بنویسیم پس باید از کامپایلر ARM استفاده کنیم. اگر کامپایلر رزبری پای را برروی سیستم ندارید میتوانید به بخش سوم آموزش رزبری پای مراجعه کنید. گزینهی اول را مطابق عکس زیر تنظیم کنید. در قسمتدوم، باید محل قرارگیری فایل arm-none-eabi-gcc.exe را وارد کنیم. برای اینکار میتوانید برروی Browse کلیک نمایید و پوشه مربوطه را انتخاب کنید. و بافشردن Finish اولین پروژه را ایجاد کنید:
بعداز ایجاد پروژه با تصویری مطابق تصویر زیر مواجه میشوید که در سمتراست تصویر فایلهای پروژه قابل مشاهدهاست و برای بازو ویرایش هر فایل کافیاست برروی آن کلیک کنید. برای کامپایل کدهای نوشته میتوانید برروی آیکن چکش کلیک کنید و یا از کلیدهای Ctrl+B استفاده کنید.
البته طبیعیاست که بااجرای فرمان کامپایل پروژه کامپایل نشود و خطا دهد مطابق عکسزیر، ابتدا برنامهی موردنظر را با برنامه پیشفرض ایجادشده جایگزین کنید. بعد لازماست تنظیمات پروژه را بهنحوی انجامدهیم که خروجی مناسب اجرا برروی رزبری پای باشد.
برای انجام تنظیمات ابتدا پروژه را انتخابمیکنیم، از منوی Project زیرمنوی Properties را کلیک میکنیم تا وارد تنظیمات پروژه شویم:
در پنجرهی تنظیمات از منوی سمتچپ، گزینه C/C++ Build را بازکرده و برروی Settings کلیک میکنیم تا تنظمیات مربوط به نحوهی کامپایل بازشود.
در بخش Target Processor ما قادریم که نوع پردازنده و معماری آن بههمراه امکانت جانبی مثل واحد FPU را پیکربندی کنیم تا خروجی برنامه منطبق بر سختافزار باشد. برای برد رزبری پای 2 تنظیمات این قسمت را مطابق عکسزیر انجامدهید:
بخش بعدی مربوطبه تنظیمات Optimization است که باعث میشود که برنامهی ایجادشده بهصورت موثری بهینه باشد، البته در این مرحله ما نیازیبه بهینهسازی کد نداریم، برای همین آنرا غیرفعال میکنیم، پس تنظیمات را مطابق تصویر زیر انجام دهید:
مرحلهی بعداز تنظیمات Debugging است که مربوط به Debug برنامه می شود و از آنجایی که قصد خطایابی برنامه را نداریم این قسمت را درحالت پیشفرض خود قرار میدهیم. تنظیمات را مطابق عکسزیر تغییردهید:
تنظمات بعدی مربوط به Linker هست، اینقسمت را هم مطابق عکسزیر تغییردهید:
در اینمرحله باید به کامپایلر خود بگوییم که خروجی برنامه درچه فرمتی تحویل شود، از آنجاییکه برنامه توسط بوتلودر در حافظه RAM قرار میگیرد باید خروجی برنامه بهصورت Binary باشد:
و در اخر باید به کامپایلر بگوییم که چه فایلی را بهعنوان خروجی نهایی ایجاد کنید. همانطور که از مقالات قبلی میدانید باید خروجی برنامه kernel.img باشد که بوتلودر قادربه بوت آن باشد. برای اینمنظور مقدارزیر را درقسمت مشخصشده درون عکس قراردهید.
${COMMAND} ${FLAGS} ${OUTPUT_FLAG} ${OUTPUT_PREFIX} kernel.img
بعد از انجام مراحل فوق تنظیمات لازم هم انجامشده و فقط کافیاست که پروژه را کامپال کنید.
اگر بعداز کامپایل با تصویری مشابه تصویر فوق روبرو شدید، شما موفق به کامپایل اولین برنامه رزبری پای شدید:
برای برداشتن فایلخروجی کافیاست از پوشه Debug ایجادشده درون پروژه، فایل Kernel.img را انتخابکنید و بازدن کلید Ctrl+C آنرا کپی کنید.
جمع بندی
بخشاول آموزشها بهپایان رسید، دراین مقالات سعیشد مفاهیم اولیه از سختافزار رزبری پای و همچین روشهای بوت و نحوهی عملکرد سختافزار رزبری پای توضیح دادهشود. در کنار آن به آمادهسازی ابزارهای لازم جهت کامپایلو ایجادکد پرداختیم.
در سریدوم آموزشها به راهاندازی قسمتهای مختلف سختافزار از جمله GPIO و UART خواهیم پرداخت. و با نحوهی ایجاد فایلهای استارتآپ و استفادهاز IRQ آشنا خواهیم شد.
منبع:سیسوگ