در مقالهی سوم آموزش رزبری پای، به پیکربندی و نصب ابزار مورد نیاز برای کامپایل برنامه و همچنین اجرای اولین برنامهی آموزشی بر روی بردهای رزبری پای پرداختیم. در این مقاله قصد داریم نحوهی نصب و کانفیگ ویرایشگر متن (ادیتور) ایکلیپس (Eclipse) را آموزش دهیم بگونه ای که قادر باشیم با استفاده از این ویرایشگر برای رزبری پای کد نویسی کنیم. تا این مرحله از آموزشها شما قادر هستید که برنامهی موردنظر خود را بنویسید و برای اجرا بر روی رزبری پای آماده کنید. اما یک خلاء بزرگ در این میان احساس میشود و آن هم وجود یک ویرایشگر قدرتمند است که کار برنامهنویسی را علاوه بر راحت کردن، تا حدود زیادی نیز جذاب میکند. برای آشنایی با ادیتورها و نحوه نصب و کانفیگ آنها با سیسوگ همراه باشید.
معرفی انواع ویرایشگر متن (ادیتور)
بله البته هنوز امکان نوشتن برنامه در notepad یا ویرایشگرهای متنی ساده وجود دارد ولی مسئله مهمی که مطرح میشود سرعت نوشتن برنامه و خوانایی آن است. با رشد برنامه و اضافه شدن توابع مختلف به برنامه، به خاطر سپردن اسم تابعها و متغییرها تقریباً غیرممکن است و برای استفاده و صدا زدن آنها باید اول به دنبال اسم آنها بگردید بعد پارامترهای ورودی را پیدا کنید و… ؛ این کار بسیار دشوار و طاقت فرسا است. از طرفی ویرایشگرهای مخصوص برنامهنویسی علاوه بر قابلیت کد کامپلیشن، با رنگی کردن قسمتهای برنامه خوانایی آن را افزایش داده و به درک برنامه کمک زیادی میکنند.
تفاوت یک ویرایشگر حرفه ای و ساده
عکس سمت راست، محیط یک ویرایشگر ساده را نشان می دهد و عکس سمت چپ، یک ویرایشگر حرفهای که قابلیتهای زیادی دارد. برای زبانهای برنامهنویسیِ متفاوت، ویرایشگرهای متفاوتی وجود دارد. برخی از ویرایشگرها هم قادر به پشتیبانی از چند زبان مختلف هستند. در کار سختافزار و برنامهنویسیِ سیستمی، بیشتر زبان C و ++C مورد استفاده قرار می گیرند و ویرایشگری که به دنبال آن هستم باید قادر به پشتیبانی از این زبانها باشد. ویرایشگرهای تجاری زیادی وجود دارند که قابلیتهای خوبی را نیز دارا هستند ولی با توجه به فلسفهی متن باز بودن سیسوگ، ما فقط ویرایشگرهای آزاد و متنباز را معرفی میکنیم و از آنها استفاده خواهیم کرد. چند نمونه از ویرایشگرهای پر طرفدار و متنباز:
البته ادیتورهای خیلی زیادی وحود دارند. من در بالا فقط ادیتورهایی را معرفی کردم که خود با آنها کار کردهام و به لحاظ قابلیتی، حداقلهایی را پشتیانی میکنند.
ما چه ویرایشگری را توصیه میکنیم؟
با توجه به وجود ویرایشگر های خیلی خوبی که وجود دارند ، مقداری انتخاب سخت و سلیقه است ، البته وجود قابلیت های قابل پشتیبانی ویرایشگر نیز بی تاثیر نیست. در میان انبوه ویرایشگر های موجود، ما Eclipse را انتخاب میکنیم. معمولا بیشتر افراد ویرایشگر Eclipse را ویرایشگر Java می شناسند، در صورتی که این ویرایشگر قدرتمند قادر است 44 زبان برنامه نویسی مختلف را پشتیانی کند و از همه مهمتر بر روی چهار سیستم عامل لینوکس، ویندوز،مک، سولاریس قابل راه اندازی و استفاده است.
ویرایشگر Eclipse
البته واضح است که شما در انتخاب ویرایشگر متن کاملا مختار هستید و بسته به نیاز و قابلیت ها می توانید ادیتور مورد نیاز خود را انتخاب کنید، ما در این آموزش ها از Eclipse استفاده میکنم ، چرا که
متن باز است
قادر به پشتیبانی زبان های زیادی است.
قابلیت نصب پلاگین دارد.
قادر به اجرا در سیستم های مختلف است
رابط کاربری مناسبی دارد.
و…..
چطور Eclipse را نصب کنیم ؟
برای نصب و راه اندازی Eclipse نیاز است که چند گام پبشتر از نصب دیگر ویرایشگر ها بردارید. همانطور که می دانید ادیتور Eclipse برای اجرا شدن نیاز به پلتفرم Java دارد. یعنی باید ابتدا جاوا (JRE) را بر روی سیستم نصب کنید. بسته به ورژن Eclipse مورد استفاده ، نسخه جاوا هم باید با آن همخوانی داشته باشد، ما در این آموزش از آخرین ورژن موجود Eclispe یعنی ورژن Oxygen استفاده خواهیم کرد. در این ورژن نیاز به Java 1.8 می باشد.
گام اول نصب جاوا:
قبل از دانلود و نصب جاوا ، چک کنید ممکن است جاوا همراه نرم افزار دیگری نصب شده باشد و نیازی به نصب مجدد آن نباشد. برای بررسی این موضوع ، دستور زیر را در کامندلاین (ترمینال / کامند پرامت) وارد کنید.
C++
1
java-version
در صورت نصب جاوا باید خروجی مطابق عکس زیر داشته باشید ، دقت داشته باشید که ورژن باید حتما 1.8 باشد. در غیر این صورت میتوانید جاوا ورژن 1.8 را از این لینک دانلود کنید و برای نصب مطابق مراحل زیر عمل کنید. بعد از تمام شدن مراحل نصب ، صحت نصب و ورژن جاوا را چک کنید.
گام دوم دانلود و نصب Eclipse:
خوشبختانه جون Eclipse از ماشین مجازی Java برای اجرا کمک می گیرد ، نیازی به نصب ندارد و فقط با دانلود فایل اجرایی و خارج کردن آن از حالت فشرده ، آماده راه اندازی است. دقت داشته باشید که برای راه اندازی Eclipse دو راه وجود دارد ، اول این که Eclipse را دانلود کنید بعد پلاگین مربوط به زبان مورد نظر (برای زبان سی باید از پلاگین CDT استفاده کنیم) را دانلود و بر روی آن نصب کنید این امکان باعث میشود که شما قادر باشید از یک Eclipse به همراه تعداد دلخواه زبان برنامه نویسی داشته باشید. راه ساده تر هم هست ، خوشبختانه پلاگین زبان های پرطرفدار از قبل بر روی Eclipse نصب شده و ورژن مخصوص آن زبان برای دانلود قرار گرفته است. برای کوتاه تر شدن مسیر ، ما در این آموزش راه دوم را انتحاب میکنیم و ورژن مخصوص زبان C را دانلود میکنیم. برای دانلود به سایت Eclipse بروید. در صفحه باز شده بر روی ایکون C/C++ کلیک کنید – مطابق عکس زیر.
دانلود Eclispe
بعد از دانلود فایل دریافتی را از حالت فشره خارج کنید.
گام سوم نصب پلاگین توسعه ARM:
بعد از دانلود Eclipse برای این که بتوانیم به راحتی برنامه مورد نظر خود را تحت پلتفرم ARM بنویسیم نیاز است که پلاگینی تحت عنوان GNU ARM را بر روی آن نصب کنیم. با نصب این پلاگین Eclipse سمپل کد های نمونه و تمپلیت های اماده ای را به ویزارد ساخت پروژه اضافه می کند که کار ساخت و پیکیربندی پروژه را برای پردازنده های ARM آسان می کنید. ابتدا Eclipse را اجرا کنید و برای نصب مطابق مراحل زیر عمل کنید.
صفحه اولیه Eclipse
در این فورم محل ذخیره سازی WorkSpace را مشخص می کنیم ، در Eclipse علاوه بر مفهوم پروژه ، با مفهوم دیگری به اسم WorkSpace کار داریم. هر WorkSpace میتواند شامل یک یا چند پروژه باشد. در ابتدای باز شدن Eclipse ، مسیر ذخیره سازی WorkSpace را سوال می کنید. خوب Eclipse با موفقیت اجرا شد، صفحه ای هم که مشاهده میکنید ، صفحه خوشامد گویی است. این صفحه علاوه بر معرفی Eclipse شامل راهنمایی برای استفاده از Eclipse است. برای نصب پلاگین از منوی Help زیر منوی Install New Software را انتخاب میکنیم. در پنجره باز شده برای نصب ، بر روی کلید Add کلیک میکنیم. در کادر محاوره ای باز شده ، درون قسمت Name مقدار GNU ARM را وارد می کنیم و در قسمت Location مقدار زیر را وارد کنید. بعد از آن بر روی کلید OK کلیک کنید.
Vim
1
http://gnuarmeclipse.sourceforge.net/updates
بعد از آن Eclipse سعی میکنید که اطلاعات مربوط به پلاگین مورد نظر را بارگذاری کنید. تا پایان بارگذاری اطلاعات صبر کنید. بعد از اتمام بارگذاری اطلاعات مربوط به پلاگین ، اطلاعات مربوط به آن مطابق عکس فوق به نمایش در می آید. پکیج های مورد نیاز را جهت نصب تیک بزنید و بر روی کلید Next کلیک کنید. در پنجر بعدی ، پکیج هایی را که برای نصب انتخاب کرده اید را نمایش میدهد و در صورت صحیح بودن آنها می توانید بر روی کلید Next کلیک کنید یا با زدن Back آنها را اصلاح کنید. در این مرحله باید شرایط استفاده از پلاگین را بپذیرید و بر روی کلید Next کلیک کنید. در این مرحله باید منتظر بمانید تا کار نصب بعد از دانلود قیمت های مورد نیاز به اتمام برسد ، توجه داشته باشید بعد از دانلود قسمت های مربوط ، پنجره محاوره ای مطابق عکس زیر به نمایش در میآید که باید آن را تایید کنید. بعد اتمام فرایند نصب پلاگین ، Eclipse با نمایش پیامی مبتنی بر راه اندازی مجدد ، فرایند نصب را خاتمه می دهد. با آن موافقت کنید.
نصب ابزار های لینوکسی:
بله ما قصد نوشتن و کامپایل برنامه در ویندوز را داریم ، ولی برای این کار از ابزار های رایگان گنو استفاده می کنیم ، برای این که بتوانیم مطابق با الگو های گنو برنامه مورد نظر خود را در ویندوز کامپایل کنیم ، باید ابزار های لازم در این خصوص را نصب کنیم ، نگران نباشید ، قبلا این ابزار ها به صورت پکیج نصبی آماده شده است و برای دانلود آنها می توانید به آدرس زیر مراجعه کنید.
آخرین ورژن را دانلود کنید. بعد از دانلود ، مثل تمام نصاب های ویندوزی فقط باید بر کلید Next کلیک کنید و منتظر اتمام نصب باشید. تنها به یاد داشته باشید در حین نصب محل نصب برنامه را به خاطر داشته باشید چرا که باید آدرس آن را به Path سیستم اضافه کنیم. برنامه در هنگام نصب مطابق عکس زیر ، محل نصب را مشخص می کند. به صورت پیشفرص برنامه در آدرس زیر نصب می شود.
بعد از نصب ، برای این که Eclipse بتواند آن را فراخوانی کند باید آدرس محل نصب را Path سیستم اضافه کنیم ، برای این کار ابتدا بر روی My Computer راست کلیک (برای چپ دست ها ، چپ کلیک) کنید و گزینه Properties را انتخاب کنید. در پنجره ظاهر شده بر روی گزینه Advanced system settings کلیک کنید، مطابق عکس زیر بعد در پنجره باز شده بر روی کلید Environment Variables کلیک کنید. در پنجره باز شده از کادر User variables for …. گزینه PATH را انتخاب کنید و بر روی کلید Edit کلیک نمایید. در پنجره باز شده در قسمت Variable Value به انتهای رشته رفته و به انتهای آن یک سیمیکولن (;) اضافه کنید و بعد از آن آدرس محلی که فایل make.exe وجود دارد را اضافه می کنیم معمولا این فایل در محل نصب و در پوشه bin است. که آدرس آن به شکل زیر خواهد بود
تمام پنجره هایی رو که باز کردید بر روی کلید OK کلیک کنید تا کار تمام بشه. برای بررسی این که آیا به صورت صحیح Path رو وارد کردید ، کامند لاین رو باز کنید و درون آن دستور زیر را تایپ کنید
Shell
1
make--version
خروجی دستور فوق باید به شکل زیر باشه
Shell
1
2
3
4
5
6
7
GNU Make3.81
Copyright(C)2006Free Software Foundation,Inc.
Thisisfree software;see the source forcopying conditions.
There isNO warranty;noteven forMERCHANTABILITY orFITNESS FORA
PARTICULAR PURPOSE.
Thisprogram built fori386-pc-mingw32
و این یعنی این که کار نصب و کانفیک ابزار های مورد نیاز به خوبی انجام شده است و با خیال آسوده می توانیم به مرحله بعد برویم.
ایجاد اولین پروژه رزبری پای
بعد از کلی کلنجار رفتن با ویندوز و نصب برنامه های مختلف ، حالا دیگه وقتش رسیده که اولین پروژه رزبری پای را با استفاده از ویرایشگر Eclipse انجام بدیم. برنامه ای که میخوایم برای شروع پیاده سازی کنیم ، همون برنامه چشمک زن ساده است که از قسمت دوم این آموزشها همراهمون بوده را میخوایم با استفاده از Eclipse برای برد رزبری پای 2 کامپایل کنیم. برنامه که از قبل مشخصه :
/* 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 */
volatileunsignedint*gpio;
/** Simple loop variable */
volatileunsignedinttim;
/** Main function - we'll never return from here */
intmain(void)__attribute__((naked));
intmain(void)
{
/* Assign the address of the GPIO peripheral (Using ARM Physical Address) */
gpio=(unsignedint*)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 باشد که بوت لودر قادر به بوت آن باشد. برای این منظور مقدار زیر را در قسمت مشخص شده درون عکس قرار دهید.
بعد از انجام مراحل فوق تنظیمات لازم هم انجام شده و فقط کافی است که پروژه را کامپال کنید. اگر بعد از کامپایل با تصویری مشابه تصویر فوق روبرو شدید، جا داره بهتون تبریک بگم چرا که شما موفق به کامپابل اولین برنامه رزبری پای شدید. برای برداشتن فایل خروجی کافی است از پوشه Debug ایجاد شده درون پروژه ، فایل Kernel.img را انتخاب کنید و باز زدن کلید Ctrl+C آن را کپی کنید.
جمع بندی
بخش اول آموزش ها ، به پایان رسید ، در این مقالات سعی شد مفاهیم اولیه از سخت افزار رزبری پای و همچین روش های بوت و نحوه عملکرد سخت افزار رزبری پای توضیح داده شود. در کنار آن به آماده سازی ابزار های لازم جهت کامپایل و ایجاد کد پرداختیم. در سری دوم آموزش ها به راه اندازی قسمت های مختلف سخت افزار از جمله GPIO و UART خواهیم پرداخت. و با نحوه ایجاد فایل های استارت آپ و استفاده از IRQ آشنا خواهیم شد. دوستان عزیزی که این مقالات در دنبال می کنند می توانند از سخت افزار خود عکس تهیه نموده و برای ما ارسال کنند تا آنها را به نام خودتان در اینستاگرام سیسوگ منتشر کنیم.
در مورد این نرم افزار موقع انتشار توضیحات کاملی اینجا ارائه کردیم، اما به صورت مختصر در ادامه توضیحاتی را برای شما خواهیم آورد. STM32CubeIDE در واقع یک مجموعه نرمافزاری میباشد، که همهی نرمافزارهایی که ما برای کار با میکروکنتر...
تقریبا ده روز پیش بود که به سایت ST رفته بودم تا نسخه جدید STM32CubeMX را دانلود کنم. اسم نرمافزار را که جستجو کردم با گزینهی جدیدی به اسم STM32CubeIDE نیز روبهرو شدم! تا قبل از این فقط همون STM32CubeMX وجود داشت، و حتما میدو...
توی قسمت اول مقاله تونستیم یک پروژه آزمایشی رو با یه زبان سطح بالا روی برد رزبری پای راه اندازی کنیم. حالا قبل از اینکه حمله نهایی رو انجام بدیم درباره این فکر میکنیم که تا اینجا کاری که انجام دادیم چقدر اهمیت داشته. ک...
تقلب Zeus: از اونجایی که این مطلب رو دوست عزیزی نوشتن که خوره دنیای کامپیوتر و نرمافزار هستند ؛ لازمه برای درک بهتر کاربردهای احتمالی در دنیای نرمافزار یه سری تقلب به دوستان الکترونیکی و سختافزاری برسونم شاید باعث بشه که ...
قبلا توی مقاله ای تحت عنوان " کدام کامپایلر برای میکروکنترلر STM8 بهتر است ؟ " به بررسی کامپایلر های موجود برای میکروکنترلر STM8 پرداختیم ؛ از مجموع مباحث مطرح شده در خصوص یک کامپایلر خوب به جمع بندی رسیدیم که کامپایلر SDCC با توج...
دستگاههایی که با صدا کنترل میشوند (مانند اکو آمازون (Amazon Echo)) محبوبیت زیادی دارند. شما میتوانید سیستمی مشابه اکو آمازون را با استفاده از Raspberry Pi و یک میکروفون USB ارزانقیمت بسازید. با سیسوگ همراه باشید.
در این مقاله قصد داریم روش نصب Windows 10 IoT بر روی رزبری را آموزش دهیم و برنامهای نوشته و روی آن تست کنیم. در این برنامه یک لامپ را خاموش و روشن میکنیم.
اگر با سیستم های تعبیه شده (embedded) مثل رزبری پای ، اورنج پای ، نانو پای و ..... سروکله زده باشید ، قطعا اسم پایتون (Python) برایتان آشنا خواهد بود. Python در واقع علاوه بر نوعی مار که در آفریقا زندگی میکند به نوعی زبان برنامه ...
در قسمت اول مقاله آموزش رزبری پای به معرفی مدلهای موجود زربری پای پرداختیم. در این مقاله به بررسی ساز و کار اجرای برنامه و بوت شدن بردهای رزبری پای خواهیم پرداخت. برای نوشتن برنامه درون هر سیستم قبل از هر اقدامی لازم است که آن سی...
رزبری پای بله درست است؛ اشتباهی پیش نیامده. تلفظ صحیح Raspberry Pi رزبری پای است که متاسفانه به اشتباه در بیشتر وبهای فارسی رسپبری پای خوانده میشود. در واقع تلفظ رسپبری پای اشتباه است و نباید رسپبری خوانده شود. مطابق فونوتیک...
با سلام وخسته نباشید بابت اموزش های خوبتون کار با پردازنده ها بدون سیستم عامل هایی مثل لینوکس و ویندوز و … جالبه هست. اما یه سوال سیستم های جایگزین برای اون ها هم وجود داره(مثلا free rtos)؟
با عرض سلام و خسته نباشد خدمت جناب زئوس من اخیرا به دنبال این بودم که گوشی های قدیمی که تو خونه افتاده رو برای یک استفاده جدید به کار بگیرم. اولی یک گوشی لمسی تاچ مقاومتی dimo بدون سیستم عامل بود با برسی مشخص شد که cpu اونmt6252 هست با توجه به اینکه خیلی قدیمی بود به راحتی datesheet رو پیدا کردم و متوجه شدم هسته اون ARM7EJ-S هستش البته کلاکش 104 مگاهرتز بیشتر نیست خوب برای شروع خوبه باتوجه به وجود USB و GSM و LCD خواستم یکم بیشتر جلو برم یک گوشی G630 هوآوی داشتم CPU اونmsm8212 بود خوب حالا دیگه کلا قضیعه فرق میکنه هر قدر با پیشوند و پسوند های مختلف جست و جو کردم هیچ نیایفتم که نیایفتم. البته احساس می کنم سیاست های شرکت های بی تاثیر نیست چون مدل های نسبت جدید mediatek رو تونستم تو سایت چینی پیدا کنم که اونم تازه قابل دانلود برای ما نبود. ولی خوب قدیمی ترین مدل های Qualcomm رو هم پیدا نکردم چه برسه به hisilicon و Exynos خوب سوالی که دارم آیا روش خاصی برای پیدا کردن این گونه اسناد دارید ؟ اگر درست فهمیده باشم کلا این طور سند ها برای عموم قابل دسترسی نیست؟ تازه از بحث نرم افزار هم بگذریم که یک جا دیدم سورس bootloader اولیه یک مدل از هوآوی رو تحلیل کرده بود که که من هر چی گشتم پیدا نکردم
این کاری که میخواید بکنید جالبه ولی شما به اطلاعاتی بیشتر از دیتاشیت نیاز دارید 🙂 توی دیتاشیت نهایتا در مورد رجیستر ها و کارکرد اونها به شما توضیح میده اما برای پورت کردن سیستم عامل دلخواهتون به اطلاعات خیلی بیشتری نیاز دارد. کمترین چیزی که نیاز دارید بدونید ساختار لینوکس – نحوه بوت و …. هست. خوب پیشنهاد من به شما اینه که از سیستم عاملی که روی برد هست استفاده کنید و اونو برای کار خودتون کاستوم کنید. با این کار دیگه نیازی به کامپایل مجدد هسته و بوت لودر و … ندارید. الان همه هی آماده است و نیازه که ازشون استفاده بشه فقط 🙂 اگه گوشی اندرویدی دارید برای اتصال بهش برید دنبال کلمه کلیدی adb تا بتونید خط فرمان یا همون شل لینوکس ازش بگیرید. اینطوری به سادگی میتونید برنامه تون رو بنویسید و روش اجرا کنید(حتی بدون اندروید استودیو).
فکر کنم منظورتون پیدا کردن مستندات فنی هست برای چیپ – اگر درست متوجه شدم باشم اگر توی اینترنت پیدا نکردید یکی از راه ها مطرح کردن توی فروم های خارجی هست و اگر به نتیجه نرسیدید مکاتبه با شرکت تولید کننده است جز این موارد راه دیگه ای به ذهنم نمی رسه
سلام دوباره بر زئوس خدای خدایان برنامه بدون ارور build شد و دو فایل .elf و kernel.img رو تولید کرد. من قبلا کراس کامپایلر رو با یه روش دیگه انجام داده بودم (برای SSH) بخاطر همین تنظیمات اکلیپس بهم ریخته بود به همین علت بیلد نمیشد تا اینکه پوشه .metadata رو پاک کردم تا تنظیمات اکلیپس به حالت اول برگرده و دوباره تنظیمات رو طبق این آموزش انجام دادم که درست شد.اما ال ای دی چشمک نمیزنه و بطور کل خاموش هست. 1- من تنظیمات target properties رو برای رزبری 3 به صورت زیر تغییر دادم. آیا درسته؟
2- دو فایل کرنل و elf رو کپی و داخل مموری ریختم، همین کافی هست؟ 3- یا علاوه بر اینها به اون دو فایل دیگه (bootcode, config) که در آموزش قسمت دوم برای رزبری نسخه دو گذاشتید نیاز هست؟ 4- در ضمن شماره پایه ال ای دی در مدل دو و سه یکسان هستند؟ چون من این قسمت رو تغییر ندادم تشکر از راهنمایی
من xbian رو روی مموری رایت کردم بعد همه فایل ها به غیر از start.elf, fixup.dat, bootcode ,config رو حذف کردم بعد فایل کرنل ساخته شده توسط اکلیپس رو کنار این فایل ها روی مموری ریختم (لیبل مموری هم BOOT هست). بعد از روشن کردن رزبری، اول یک بار چراغ سبز روشن میشه و بعد خاموش میمونه. و خبری از چشمک زدن نیست. برای تست، فایل elf ساخته شده توسط اکلیپس رو هم تغییر نام به start دادم و جایگزین فایل elf قبلی کردم اما بازم جواب نداد. (ما به فایل elf ساخته شده توسط اکلیپس کاری نداریم؟) تشکر از راهنمایی و امیدوارم جواب بدهید
سلام دوست عزیز خوب البته که نباید کار کنه ! ما اینجا داریم توی لایه های پایین با سخت افزار مستقیم حرف میزنیم ، قطعا مدار رزبری پای ۳ متفاوته از رزبری پای ۱ هست برنامه ای که ما نوشتیم برای سخت افزار رزبری پای ۱ است نه زربری پای ۳ . با عوض شدن پردازنده آدرس ها هم عوض میشه نحوه کار با سخت افزار هم ممکنه عوض بشه و خیلی چیز های دیگه هم ممکنه عوض بشه پس باید برنامه رو برای کار با سخت افزار موردنظر تغییر بدید.
سلام . سپاس بابت مطلبی که نوشتین. من از true studio برای stm32 استفاه میکنم . ادیتورش eclips هست .و کمپایلرش هم gcc . شرکت st ساپورتش میکنه . توی تصاویر در قسمت در قسمت ساخت پروژه و انتخاب project type : علاوه بر گزینه انتخاب شما گزینه های دیگه برای میکروهایی مثل stm32F0xx و غیره داره . اینها هم مربوط به همین کمپایلر مورد بحث این مطلب هستند ؟ چون در حال حاضرکمپایلر محیط true studio این میکروها رو ساپورت میکنه. اگر plugin این مطلب رو به true studio اضافه کنم ایا با کمپایلر خود true studio دچار تداخل نمیشه . مشکلی براش پیش نمیاد ؟
من از این ابزار استفاده نکردم ولی خوب باید توجه داشته باشید هسته های آرم کد های یکسانی رو اجرا میکنن که این باعث میشه کامپایلر های یکسانی هم داشته باشند.
با سلام . راستش توی ین فرصت توی اون نرم افزار یکم کنجکاوی کردم و به نتیجه جالب رسیدم . در واقع نیاز به نصب کمپایلر جدید نداره . کمپایلر خودش نسخه 6 هست . و تمام هسته های کورتکس a , m و R رو ساپورت میکنه . فقط هیچ هدری در کار نیست . با این حال وقتی کد مثال این مطلب رو کمپایل توی tru studi برای cortex a7 کمپایل کردم باز هم مثل کمپایلری که توی نظرات مربوط به قسمت سوم توضیح داده بودم . این اخطار رو میداد. cannot find entry symbol _start de defulting 00008000 این وارنینگ حل بشه true studio جالب واقعا چیز جالبی خواهد بود. چون در حال حاظر برای avr هم با معرفی کمپایلر avr gcc به اون میشه کد نوشت . و من همون آموزش شما برای کمپایلر sdcc رو برای avr gcc پیاده کردم و موفقیت آمیز بود!!!
خوب ادیتور که تکلیفش مشخصه بنده خدا همون ایکلیپسه دیگه – چند تا پلاگین اضافه نصب کردند در مورد کامپایلر درست می فرمایید فرقی نمیکنه جز ورژنشون – اما در مورد وارنینگی که دارید دریافت میکنید در واقع کامپایلر از تابع _start کار خودش رو شروع میکنه این تابع جایی است که مقداردهی های اولیه انجام میشه و بعد از اون تابع MAIN داخل همین تابع کال میشه احتمالا نمونه اش رو میتونید کد های میکروکنترلر st پیدا کنید. چند تا راه دارید این که تابع _start رو خودتون بنویسید یا این که کد MAIN رو داخل این تابع بنویسید شما برنامه رو با فلگ -nostartfiles کامپایل کنید احتمالا مشکل حل میشه
خوب ادیتور که تکلیفش مشخصه بنده خدا همون ایکلیپسه دیگه – چند تا پلاگین اضافه نصب کردند در مورد کامپایلر درست می فرمایید فرقی نمیکنه جز ورژنشون – اما در مورد وارنینگی که دارید دریافت میکنید در واقع کامپایلر از تابع _start کار خودش رو شروع میکنه این تابع جایی است که مقداردهی های اولیه انجام میشه و بعد از اون تابع MAIN داخل همین تابع کال میشه احتمالا نمونه اش رو میتونید کد های میکروکنترلر st پیدا کنید. چند تا راه دارید این که تابع _start رو خودتون بنویسید یا این که کد MAIN رو داخل این تابع بنویسید شما برنامه رو با فلگ -nostartfiles کامپایل کنید احتمالا مشکل حل میشه
توی true studio هم توی قسمت c linker یه بخشی داشت ظاهرا مال فلگها بود و اینا رو -Wl,-cref,-u,Reset_Handler, اونجا نوشته بود. منم اون فلگی رو که فرموده بودید اونجا نوشتم و کمپایل کردم باز هم همون اخطار رو میداد. و طبق مطالب قسمت سوم ، فایل .c رو از طریق خط فرمان با همون دستوری که توی قسمت سوم اومده با همون نسخه 2019و 2016 کمپایل کردم و همون وارنینگ رو میداد . وقتی دقت کردم دیدنم همچین پارامتری توی اون دستور هست . ایناها: arm-none-eabi-gcc -O0 -mfpu=neon-vfpv4 -mfloat-abi=hard -march=armv7-a -mtune=cortex-a7 -nostartfiles -g blinkact.c -o kernel.elf حالا سر فرصت یکبار هم با همون نسخه ای که معرفی کردید تست میکنم ببینم چی میشه . سپاس بابت زحماتی که میکشید.
حالا یه سوال پیش میآد برام با این وارنینگ چک کردید ببینید کار هم میکنه یا نه ؟ من یادم نیست جزییاتش رو مال خیلی وقت پیشه قضیه – شاید منم این وارنینگ رو میگرفتم و الان حضور ذهن ندارم.
سلام فکر میکنم ورژن های جدید رزبری پای آندروید رو هم پشتیبانی میکنند و مشکلی نباشه بله با جاوا میشه برنامه برای همه پلتفرم ها نوشت و یکی از خوبی های جاوا همین مولتی پلتفرم بودنش هست 🙂
سلام ممنون از به اشتراک گذاشتن دانشت. منو یه دوربین مداربسته تحت شبکه دارم و قصد دارم با یک کابل مبدل اترنت به میکرو یو اس پی اونو به رزبری پای زیرو وصل کنم و روی بیت هایی که میاد یه رمز نگاری ساده انجام بدم (مثلا جابه جایی بیت ها) و از یه پین اونارو بیرون بفرستم. به نظرت شدنی هست؟واگه هست میشه بگید که بهتره سیستم عامل رو نصب کنم یا نه و اینکه چه مطالبی میتونه کمکم کنه. ممنونم
سلام دوست عزیز خوب باید دید تغییرات چقدره ولی من فکر میکنم برای انجام این کار با سیستم عامل نهایتا چند ساعت وقت لازم است ولی اگر بخواید بدون سیستم عامل انجامش بدید به چند روز وقت نیاز دارید چرا که باید تمام لایه های شبکه رو برنامه نویسی کنید و البته راه اندازی سخت افزار های مورد نیاز هم هست پس منطقیه که از سیستم عامل استفاده کنید.
سلام خیلی ممنون از اموزشتون یه سوال داشتم من وقتی میرم که گنو رو از لینکی که دادید دانلودکنم فایل exe نداره فقط zip هست توی پوشه ها هم فایل setup.xexنداره چه طور باید نصبش کنم؟
سلام دوستان من جدیدترین ورژن نرم افزار eclipse و gcc رو نصب کردم و تقریبا چندین ساعت وقتمو گرفت تا متوجه شدم که مشکل از اموزش نیست و بعد از تحقیق کردن به این نتیجه رسیدم که اگر کسی مایل به نصب این نرم افزار هست از gcc ورژن 4 و از eclipse mars استفاده کنه و کاملا با اموزش ها همخونی داره. امیدوارم مفید باشه براتون.
سلام متشکر از آموزش عالی و خوبتون یه نکته فقط شما که به این خوبی از ابتدای نصب ویرایشگر توضیح دادید چرا در انتها اموزش رو کامل نکردید ونگفتید که با بین فایل خروجی چه کنیم و چطوری مبکرو اس دی رو آماده کنیم و خرکجی رو با یه فیلم یا عکس به پایان میرسوندید خیلی عالی تر میشد در انتها بازم بسیار بسیار ممنونم
زنده پایدار باشی عزیز این سوالاتی بود که در ذهن من رقم خورد شاید در ذهن دوستان دیگر هم اومده باشه اگه اینها رو هم توضیح بدید خیلی عالی میشه: 1-بوت فایل چیه و چجوری ساخته میشه 2-کرنل فایل چیه و در حقیقت تفاوتش با بوت فایل چیه و در چه قسمت از حافظه لود میشه 3-آیا فقط باید این دو فایل در حافظه اس دس ذخیره بشه یا راه روی نور فلش و یا انواع دیگه فلش هم امکان پذیره 4-اس دی کارت رو فقط فرمت ساده کنیم کافیه یا نیاز به یه بوت سکتور داره ؟ 5-اگه بوت سکتور میخواد چجوری بوت سکتور رو ایجاد کنیم و اگه میشه برنامه بوت سکتور رو هم توضیح بدید. و سوالاتی از این دست که جاش توی آموزش زیباتون خالیه بازم ممنون
سلام . عالی بود. من یه رزبری پای 3 دارم که میکرو coretex-a53 روش داره . خواستم ببینم این آموزش اونم شامل میشه یا فرق داره ؟ چون همه کارارو انجام دادم ولی خروجی kernel.img نداد. ارورش اینه: make all Invoking: Cross ARM GNU Create Flash Image {COMMAND} -O binary “start_raspberry.elf” kernel.img c:/users/mehran/appdata/roaming/gnu mcu eclipse/build tools/2.11-20180428-1604/bin/sh: {COMMAND}: not found make: *** [makefile:50: start_raspberry.bin] Error 127 10:00:13 Build Failed. 1 errors, 0 warnings. (took 616ms)
سلام و درود دوست عزیز خوب قائدتا باید بگم که بله ، فرق میکنن ، مخصوصا آدرس ها ! اما مشکل شما در این مرحله مربوط به این تفاوت نیست ، مشکل توی خروجی گرفتن فایل کرنل هستش ؛ که فکر کنم خط زیر رو درست وارد نکردید ${COMMAND} ${FLAGS} ${OUTPUT_FLAG} ${OUTPUT_PREFIX} kernel.img احتملا $ ابتدایی رو نگذاشتید ، اگر اینو اصلاح کنید فکر نمیکنم برای کامپال مشکل دیگه ای باشه ، باقی قسمت ها به درستی انجام شده ظاهرا
ممنون از پاسخ . ولی اونو درست وارد کردم .ممکنه gnu tools درست نصب نشده باشه ؟ یه سوال دیگه هم داشتم ازتون . من رشته ام الکترونیک قدرته . واسه کنترل مدار از ARM باید استفاده کنیم و اغلب به خاطر قیمتش از STM استفاده میکنن. من یه رزبری پای 3 از قبل داشتم . آیا میتونم با همین کار منم و یاد بگیرم ؟ یا بهتره یه برد ARM بخرم ؟
خواهش میکنم ، ببینید خطایی که دریافت میکنید اینه که میگه فایل {COMMAND} رو پیدا نکردم ، قائدتا باید این جایگزین میشد ، پس حدس میزنم مشکل اینه که احتملا این دستور درست وارد نشده باشه ! توصیه میکنم برای شروع یادگیری به سرغ میکروکنترلر برید ، برد های raspberry از پردازنده ARM استفاده می کنند و پیچیدگی زیاد تری دارند ، پس اگر به سراغ میکروکنترلر ARM حالا هر خانواده ای که دوست دارید بهتره و فکر میکنم سریعتر هم به جواب دلخواه هم میرسید. ما آموزش های st رو روی سایت قرار دادیم که برای شروع یادگیری میتونید از اونها استفاده کنید. آموزش stm32
قطعا میشه از هر ویرایشگری استفاده کرد حتی فکر میکنم اتمل استودیو که از ARM هم پشتیابانی میکنه از تولچین GCC برای کامپایل استفاده میکنه و با ساخت Makefile مناسب میشه با اتمل استودیو کدها رو کامپایل کرد حتی
سلام ممنون از مطالب بسیار مفیدتون من دقیقا برای FastGPIO (در NanoPi NEO) به چنین دسترسی نیاز داشتم و تحت لینوکس به صورت رجیستری با زبان C برنامه نویسی کردم ولی این روشی که شما ارائه کردید بسیار مفیدتر و در خور الکترونیکیها است. موفق باشید.
با سلام و خدا قوت. مقالات مربوط به استفاده از رزبری بدون سیستم عامل واقعا عالیه. امیدوارم این سری آموزش ها ادامه پیدا کنه. لطفا در مورد همین مقالات درباره ایجاد تصاویر بر روی صفحه مانیتور و استفاده از کارت گرافیک رزبری هم آموزش بدید. بسیار بسیار تشکر
سلام علیکم بسیار از شما ممنونم خیلی بحث جالبی برای بنده هست و من دارم با پیگیری این بحث دنبال میکنم میشه درباره این موضوع ( برنامهنویسی با رزبری پای بدون سیستمعامل ) چندتا مرجع هم معرفی کنید؟
سلام دوست عزیز خیلی خوشحالم که مطلب مورد توجه دوستان قرار گرفته است ، حمایت شما دوستان عزیز ما را در ادامه راه دلگرم می کند. در خصوص منبع ، منابع زیادی وجود داره ، بستگی داره که شما بخواید از چه مرحله ای شروع به یادگیری کنید ، مثلا Programmer’s Guide for ARMv8-A توسط خود شرکت آرم ارائه شده به معرفی معماری ساختار و نحوه کد نویسی اشاره کرده در خصوص کامپابل کد و تنظیمات مربوط به کامپایلر با توجه به متن باز بودن کامپایلر GCC مطالب زیادی در خصوص نحوه کانفیگ و اضافه کردن فایل های مورد نیاز وجود دارد.
با سلام خسته نباشد… سوال من اینه که اگر به زبان C برای رزبری برنامه بنویسیم، باز هم میتونیم از امکانات سطح بالای رزبری استفاده کنیم؟ مثلا میتونیم ال سی دی گرافیکی رو باهاش راه بندازیم یا همزمان به اینترنت وصلش کنیم؟
سلام و درود دوست عزیز در واقع با زبان سی میشه هر کاری انجام داد ، حتی سیستم عامل نوشت و این که چقدر ما میتونیم از زبان سی استفاده کنیم برمیگرده به دانش خودمون ! ما در این آموزش ها سعی میکنیم نحوه کار کردن با پورت های ورودی و خروجی (مثل UART,SPI,I2C)، راه اندازی واحد GPU و شاید USB رو آموزش بدیم. استفاده بیشتر از اون برمیگرده به تلاش و دانش شما ، ولی قطعا با زبان C هرکاری که مد نظرتون باشه رو میتونید انجام بدید دوست من.
با سلام وخسته نباشید بابت اموزش های خوبتون
کار با پردازنده ها بدون سیستم عامل هایی مثل لینوکس و ویندوز و … جالبه هست. اما یه سوال سیستم های جایگزین برای اون ها هم وجود داره(مثلا free rtos)؟
سلام خواهش میکنم دوست عزیز
بله هست – الان سیستم عامل های قویی با بیس rtos هست که حتی گرافیک هم ارائه میکنن
http://www.stevebate.net/chibios-rpi/GettingStarted.html
با عرض سلام و خسته نباشد خدمت جناب زئوس
من اخیرا به دنبال این بودم که گوشی های قدیمی که تو خونه افتاده رو برای یک استفاده جدید به کار بگیرم.
اولی یک گوشی لمسی تاچ مقاومتی dimo بدون سیستم عامل بود با برسی مشخص شد که cpu اونmt6252 هست با توجه به اینکه خیلی قدیمی بود به راحتی datesheet رو پیدا کردم و متوجه شدم هسته اون ARM7EJ-S هستش البته کلاکش 104 مگاهرتز بیشتر نیست خوب برای شروع خوبه باتوجه به وجود USB و GSM و LCD
خواستم یکم بیشتر جلو برم یک گوشی G630 هوآوی داشتم CPU اونmsm8212 بود خوب حالا دیگه کلا قضیعه فرق میکنه هر قدر با پیشوند و پسوند های مختلف جست و جو کردم هیچ نیایفتم که نیایفتم.
البته احساس می کنم سیاست های شرکت های بی تاثیر نیست چون مدل های نسبت جدید mediatek رو تونستم تو سایت چینی پیدا کنم که اونم تازه قابل دانلود برای ما نبود.
ولی خوب قدیمی ترین مدل های Qualcomm رو هم پیدا نکردم چه برسه به hisilicon و Exynos
خوب سوالی که دارم آیا روش خاصی برای پیدا کردن این گونه اسناد دارید ؟
اگر درست فهمیده باشم کلا این طور سند ها برای عموم قابل دسترسی نیست؟
تازه از بحث نرم افزار هم بگذریم که یک جا دیدم سورس bootloader اولیه یک مدل از هوآوی رو تحلیل کرده بود که که من هر چی گشتم پیدا نکردم
این کاری که میخواید بکنید جالبه ولی شما به اطلاعاتی بیشتر از دیتاشیت نیاز دارید 🙂
توی دیتاشیت نهایتا در مورد رجیستر ها و کارکرد اونها به شما توضیح میده اما برای پورت کردن سیستم عامل دلخواهتون به اطلاعات خیلی بیشتری نیاز دارد. کمترین چیزی که نیاز دارید بدونید ساختار لینوکس – نحوه بوت و …. هست.
خوب پیشنهاد من به شما اینه که از سیستم عاملی که روی برد هست استفاده کنید و اونو برای کار خودتون کاستوم کنید. با این کار دیگه نیازی به کامپایل مجدد هسته و بوت لودر و … ندارید. الان همه هی آماده است و نیازه که ازشون استفاده بشه فقط 🙂
اگه گوشی اندرویدی دارید برای اتصال بهش برید دنبال کلمه کلیدی adb تا بتونید خط فرمان یا همون شل لینوکس ازش بگیرید. اینطوری به سادگی میتونید برنامه تون رو بنویسید و روش اجرا کنید(حتی بدون اندروید استودیو).
با تشکر
درمورد بخش دوم نظری ندارید در مورد اسناد فنی؟
فکر کنم منظورتون پیدا کردن مستندات فنی هست برای چیپ – اگر درست متوجه شدم باشم
اگر توی اینترنت پیدا نکردید یکی از راه ها مطرح کردن توی فروم های خارجی هست و اگر به نتیجه نرسیدید مکاتبه با شرکت تولید کننده است
جز این موارد راه دیگه ای به ذهنم نمی رسه
سلام تشکر زئوس
برنامه من خطا داد، لطفا راهنمایی کنید (رزبری سه که تنظیمات پروژه رو به صورت عکس زیر اعمال کردم)
http://uupload.ir/files/c0zd_rp3.jpg
23:49:35 **** Incremental Build of configuration Debug for project 2 ****
make all
‘Building file: ../src/2.cpp’
‘Invoking: Cross G++ Compiler’
arm-linux-gnueabihfg++ -I”C:\SysGCC\raspberry\include\gdb” -I”C:\SysGCC\raspberry\lib\gcc\arm-linux-gnueabihf\8\include” -I”C:\SysGCC\raspberry\lib\gcc\arm-linux-gnueabihf\8\include-fixed” -I”C:\SysGCC\raspberry\arm-linux-gnueabihf\lib\include” -I”C:\SysGCC\raspberry\arm-linux-gnueabihf\lib\include-fixed” -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF”src/2.d” -MT”src/2.o” -o “src/2.o” “../src/2.cpp”
‘arm-linux-gnueabihfg++’ is not recognized as an internal or external command,
operable program or batch file.
make: *** [src/2.o] Error 1
“make all” terminated with exit code 2. Build might be incomplete.
23:49:36 Build Failed. 1 errors, 0 warnings. (took 571ms)
سلام دوست عزیز فکر میکنم دستور کامپابل رو اشتباه وارد کردید
خیلی واضح داره میکه arm-linux-gnueabihfg++ رو پیدا نمیکنه
فکر کنم دستور درستش arm-linux-gnueabi-g++ باشه
سلام دوباره بر زئوس خدای خدایان
برنامه بدون ارور build شد و دو فایل .elf و kernel.img رو تولید کرد. من قبلا کراس کامپایلر رو با یه روش دیگه انجام داده بودم (برای SSH) بخاطر همین تنظیمات اکلیپس بهم ریخته بود به همین علت بیلد نمیشد تا اینکه پوشه .metadata رو پاک کردم تا تنظیمات اکلیپس به حالت اول برگرده و دوباره تنظیمات رو طبق این آموزش انجام دادم که درست شد.اما ال ای دی چشمک نمیزنه و بطور کل خاموش هست.
1- من تنظیمات target properties رو برای رزبری 3 به صورت زیر تغییر دادم. آیا درسته؟
http://uupload.ir/files/lz3_rp3.jpg
2- دو فایل کرنل و elf رو کپی و داخل مموری ریختم، همین کافی هست؟
3- یا علاوه بر اینها به اون دو فایل دیگه (bootcode, config) که در آموزش قسمت دوم برای رزبری نسخه دو گذاشتید نیاز هست؟
4- در ضمن شماره پایه ال ای دی در مدل دو و سه یکسان هستند؟
چون من این قسمت رو تغییر ندادم
تشکر از راهنمایی
جواب کامنت دوم رو دادم فکر میکنم جواب های این کامنت رو بتونید توش پیدا کنید
ببخشید که دیر شد پاسخ گویی
سلام
خروجی کرنل و elf برای من تولید میشه اما ال ای دی چشمک نمی زنه. تنظیماتی که برای رزبری سه انجام دادم درسته ؟(تصویر زیر)
http://uupload.ir/files/z0v5_untitled.jpg
من xbian رو روی مموری رایت کردم بعد همه فایل ها به غیر از start.elf, fixup.dat, bootcode ,config رو حذف کردم بعد فایل کرنل ساخته شده توسط اکلیپس رو کنار این فایل ها روی مموری ریختم (لیبل مموری هم BOOT هست).
بعد از روشن کردن رزبری، اول یک بار چراغ سبز روشن میشه و بعد خاموش میمونه. و خبری از چشمک زدن نیست.
برای تست، فایل elf ساخته شده توسط اکلیپس رو هم تغییر نام به start دادم و جایگزین فایل elf قبلی کردم اما بازم جواب نداد. (ما به فایل elf ساخته شده توسط اکلیپس کاری نداریم؟)
تشکر از راهنمایی و امیدوارم جواب بدهید
سلام دوست عزیز
خوب البته که نباید کار کنه ! ما اینجا داریم توی لایه های پایین با سخت افزار مستقیم حرف میزنیم ، قطعا مدار رزبری پای ۳ متفاوته از رزبری پای ۱ هست برنامه ای که ما نوشتیم برای سخت افزار رزبری پای ۱ است نه زربری پای ۳ .
با عوض شدن پردازنده آدرس ها هم عوض میشه نحوه کار با سخت افزار هم ممکنه عوض بشه و خیلی چیز های دیگه هم ممکنه عوض بشه پس باید برنامه رو برای کار با سخت افزار موردنظر تغییر بدید.
سلام .
سپاس بابت مطلبی که نوشتین.
من از true studio برای stm32 استفاه میکنم .
ادیتورش eclips هست .و کمپایلرش هم gcc . شرکت st ساپورتش میکنه .
توی تصاویر در قسمت در قسمت ساخت پروژه و انتخاب project type :
علاوه بر گزینه انتخاب شما گزینه های دیگه برای میکروهایی مثل stm32F0xx و غیره داره .
اینها هم مربوط به همین کمپایلر مورد بحث این مطلب هستند ؟
چون در حال حاضرکمپایلر محیط true studio این میکروها رو ساپورت میکنه. اگر plugin این مطلب رو به true studio اضافه کنم ایا با کمپایلر خود true studio دچار تداخل نمیشه . مشکلی براش پیش نمیاد ؟
من از این ابزار استفاده نکردم ولی خوب باید توجه داشته باشید هسته های آرم کد های یکسانی رو اجرا میکنن که این باعث میشه کامپایلر های یکسانی هم داشته باشند.
با سلام .
راستش توی ین فرصت توی اون نرم افزار یکم کنجکاوی کردم و به نتیجه جالب رسیدم .
در واقع نیاز به نصب کمپایلر جدید نداره . کمپایلر خودش نسخه 6 هست .
و تمام هسته های کورتکس a , m و R رو ساپورت میکنه . فقط هیچ هدری در کار نیست .
با این حال وقتی کد مثال این مطلب رو کمپایل توی tru studi برای cortex a7 کمپایل کردم باز هم مثل کمپایلری که توی نظرات مربوط به قسمت سوم توضیح داده بودم . این اخطار رو میداد.
cannot find entry symbol _start de defulting 00008000
این وارنینگ حل بشه true studio جالب واقعا چیز جالبی خواهد بود. چون در حال حاظر برای avr هم با معرفی کمپایلر avr gcc به اون میشه کد نوشت . و من همون آموزش شما برای کمپایلر sdcc رو برای avr gcc پیاده کردم و موفقیت آمیز بود!!!
خوب ادیتور که تکلیفش مشخصه بنده خدا همون ایکلیپسه دیگه – چند تا پلاگین اضافه نصب کردند
در مورد کامپایلر درست می فرمایید فرقی نمیکنه جز ورژنشون – اما در مورد وارنینگی که دارید دریافت میکنید در واقع کامپایلر از تابع _start کار خودش رو شروع میکنه این تابع جایی است که مقداردهی های اولیه انجام میشه و بعد از اون تابع MAIN داخل همین تابع کال میشه
احتمالا نمونه اش رو میتونید کد های میکروکنترلر st پیدا کنید. چند تا راه دارید این که تابع _start رو خودتون بنویسید یا این که کد MAIN رو داخل این تابع بنویسید
شما برنامه رو با فلگ -nostartfiles کامپایل کنید احتمالا مشکل حل میشه
خوب ادیتور که تکلیفش مشخصه بنده خدا همون ایکلیپسه دیگه – چند تا پلاگین اضافه نصب کردند
در مورد کامپایلر درست می فرمایید فرقی نمیکنه جز ورژنشون – اما در مورد وارنینگی که دارید دریافت میکنید در واقع کامپایلر از تابع _start کار خودش رو شروع میکنه این تابع جایی است که مقداردهی های اولیه انجام میشه و بعد از اون تابع MAIN داخل همین تابع کال میشه
احتمالا نمونه اش رو میتونید کد های میکروکنترلر st پیدا کنید. چند تا راه دارید این که تابع _start رو خودتون بنویسید یا این که کد MAIN رو داخل این تابع بنویسید
شما برنامه رو با فلگ -nostartfiles کامپایل کنید احتمالا مشکل حل میشه
توی true studio هم توی قسمت c linker یه بخشی داشت ظاهرا مال فلگها بود و اینا رو -Wl,-cref,-u,Reset_Handler, اونجا نوشته بود. منم اون فلگی رو که فرموده بودید اونجا نوشتم و کمپایل کردم باز هم همون اخطار رو میداد.
و طبق مطالب قسمت سوم ، فایل .c رو از طریق خط فرمان با همون دستوری که توی قسمت سوم اومده با همون نسخه 2019و 2016 کمپایل کردم و همون وارنینگ رو میداد . وقتی دقت کردم دیدنم همچین پارامتری توی اون دستور هست . ایناها:
arm-none-eabi-gcc -O0 -mfpu=neon-vfpv4 -mfloat-abi=hard -march=armv7-a -mtune=cortex-a7 -nostartfiles -g blinkact.c -o kernel.elf
حالا سر فرصت یکبار هم با همون نسخه ای که معرفی کردید تست میکنم ببینم چی میشه .
سپاس بابت زحماتی که میکشید.
سپاس.
حالا یه سوال پیش میآد برام با این وارنینگ چک کردید ببینید کار هم میکنه یا نه ؟
من یادم نیست جزییاتش رو مال خیلی وقت پیشه قضیه – شاید منم این وارنینگ رو میگرفتم و الان حضور ذهن ندارم.
سلام .
نه …چک نکردم . هنوز بورد نگرفتم . فعلا دارم ابزارهاش رو جمع میکنم .
سپاس جناب زئوس
خواهش میکنم دوست عزیز ! منتظر نتیجه تست هستم 🙂
سلام
روی رزبري میشه برنامه نویسی اندروييد انجام داد؟ با همین جاوا
برنامه دسکتاپ برای ویندوز و لینوکس و مکانتيش چطور میشه نوشت؟
سلام فکر میکنم ورژن های جدید رزبری پای آندروید رو هم پشتیبانی میکنند و مشکلی نباشه
بله با جاوا میشه برنامه برای همه پلتفرم ها نوشت و یکی از خوبی های جاوا همین مولتی پلتفرم بودنش هست 🙂
سلام ممنون از به اشتراک گذاشتن دانشت.
منو یه دوربین مداربسته تحت شبکه دارم و قصد دارم با یک کابل مبدل اترنت به میکرو یو اس پی اونو به رزبری پای زیرو وصل کنم و روی بیت هایی که میاد یه رمز نگاری ساده انجام بدم (مثلا جابه جایی بیت ها) و از یه پین اونارو بیرون بفرستم.
به نظرت شدنی هست؟واگه هست میشه بگید که بهتره سیستم عامل رو نصب کنم یا نه و اینکه چه مطالبی میتونه کمکم کنه.
ممنونم
سلام دوست عزیز
خوب باید دید تغییرات چقدره ولی من فکر میکنم برای انجام این کار با سیستم عامل نهایتا چند ساعت وقت لازم است ولی اگر بخواید بدون سیستم عامل انجامش بدید به چند روز وقت نیاز دارید
چرا که باید تمام لایه های شبکه رو برنامه نویسی کنید و البته راه اندازی سخت افزار های مورد نیاز هم هست
پس منطقیه که از سیستم عامل استفاده کنید.
سلام
خیلی ممنون از اموزشتون
یه سوال داشتم
من وقتی میرم که گنو رو از لینکی که دادید دانلودکنم فایل exe نداره فقط zip هست توی پوشه ها هم فایل setup.xexنداره چه طور باید نصبش کنم؟
سلام دوست عزیز
چرا میخواید گنو رو دانلود کنید ؟ ؛ تو آموزش ها ما که از گنو استفاده نکردیم ؟!
سلام ، بسیار عالی بود، لطفا این آموزش رو ادامه بدید!
خواهش میکنم دوست عزیز
واقعا دوست دارم این کار رو بکنم ولی متاسفانه زمان کم میآرم
سلام دوستان
من جدیدترین ورژن نرم افزار eclipse و gcc رو نصب کردم و تقریبا چندین ساعت وقتمو گرفت تا متوجه شدم که مشکل از اموزش نیست و بعد از تحقیق کردن به این نتیجه رسیدم که اگر کسی مایل به نصب این نرم افزار هست از gcc ورژن 4 و از eclipse mars استفاده کنه و کاملا با اموزش ها همخونی داره.
امیدوارم مفید باشه براتون.
سلام و درود دوست عزیز
متشکرم برای اطلاع رسانی تون 🙂
ممنونم از سایت خووبتون.امیدوارم تداوم داشته باشه
خواهش میکنم دوست عزیز
انشالله که با همراهی شما دوستان عزیز ؛ بتونیم این حرکت رو ادامه بدیم
سلام
متشکر از آموزش عالی و خوبتون
یه نکته فقط شما که به این خوبی از ابتدای نصب ویرایشگر توضیح دادید چرا در انتها اموزش رو کامل نکردید ونگفتید که با بین فایل خروجی چه کنیم و چطوری مبکرو اس دی رو آماده کنیم و خرکجی رو با یه فیلم یا عکس به پایان میرسوندید خیلی عالی تر میشد
در انتها بازم بسیار بسیار ممنونم
سلام دوست عزیز
خواهش میکنم ، بله حق با شماست ، فکر میکردم تو قسمت های قبلی به این موضوع اشاره کردیم. سعی میکنیم کامل کنیم این بخش رو
متشکرم
زنده پایدار باشی عزیز
این سوالاتی بود که در ذهن من رقم خورد شاید در ذهن دوستان دیگر هم اومده باشه اگه اینها رو هم توضیح بدید خیلی عالی میشه:
1-بوت فایل چیه و چجوری ساخته میشه
2-کرنل فایل چیه و در حقیقت تفاوتش با بوت فایل چیه و در چه قسمت از حافظه لود میشه
3-آیا فقط باید این دو فایل در حافظه اس دس ذخیره بشه یا راه روی نور فلش و یا انواع دیگه فلش هم امکان پذیره
4-اس دی کارت رو فقط فرمت ساده کنیم کافیه یا نیاز به یه بوت سکتور داره ؟
5-اگه بوت سکتور میخواد چجوری بوت سکتور رو ایجاد کنیم و اگه میشه برنامه بوت سکتور رو هم توضیح بدید.
و سوالاتی از این دست که جاش توی آموزش زیباتون خالیه
بازم ممنون
سلام و درود دوست عزیز ؛ این موارد رو حتما در پستی جداگانه بهشون خواهیم پرداخت
و انشالله سعی خواهیم کرد ، دوباره این آموزش ها رو از سر بگیریم 🙂
سلام . عالی بود. من یه رزبری پای 3 دارم که میکرو coretex-a53 روش داره . خواستم ببینم این آموزش اونم شامل میشه یا فرق داره ؟
چون همه کارارو انجام دادم ولی خروجی kernel.img نداد. ارورش اینه:
make all
Invoking: Cross ARM GNU Create Flash Image
{COMMAND} -O binary “start_raspberry.elf” kernel.img
c:/users/mehran/appdata/roaming/gnu mcu eclipse/build tools/2.11-20180428-1604/bin/sh: {COMMAND}: not found
make: *** [makefile:50: start_raspberry.bin] Error 127
10:00:13 Build Failed. 1 errors, 0 warnings. (took 616ms)
سلام و درود دوست عزیز
خوب قائدتا باید بگم که بله ، فرق میکنن ، مخصوصا آدرس ها !
اما مشکل شما در این مرحله مربوط به این تفاوت نیست ، مشکل توی خروجی گرفتن فایل کرنل هستش ؛ که فکر کنم خط زیر رو درست وارد نکردید
${COMMAND} ${FLAGS} ${OUTPUT_FLAG} ${OUTPUT_PREFIX} kernel.img
احتملا $ ابتدایی رو نگذاشتید ، اگر اینو اصلاح کنید فکر نمیکنم برای کامپال مشکل دیگه ای باشه ، باقی قسمت ها به درستی انجام شده ظاهرا
ممنون از پاسخ . ولی اونو درست وارد کردم .ممکنه gnu tools درست نصب نشده باشه ؟
یه سوال دیگه هم داشتم ازتون . من رشته ام الکترونیک قدرته . واسه کنترل مدار از ARM باید استفاده کنیم و اغلب به خاطر قیمتش از STM استفاده میکنن. من یه رزبری پای 3 از قبل داشتم . آیا میتونم با همین کار منم و یاد بگیرم ؟
یا بهتره یه برد ARM بخرم ؟
خواهش میکنم ، ببینید خطایی که دریافت میکنید اینه که میگه فایل {COMMAND} رو پیدا نکردم ، قائدتا باید این جایگزین میشد ، پس حدس میزنم مشکل اینه که احتملا این دستور درست وارد نشده باشه !
توصیه میکنم برای شروع یادگیری به سرغ میکروکنترلر برید ، برد های raspberry از پردازنده ARM استفاده می کنند و پیچیدگی زیاد تری دارند ، پس اگر به سراغ میکروکنترلر ARM حالا هر خانواده ای که دوست دارید بهتره و فکر میکنم سریعتر هم به جواب دلخواه هم میرسید.
ما آموزش های st رو روی سایت قرار دادیم که برای شروع یادگیری میتونید از اونها استفاده کنید.
آموزش stm32
سلام
ممنون از مطالبتون ، میشه برای ویرایش کد از اتمل استدیو استفاده کرد
قطعا میشه از هر ویرایشگری استفاده کرد
حتی فکر میکنم اتمل استودیو که از ARM هم پشتیابانی میکنه از تولچین GCC برای کامپایل استفاده میکنه و با ساخت Makefile مناسب میشه با اتمل استودیو کدها رو کامپایل کرد حتی
آیا این آموزش ها ادامه خواهید داشت ؟
بله به زودی آموزش ها از سر گرفته خواهد شد دوست عزیز.
سلام
ممنون از مطالب بسیار مفیدتون
من دقیقا برای FastGPIO (در NanoPi NEO) به چنین دسترسی نیاز داشتم و تحت لینوکس به صورت رجیستری با زبان C برنامه نویسی کردم ولی این روشی که شما ارائه کردید بسیار مفیدتر و در خور الکترونیکیها است.
موفق باشید.
متشکرم
سلامت باشید دوست عزیز
خوشحال میشم در انتشار ادامه مطالب بتونم باهاتون همکاری کنم
باعث خوشحالی است
با تلگرام سیسوگ در ارتباط باشید/
لطفا ادامه بدید
ان شالله به زودی قسمتهای جدید رو هم قرار میدیم. ممنون از کامنت شما.
سلام. در مورد استفاده از ECLIPS برای AVR نیز توضیح بدید . ممنون
بله حتما ، توی لیست کارها قرار داره
انشالله منتشر می کنیم
با سلام و خدا قوت.
مقالات مربوط به استفاده از رزبری بدون سیستم عامل واقعا عالیه. امیدوارم این سری آموزش ها ادامه پیدا کنه.
لطفا در مورد همین مقالات درباره ایجاد تصاویر بر روی صفحه مانیتور و استفاده از کارت گرافیک رزبری هم آموزش بدید.
بسیار بسیار تشکر
سلام و درود دوست عزیز
متشکرم ، انشالله ، به زودی دوباره این مقاله رو از سر خواهیم گرفت
سلام
من متوجه نشدم چرا ابزار های لینوکسی gnu رو نصب میکنیم؟
من که تازه کارم و میخوام با AVR برنامه بنویسم هم باید اینو نصب کنم؟
اگر تازه شروع به کار کرده اید پیشنهاد میکنم از اتمل استودیو استفاده کنید ، تمام مقدمات اولیه رو انجام میده و شما نیاز به نصب بسته اضافی نخواهید داشت.
سلام علیکم
بسیار از شما ممنونم خیلی بحث جالبی برای بنده هست و من دارم با پیگیری این بحث دنبال میکنم میشه درباره این موضوع ( برنامهنویسی با رزبری پای بدون سیستمعامل ) چندتا مرجع هم معرفی کنید؟
سلام دوست عزیز
خیلی خوشحالم که مطلب مورد توجه دوستان قرار گرفته است ، حمایت شما دوستان عزیز ما را در ادامه راه دلگرم می کند.
در خصوص منبع ، منابع زیادی وجود داره ، بستگی داره که شما بخواید از چه مرحله ای شروع به یادگیری کنید ،
مثلا Programmer’s Guide for ARMv8-A توسط خود شرکت آرم ارائه شده به معرفی معماری ساختار و نحوه کد نویسی اشاره کرده
در خصوص کامپابل کد و تنظیمات مربوط به کامپایلر با توجه به متن باز بودن کامپایلر GCC مطالب زیادی در خصوص نحوه کانفیگ و اضافه کردن فایل های مورد نیاز وجود دارد.
با سلام خسته نباشد…
سوال من اینه که اگر به زبان C برای رزبری برنامه بنویسیم، باز هم میتونیم از امکانات سطح بالای رزبری استفاده کنیم؟ مثلا میتونیم ال سی دی گرافیکی رو باهاش راه بندازیم یا همزمان به اینترنت وصلش کنیم؟
سلام و درود دوست عزیز
در واقع با زبان سی میشه هر کاری انجام داد ، حتی سیستم عامل نوشت و این که چقدر ما میتونیم از زبان سی استفاده کنیم برمیگرده به دانش خودمون !
ما در این آموزش ها سعی میکنیم نحوه کار کردن با پورت های ورودی و خروجی (مثل UART,SPI,I2C)، راه اندازی واحد GPU و شاید USB رو آموزش بدیم.
استفاده بیشتر از اون برمیگرده به تلاش و دانش شما ، ولی قطعا با زبان C هرکاری که مد نظرتون باشه رو میتونید انجام بدید دوست من.