ARM, توصیه شده, رزبری پای, رزبری پای بدون سیستم عامل, مقاله های سیسوگ

پیکربندی و نصب ابزار مورد نیاز برای کامپایل برنامه در رزبری پای – آموزش برنامه‌نویسی رزبری پای – قسمت سوم

raspberry pi without os

در مقاله دوم آموزش رزبری پای، به معرفی ساختار CPU نحوه اجرای برنامه در رزبری پای پرداختیم. در این مقاله قصد داریم نحوه نصب و کانفیگ ابزارهای لازم جهت کامپایل کدهای نوشته‌شده برای بردهای رزبری پای را آموزش دهیم.

همان‌طور که قبلا توضیح دادیم، پلتفرم سخت‌افزاری رزبری پای مبتنی بر پردازنده های ARM است و نمی‌توان از کامپایلرهای x86 مثل ویژوال استودیو برای کامپایل کدهای زربری استفاده کرد.

برای آشنایی با ابزارهای لازم و نحوه نصب و کانفیگ آن‌ها با سیسوگ همراه باشید.

معرفی کامپایلر‌های موجود:

معرفی کامپایلر

معرفی کامپایلر

واضح است برای تبدیل کدهای نوشته‌شده به بیت کدهای قابل‌فهم توسط پردانده، نیاز به ابزاری است که اصطلاحاً به آن کامپایلر می‌گویند. کامپایلری که برای تبدیل کدهای رزبری پای موردنیاز است باید قابلیت کامپایل برای پلتفرم ARM را داشته باشد. کمپایلرهای زیادی وجود ندارند که دارای چنین قابلیتی باشند. کامپایلر هایی که قادر به پشتیبانی پلتفرم ARM باشند، (معروف‌ترین آن‌ها) به شرح زیر هستند:

  1. ARM Keil
  2. ARM IAR
  3. GCC

بله، تقریبا همین سه مورد! ممکن است فکر کنید که خب Atmel Studio یا CooCox و خیلی از ایزار های دیگر قابلیت کامپایل برای ARM را دارند ولی باید خاطرنشان کنم که هم‌اکنون در خصوص کامپایلر صحبت می‌کنیم و موارد ذکرشده فقط ویرایشگر کد هستند و خود دارای کامپایلر نیستند. به‌عنوان نمونه SEGGER Embedded Studio و حتی Atmel Studio از GCC استفاده می‌کنند.

از چه کامپایلری استفاده کنیم؟

تصمیم‌گیری در خصوص کامپایلر مورداستفاده با توجه به لیست معرفی‌شده چندان دشوار نیست. کامپایلر Keil و IAR هردو غیر رایگان هستند و برای استفاده از آن‌ها باید لایسنس آن‌ها را خریداری کرد. ما در سیسوگ سعی می‌کنیم که به معرفی و استفاده از ابزارهای متن‌باز و رایگان بپردازیم. با توجه به پولی بودن کامپایلرهای Keil و IAR از آن‌ها چشم‌پوشی کرده و آموزش‌های خود را بر اساس کامپایلر رایگان GCC ادامه می‌دهیم.

اما در نظر داشته باشید که انتخاب کامپایلر رایگان GCC از روی ناچاری نیست. یکی از دلایل انتخاب این کامپایلر، انعطا‌ف‌پذیری زیاد و برتری آن نسبت به کامپایلر Keil است. شاید نتوان گفت که از IAR قوی‌تر است اما به جرئت می‌توان گفت که چیزی از آن کم ندارد و عملکردی بسیار نزدیک به یکدیگر دارند.

کامپایلر GCC چنان قدرتمند است که حتی ARM Keil امکان استفاده از آن را در محیط خود، به کاربر می‌دهد و کاربر می‌تواند بسته به نیاز از ویرایشگر Keil و کامپایلر GCC استفاده کند.

کامپایلر GCC

کامپایلر GCC

از طرفی رایگان و متن‌باز بودن کامپایلر GCC، باعث شده است که افراد زیادی در سراسر جهان از آن استفاده کنند و در بهینه‌سازی این کامپایلر مشارکت داشته باشند. با توجه به طیف وسیع استفاده‌کننده‌های این کامپایلر، اگر احیاناً در قسمتی دچار مشکل شدید به‌راحتی با جستجو در اینترنت می‌توانید  منشأ مشکل را پیدا و آن را حل کنید. از طرفی بیشتر سورس‌های منتشرشده، با استفاده از این کامپایلر انجام شده‌اند.

چگونگی نصب کامپایلر GCC:

نصب و راه‌اندازی GCC کار پیچیده ای نیست و به‌راحتی قابل انجام است. اگر از لینوکس استفاده می‌کنید، لبخند بزنید چرا که برای نصب و پیکر‌بندی کافی ست فقط خط زیر را در ترمینال تایپ کنید:

دقت داشته باشید که دستور فوق برای نصب بر روی توزیع‌های مبتنی بر دبیان است.

اما کاربران ویندوز نیاز است که یکی دو مرحله بیشتر طی کنند. ولی جای نگرانی نیست. مراحل خیلی ساده هستند و می‌توان به‌راحتی آن‌ها را انجام داد.

در مرحله اول با مراجعه به سایت GCC ARM Embedded ، آخرین نسخه مبتنی بر ویندوز خود را دریافت کنید.

راهنمای نصب کامپایلر GCC

چگونگی نصب کامپایلر GCC

نکته : دقت کنید که حتما نسخه نصبی را دانلود کنید. 

بعد از دانلود فایل نصبی کامپایلر GCC، به‌راحتی مثل نصب دیگر نرم‌افزار‌‌ها، مطابق ویدئو زیر کافی ست که بر روی دکمه Next کلیک کنید تا کار نصب خودکار انجام شود:

 

بعد از تمام شدن مراحل نصب، برای بررسی نصب صحیح می‌توان دستور زیر را در خط فرمان (Command Prompt ویندوز یا ترمینال لینوکس) وارد کرد:

در صورت نصب صحیح برنامه‌های موردنیاز، با اجرای دستور فوق، خروجی مطابق زیر خواهد بود:

این خروجی یعنی تمام کارهای مربوط به نصب و پیکربندی به‌درستی انجام شده است.

نوشتن اولین برنامه

همیشه سخت‌ترین قسمت کار، نوشتن اولین برنامه است؛ چرا که پارامترهای زیادی وجود دارد که ممکن است در کار نکردن یک برنامه دخیل باشند و پیدا کردن مشکل را سخت کنند.

برای همین هم است که معمولاً اولین برنامه را در ساده‌ترین حالت ممکن انتخاب می‌کنند. در دنیای کامپیوتر برنامه شروع را  Hello world می‌نامند و به‌سادگی کد زیر است:

اما در دنیای الکترونیک وضع مقداری فرق دارد. پیاده‌سازی فرمان printf خود مستلزم آگاهی بسیار زیادی از اجزاء سخت‌افزاری و نرم‌افزاری است. به همین دلیل معمولاً برنامه شروع در دنیای الکترونیک خیلی متفاوت از آن چیزی است که در دنیای کامپیوتر وجود دارد. در دنیای الکترونیک برای شروع با هر سخت‌افزار و یا میکرو کنترلر، ابتدا سعی می‌شود برنامه یک چشمک‌زن نوشته شود. یعنی برنامه ای که با صفر و یک کردن یکی از پورت های موجود بر روی سخت‌افزار، بتوان به صحت اجرای برنامه پی برد. در واقع ساده‌ترین برنامه‌ای که می‌توان نوشت، برنامه یک چشمک‌زن است. برای همین است که در اکثر بردهای آموزشی، حداقل یک LED وجود دارد که می‌توان وضعیت آن را با استفاده از پردازنده مرکزی کنترل کرد. سخت‌افزار رزبری پای نیز از این قاعده جدا نبوده و خوشبختانه یک LED به نام ACT بر روی آن تعبیه شده است.

رزبری

رزبری پای

برای شروع، باید بدانیم که این LED به کدام پایه از پردازنده متصل شده است. با توجه به سخت‌افزار های متفاوت در ورژن های مختلف برد رزبری، لازم است که یکی را به‌عنوان سخت‌افزار پیش‌فرض در نظر بگیریم و آموزش را بر اساس آن جلو ببریم. با توجه به قدیمی شدن ورژن 1 و کمیاب شدن آن در بازار، سخت‌افزار پیش‌فرض را Raspberry pi 2 در نظر می‌گیریم.

قبل از هر چیز برای دانستن وضعیت اتصال ACT LED، باید شماتیک برد را داشته باشیم. خوشبختانه شماتیک آن توسط تیم توسعه‌ی رزبری پای در دسترس قرار گرفته است. برای دانلود شماتیک میتوانید به سایت رزبری پای مراجعه کنید.

شماتیک برد

شماتیک برد

همان‌طور که در تصویر فوق مشاهده می‌کنید، ACT LED که در شماتیک به‌صورت Status LED از آن نام برده شده به GPIO16 از پردازنده متصل شده است. در گام بعدی برای این‌که بتوانیم وضعیت یک GPIO را کنترل کنیم لازم است با ساز و کار مربوط به آن آشنا شویم و در واقع نیاز به دیتاشیت پردازنده داریم که خوشبختانه آن نیز در دسترس قرار گرفته است.

با توجه به اطلاعات به‌دست‌آمده در خصوص سخت‌افزار و هم‌چنین رجیسترهای کنترلی پردازنده، به‌راحتی می‌توان برنامه مورد‌نظر را نوشت. در این بخش از مقاله بیش از این وارد جزئیات نوشتن و عملکرد برنامه نمی‌شویم. در مقالات بعدی با توضیحات بیشتر، به نحوه پیاده‌سازی و کار با رجیستر های پردازنده خواهیم پرداخت.

چگونگی کامپایل برنامه

برنامه فوق را با اسم blinkact.c ذخیره می‌کنیم. برای کامپایل برنامه قبل از هر مسئله‌ای نیاز است که یک سری تنظیمات را در خصوص پلتفرم مورد‌استفاده انجام بدهیم که خوشبختانه با توجه به کامند لاین بودن کامپایلر GCC، تمام تنظیمات مربوطه به‌صورت پارامترهای ورودی دریافت می کند. برای کامپایل برنامه فقط کافی است که دستور زیر را یا در ترمینال یا کامند پرامپت اجرا کنیم:

کلید -mtune=cortex-a7 به کامپایلر می‌گوید که کد موردنظر را برای پردازنده‌های خانواده‌ی Cortex-a7 کامپایل کند و کلید -march=armv7-a به نوع معماری این خانواده اشاره دارد. بعد از اجرای دستور فوق، برنامه کامپایل شده و خروجی kernel.elf ایجاد می‌شود. فایل‌های elf، حاوی اطلاعات زیادی در خصوص کتابخانه‌های مورد‌‌استفاده، پارامترهایی جهت خطایابی و هم‌چنین اطلاعات اجرایی هستند. برای استخراج کدهای اجرایی نیاز است که دستور زیر را اجرا کنیم:

بعد از اجرای دستور فوق، فایل اجرایی kernel.img ایجاد می‎شود.

هم‌اکنون برنامه آماده اجرا است.

 

در مقاله‌ی بعد، ابزارهای مورد‌استفاده را کامل‌تر خواهیم کرد و نحوه کانفیگ ادیتور Eclipse را نیز توضیح خواهیم داد.

انتشار مطالب با ذکر نام و آدرس وب سایت سیسوگ، بلامانع است.

شما نیز میتوانید یکی از نویسندگان سیسوگ باشید.   همکاری با سیسوگ

41 دیدگاه در “پیکربندی و نصب ابزار مورد نیاز برای کامپایل برنامه در رزبری پای – آموزش برنامه‌نویسی رزبری پای – قسمت سوم

  1. Avatar for امیر قارزی امیر قارزی گفت:

    سلام-میشه در مورد کد مخصوصا بخش رجیستر هاشو یک توضیح دهید
    درخواست دیگم این بود که اموزشو ادامه بدهید لطفا

    1. Avatar for zeus zeus گفت:

      سلام دوست عزیز
      رجیسترها رو توی دیتاشیت ماژول میتونید پیدا کنید اونجا عملکرد هر کدوم رو توضیح داده
      اگر دقیقتر بگید کدوم رجیستر بهتر میتونم راهنمایی کنم
      – متشکر از فیدبک شما – انشالله اگر فرصت بشه توی دستور کار هست

  2. Avatar for pooia pooia گفت:

    کن انتخاب می‌کنند. در دنیای کامپیوتر برنامه شروع را Hello world می‌نامند و به‌سادگی کد زیر است:

    main( ) {
    printf(“hello, world”);
    }

    این کد خراب هست شما قبل اسم تابع باید ریترن تایپش هم می دادید قبل main بنویسید void

    1. Avatar for zeus zeus گفت:

      سلام 🙂
      در حالت های مثلا وقتی سیستم عاملی نیست که بخواد تصمیمی بگیره میتونه تابع مین برنامه هیچ چیزی رو برنگردونه و منطقا کسی هم ناراحت نشه بابتش 🙂

      1. Avatar for Pooia Pooia گفت:

        خیلی ممنون

  3. Avatar for حسین حسین گفت:

    سلام .
    وقت بخیر .
    آیا gcc میتواند کد برای پردازنده های 4 هسته را کمپایل کند ؟
    و آیا میتوان تنظیم کرد که کدها فقط به وسیله 1 هسته اجرا شود ؟
    اساسا کدنویسی برای 4 هسته چقدر مشکل است ؟
    تا حالا شما تجربه ای در این زمینه داشته اید؟

    سپاس.

    1. Avatar for زئوس Zeus زئوس Zeus گفت:

      سلام دوست عزیز
      بله قطعا میشه – همین الان کرنل لینوکس داره با gcc کامپایل میشه دیگه !!!
      ولی این که چطور باید ازش استفاده کرد بیشتر برمیگرده به مستندات سازنده پردازنده و میکروکنترلر
      به شخصه تا حالا بدون سیستم عامل از چند پردازنده اسنفاده نکردم ولی فکر نمیکنم خیلی چیز پیچیده ای باشه.

      1. Avatar for حسین حسین گفت:

        میخوام یک بورد بخرم که از لحاظ قیمت تفاوت چندانی با رزبری 0 w نداره ولی پردازنده خیلی قویتری داره و ubuntu 14 lts روی اون اجرا میشه . منتها برام مهمه بتونم بدون سیستم عامل و بدون صرف زمان زیاد ، برای اون کد بنویسم .
        سپاس جناب زئوس.

        1. Avatar for زئوس Zeus زئوس Zeus گفت:

          خوب برای این کار باید با پردازنده اون برد آشنایی داشته باشید – روند های بوت و نحوه بوت اون رو بدونید همونطور که توی این سه مقاله توضیح دادم
          و کار نشد نداره 🙂

      2. Avatar for حسین حسین گفت:

        با سلام مجدد.
        راستش سوییچ های gcc را بررسی کردم .
        برای انتخاب کورتکس گزینه ای به این شکل دیدم cortex-A17.cortex-A7 که فکر میکنم مربوط به 2 هسته باشه ( اگر اشتباه میکنم بنده را اصلاح کنید)
        ولی چیزی که بیانگر 4 هسته باشه ندیدم .
        سپاس.

        1. Avatar for زئوس Zeus زئوس Zeus گفت:

          تا اونجا که من اطلاع دارم هسته ها روند های جدایی از هم طی میکنند و مثلا یک برنامه برای هسته یک نوشته میشه – یکی برای دوم و یکی برای سوم و ….
          فکر نمیکنم زیاد کاری به کامپایلر داشته باشه و بیشتر روند نرم افزاری است مدیریت این مساله

          1. Avatar for حسین حسین گفت:

            سلام .

            اگر قرار باشه توی یک فایل دستورات رو بنویسیم احتمالا باید یک سوییچی باشه که به کمپایلر بفهمونیم این کد مال کدام هسته هست . حالا کمپایلرهای تک هسته میتونن اینکارو بکنن ؟
            کلا من اصلا اطلاعاتی در این زمینه ندارم . و نمیدونم چه رفرنسهایی رو باید مطالعه کنم .
            سپاس

    2. Avatar for Milad Sabri Milad Sabri گفت:

      در حالت کلی برای برنامه نویسی موازی از کتابخانه های openMP و .. استفاده میشه که دستورات اون قبل از بخش هایی از کد که قابلیت موازی سازی شدن دارند مثل حلقه ها آورده میشه تا یک حلقه به صورت موازی بر روی چند هسته اجرا بشه. بنده این رو با Cpp امتحان کردم ولی بر روی آرم اطلاعی ندارم که امکانش هست یا نه
      میشه تحقیق کرد 🙂

  4. Avatar for حسین حسین گفت:

    با سلام مجدد .
    راستش از اون وبسایتی که معرفی کرده بودید موفق به دانلود کمپایلر نشدم .
    اما یک نسخه سال 2019 ( نسخه 8.3.1 ) را دانلود و نصب کردم .
    همان دستوررای کمپایل در خط فرمان وارد کردم از یکسری از دیفاینها خطا گرفت . میگفت GPIO_GPFSEL4 و GPIO_GPSET1 و GPIO_GPCLR1 نمیشناسه .
    به جای اونها یکسری اعداد دلخواه وارد کردم . مشکل برطرف شد. ولی یک warning داد به این مضمون :
    cannot find entry symbol _start de defulting 00008000
    این مربوط چی هست ؟

    1. Avatar for زئوس Zeus زئوس Zeus گفت:

      احتمالا تنظیمات پروژه درست نیست !‌
      یک بار دیگه چک کنید تنظیمات پروژه رو

      1. Avatar for حسین حسین گفت:

        راستش در قسمت سوم هستیم .
        الان که چیزی به نام پروژه وجود نداره که بخواد تنظیما ت داشته باشه!!!
        فایل تکست با پسوند .C رو توی خط فرمان همانطور که در مطلب این قسمت ذکر شده بود کمپایل کردم .
        و اخطار cannot find entry symbol _start de defulting 00008000 رو میده .
        گفتم شاید اشکال از نسخه جدیده باشه ، با نسخه 2016 تست کردم باز هم همین اخطار رو میداد.

        1. Avatar for زئوس Zeus زئوس Zeus گفت:

          من فکر نمیکنم مشکل از نسخه باشه
          تو کامنت های قبلی راه کار رو گفتم تست کنید ببینید درست میشه ؟!

  5. Avatar for حسین حسین گفت:

    سلام بر زئوس گرامی ..
    لینهای دانلود arm gcc vh در سایتی که آدرسش رو برای دانلود قرار دادیدوجود ندارد .
    در قسمت دانلود این رو مینوسه

    Downloads

    GNU Arm Embedded Toolchain does not have any download files registered with Launchpad.
    اگر ممکن است . راهنمایی کنید؟
    با سپاس.

    1. Avatar for زئوس Zeus زئوس Zeus گفت:

      بله درسته به دلیل جابجا شدن ورژن استیبل این اتفاق افتاده ولی همچنان از بخش آرشیو می تونید اون ورژن رو دانلود کنید. لینکشو میذارم
      https://launchpad.net/gcc-arm-embedded/4.9/4.9-2015-q3-update

      1. Avatar for حسین حسین گفت:

        سپاسجناب زئوس.

  6. Avatar for حسین حسین گفت:

    با سلام مجدد.
    راستش من یک موبایل قدیمی دارم که پردازنده ش arm1136 هست با کلاک 700 MHZ .
    با خودم گفتم . کی پد که داره . ال سی دی هم داره .میکرو SD هم که میخوره . سیم کارت خور هم که هست ( ماژول gsm داره ) . صدا هم که میتونه تولید کنه .سیستم باطری و شارژر باطری هم که فابریک داره . … حتی led هم داره ( چراغ قوه ش رو میگم )، فقط پورتهای ارتباطیش کم هست . که حالا بعدا با یک سخت افزار ساده و ارتباطش با otg یک کاریش میکنم .خب فعلا همینا برام کافیه.
    این کاری رو که با رزبری میخوایم انجام بدیم . آیا میشه با سخت افزار موبایل انجام داد .یعنی منظورم اینه که ساختارش این اجازه رو میده؟!
    تا حالا کسی اینکارو کرده ؟!

    1. Avatar for زئوس Zeus زئوس Zeus گفت:

      سلام بله قطعا میشه و من خودم این کار رو انجام دادم البته با تبلت – ولی باید دقت کنید یه اما وجود داره
      شما چون دارید با سخت افزار کار میکنید لازمه آدرس پورت ها رو بدونید مثلا مدل داریور lcd رو بدونید و این که مثلا led به کدوم پورت وصل شده gsm چطور هندل میشه و ….
      علاوه بر این که لازمه نقشه شماتیک مدار رو داشته باشید لازمه جزییات سخت افزاری راجب راه انداز هر یک از ماژول ها رو نیز بدونید

      1. Avatar for حسین حسین گفت:

        این اطلاعات رو که فرمودید از کجا بدست آوردید ؟!
        من نقشه های گوشی رو دیدم ولی این اطلاعات توی اون نبود .
        و در مورد پروگرام کردنش ( فکر میکنم فلش داخلی داشته باشن ) آیا با بوت لودر امکانپذیر هست ؟

        1. Avatar for زئوس Zeus زئوس Zeus گفت:

          خوب اون تبلتی که من راه انداختم خودم باز کردم و شماره آیسی ها رو در آوردم و تا حدود زیادی معماریش مشخص شد 🙂
          از این تبلت چینی ها بود
          فلش ها معمولا روی گوشی ها و تبلت ها به شکل nand فلش هست و برای خوندن آنها باید پروگرامر مربوطه رو داشته باشید مگر این که ته و توی بوت لودر سیستم رو در اورده باشید.

          1. Avatar for حسین حسین گفت:

            واقعا تعجب کردم . !!!!!
            فکرش رو نمیکردم اینجوری آدرسها رو پیدا کرده باشی.!!
            البته من قبلا شماره چند تا از آی سی های موبایلم رو سرچ کرده بودم و تقریبا هیچی بدست نیومد !!
            به هر حال سپاس که تجارب خودت رو در اختیار من قرار دادی .

          2. Avatar for زئوس Zeus زئوس Zeus گفت:

            گاهی باید راه های سخت رو رفت تا به نتیجه رسید 🙂
            خواهش میکنم

  7. Avatar for حسین حسین گفت:

    سلام.
    سپاس بابت مطالب بسیار خوبی که مینویسید.
    یک بورد رزبری هست به اسم نانو پای اما پردازندش bcm نیست یک تراشه از سامسونگ هست .
    آیا کمپایلری که توی مقاله ذکر کردید ،پردازنده بورد نانو پای را ساپورت میکنه ؟

    1. Avatar for زئوس Zeus زئوس Zeus گفت:

      سلام
      بله شما با این کامپایلر میتونید برای پردازنده ARM کدهاتونو کامپایل کنید و فرقی نمیکنه شرکت سازنده چی باشه!

  8. Avatar for ناصحی ناصحی گفت:

    سلام
    کارتون بسیار ارزنده و عالی بود.
    اما مشکلی که برای من وجود داره اینه که به نظر میرسه سرعت میکروکنترلر پایین باشه یا به عبارتی تنظیمات کلاک آن بر روی 700 مگاهرتز یا بیشتر نباشه. یک حلقه 1000000 تایی حدود یک ثانیه طول می کشه.
    چطور میشه فرکانس کلاک و PLL این پردازنده رو تعیین کرد؟؟؟

    1. Avatar for زئوس Zeus زئوس Zeus گفت:

      سلام دوست عزیز 🙂 خواهش میکنم ؛ خوشحالم که این مقاله مورد توقیق قرار گرفته
      در مورد پیکربندی اولیه توی قسمت دوم مقاله توضیح دادیم که روال چیه و چطوره انجام میشه

  9. Avatar for سینا سینا گفت:

    با سلام

    بنده 1 سوال و 1 مشکل برام پیش اومده.

    مشکل اینه که موقع کامپایل این خطا رو دریاف میکنم:

    ‘GPIO_GPFSEL4’ undeclared (first use in this function); did you mean ‘GPIO_BASE’?
    #define LED_GPFSEL GPIO_GPFSEL4

    التبه تعداد دیگه ای خطا هست که به نظرم با حل شدن این خطا همگی با هم رفع شن.

    و سوال اینه که برای رزبری از یه آرم کورتکس A استفاده شده، اما این کامپایلر داخل توضیحاتش چیزی در مورد اینکه میتونه کد روبرای این سری هم کامپایل کنه نگفته! پس چطور میتونه این کارو انجام بده!؟

    متن داخل صفحه ی دانلود:

    The toolchains support Arm Cortex-M0, Cortex-M0+, Cortex-M3, Cortex-M4, Cortex-M7, Cortex-M23, Cortex-M33, Cortex-R4, Cortex-R5, Cortex-R7, Cortex-R8 and Cortex-R52 processors.

    1. Avatar for زئوس Zeus زئوس Zeus گفت:

      سلام دوست عزیز ، خطای مربوطه داره میگه که GPIO_GPFSEL4 ماکرو تعریف نشده ، احتمالا فایل رو include نکردید یا در مسیری نیست که کامپایلر ببیندش ، مشکل احتمالا از آدرس دهی است.
      در خصوص کامپایلر و توانایی کامپایل برای Cortex-A باید بگم که اگر به معماری و ساختار ARM نگاه کنید ، فارغ از نام گذاری Cortex-x ، هر ساختاری یک ورژن از این پردازنده رو استفاده می کنه ، به عنوان نمونه هسته های Cortex-M از ورژن ARMv7 و ARMv6 استفاده می کنه و Cortex-R عموما از ARMv7 استفاده میکنه ، خانواده Cortex-A هم از ARMv7 استفاده میکنه !
      البته ARMv7 با اون آرم هفت (مثل پردازنده های LPC2368) که در اصل ARM-TDMI هست فرق میکنه و پردازنده ARM-TDMI در واقع ARMv4 هست. باری به هر جهت ، وقتی هسته ها یک ورژن باشند دیگه فرقی نمیکنه ، و کامپایلر قادر به تولید ماشین کد مناسب برای اون معماری خواهد بود.
      برای اصلاعات بیشتر در خصوص ورژن های ARM به صفحه List of ARM microarchitectures مراجعه کنید.

  10. Avatar for علی علی گفت:

    سلام
    تشکر از مطلب فوق العاده تون اتفاقا دنبالش بودم که با ناامیدی از منابع فارسی سرچ کردم و اومد خیلی خوشحال شدم! به اندازه یکی دو هفته کارم رو جلو انداختید ممنون! 🙂
    من الان دارم برای برد nano pi m1 همچین کاری میکنم! برنامه اش رو نوشتم (به کمک دیتاشیت و…)
    ولی نمیدونم فرایند بوت شدن توی Nano PI چطوریه! 🙁
    شما درباره بوت شدن توی Nani PI M1 اطلاعی دارید؟!
    چجوری میتونم برنامه ای که نوشتم رو اجرا کنم؟!
    با تشکر

    1. Avatar for زئوس Zeus زئوس Zeus گفت:

      خواهش میکنم دوست عزیز ، خیلی خوشحالم که این مطالب مورد استقبال دوستان قرار گرده
      ببینید در خصوص برد مورد نظر شما ، اطلاع چندانی ندارم ، ولی معمولا تمام سیستم های Soc از یک رویه پیروی میکنند ، اول دنیال یه پراتیشن بوت روی استوریج مورد نظر می گردند و از اونجا فایل های مربوطه رو لود می کنند ، پردازنده مورد استفاده شما H3 است که اتفاقا طرف دار های زیادی داره ، شاید به این پردازنده هم بپردازیم
      در مورد اجرا ، ببینید فکر میکنم همین رویه که برای رزبری پای در پیش گرفتیم رو پیش برید با این تفاوت که احتمالا باید نوع کامپایل رو با توجه به پردازنده تغییر بدید.

  11. Avatar for میر مهدی میر مهدی گفت:

    سلام.
    خیلی عالی بود!
    دستتون درد نکنه….
    منتظر قسمت بعدی هستیم…..

    1. Avatar for زئوس Zeus زئوس Zeus گفت:

      سلام.
      متشکرم ، دوست عزیز ، خوشحالم که مطلب مورد توجه شما قرار گرفته است
      قسمت چهارم آموزش آماده و منتشره شده است
      برای مشاهده می توانید بر روی این لینک کلیک کنید.

  12. Avatar photo Pouria Rezaee گفت:

    سلام قسمت بعدی کی میاد؟

    1. Avatar for زئوس زئوس گفت:

      به زودی منتشر میشه
      در حال آماده سازی مطلب هستیم

  13. Avatar for Pouria Pouria گفت:

    ممنون از مطالب مفید سایتتون. وقتی میبینم یه سایت ایرانی هم میتونه خوب توضیح بده و ترجمه کنه خوشحال میشم. فقط سعی کنید مخصوصا تو این پست حجم مطالب قسمت های بعدی رو افزایش بدید تا از زیاد شدن قسمت ها و سردرگمی ها کم بشه باتشکر.

    1. Avatar for زئوس زئوس گفت:

      خواهش میکنم دوست عزیز
      باعث افتخاره اگر توانسته باشیم نظر کاربران را جلب کنیم.
      در انتشار آموزش ها سعی میکنیم تا جای ممکن مطالب مفید باشند و در انتهای هر بخش به پایان کلی برسیم که باعث سردرگمی کاربران نشود
      متشکرم از نظر سازنده شما. حضور کاربرانی مثل شما باعث دلگرمی ما برای ادامه فعالیت میشه.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *