ARM, RASPBERRY PI رسپبری, پروژه های سیسوگ, توصیه شده, مقاله

آموزش برنامه نویسی با رزبری پای بدون سیستم عامل- قسمت اول

raspberry Sisoog

رزبری پای

بله درست است؛ اشتباهی پیش نیامده. تلفظ صحیح Raspberry Pi رزبری پای است که متاسفانه به اشتباه در بیشتر وب‌های فارسی رسپبری پای خوانده می‌شود. در واقع تلفظ رسپبری پای اشتباه است و نباید رسپبری خوانده شود.

مطابق فونوتیک -ˈrazˌberē ، رزبری پای صحیح است و از این پس به جای رسپبری پای، از رزبری پای استفاده می‌کنیم.

رزبری پای در‌واقع یک کامپیوتر تک برد است که در عین حال که اندازه‌ی خیلی کوچکی دارد (در حدود یک کارت اعتباری مثل کارت بانکی)،  قدرت پردازشی زیادی را ارائه می‌دهد به نحوی که در ورژن‌های جدید آن قادر به نصب سیستم‌عامل‌های ویندوز و لینوکس و بی اس دی هستیم.

 

قراره با رزبری پای چکار کنیم ؟ (چشم ها را باید شست/جور دیگر باید دید)

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

در واقع من قصد ندارم که در این مقالات به این که چطور می‌تونید لینوکس یا ویندوز بر روی رزبری پای نصب کنید یا این که چطور با لینوکس کار کنید بپردازم.

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

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

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

در این مقالات قصد دارم که آموزش بدم چطور بدون استفاده از سیستم عامل و هیچ رابط نرم افزاری سطج بالایی رسپبری پای را تبدیل به یک پردازنده ARM سرعت بالا کنید که به صورت تمام کمال فرمانبردار شما باشد. بدون استفاده از هیچ سیستم عاملی و فقط با استفاده از زبان اسمبلی و سی.

چرا رزبری پای وحشی است؟

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

  1. توان مصرفی بالا و ایجاد گرمای زیاد
  2. ناپایدار بودن سیستم عامل های موجود
  3. عدم قابلیت قفل گذاری بر روی برنامه نوشته شده
  4. لینوکس یک سیستم عامل بلادرنگ نیست

موارد ذکر شده تا حدودی درست هستند ولی تا وقتی که از سیستم عامل‌های مثل لینوکس و ویندوز استفاده کنیم.

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

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

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

 

چند مدل رزبری پای داریم ؟

Raspberry Pi family

وقتی که قصد دارید لینوکس نصب کنید فرقی نمی‌کند چند مدل رزبری پای وجود دارد و یا این که قصد دارید از کدام مدل رزبری پای استفاده کنید چرا که تفاوت‌ها توسط خود لینوکس پوشش داده شده و تنها کاری که لازم است انجام دهید کپی فایل های مورد نیاز بر روی SD کارت است.

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

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

دسته اول پردازنده های ARMv6Z:

ARM1176JZF-S

برد های رزبری پای مدل A و 1B و 1B+ از پردازنده  ARM1176JZ-F استفاده می کنند. همه برد های مذکور از چیپست BCM2835 که ساخت شرکت Broadcom است استفاده می کنند چیپست مذکور قادر به پردازش اطلاعات با سرعتی بالغ بر 700 مگاهرتز است.

 

دسته دوم پردازنده های ARMv7-A:

Cortex-A7

تنها برد ارایه شده با این پردازنده از خانواده رزبری پای مدل 2B است که از چهار هسته پردازشی Cortex-A7 استفاده می کند. این چهار هسته در چیپستی با شماره BCM2836 که ساخت شرکت Broadcom است قرار گرفته اند و هر کدام قادر به انجام پردازش با سرعت بالغ بر 900 مگا هرتز است.

دسته سوم پردازنده های ARMv8-A:

Cortex_A53

آخرین محصول رزبری پای در زمان نگارش این مقاله مدل 3B است که از چهار هسته پردازشی Cortex-A53 استفاده می کند ، این هسته پردازشی به صورت 64 بیتی عمل می کند و قادر به انجام پردازش با سرعت بالغ بر 1200 مگاهرتز است.

 

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

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

12 دیدگاه در “آموزش برنامه نویسی با رزبری پای بدون سیستم عامل- قسمت اول

  1. احمد گفت:

    سلام’ موضوع مقالتون بسیار جذاب هست’خطاب به اون دوست محترممون که در مورد لینوکس بحث میکرد مثل اینکه اصلا حواسش به موضوع مقاله نبوده ‘ اجرای برنامه ها بدون سیستم عامل ‘یعنی اسمبلی خالص و ارتباط کامل با arm . چه ربطی به لینوکس داره رو نمیدونم’ بیصبرانه منتظر ادامه مقالتون هستم’ موضوع بسیار عالی و حرفه ای هست’ بسیار سپاسگذارم

  2. وحید گفت:

    سلام
    وقت بخیر
    خواستم چند نکته رو عرض کنم خدمتتون
    ۱_ گرم شدن پردازنده بدلیل عملیات پردازشیه که اگر مدیریت بشه دیگه گرم نمیشه و مشکل نیست اساسا
    ۲_نبود سیستم عامل استیبل هم مشکل نیست، میتوان برای هر معماری و با هرکانفیگی سیستم عامل مبتنی بر لینوکس دلخواه ساخت!
    ۳_ بلادرنگ نبودن(یا ریل تایم نبودن) لینوکس سخن درستی است اما میتوان با روشهای مختلف لینوکس را ریل تایم کرد پس مشکلی نیست
    ۴_مشخص کردن پایها در هر ریست رو هم میتوان در سیستم عامل تعیین کرد پس ….

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

      سلام دوست گرامی ، خوشحالم که این مقاله مورد توجه دوستان قرار گرفته و نکات خوبی رو مورد سوال قرار می دهند.
      1 – اصولا توان مصرف شده توسط پردازنده است که موجب گرم شدن آن می شود ، که هیچ رابطه ای با عملیات پردازشی ندارد ، توان مصرفی پردازنده تابع دو مقوله فرکانس کاری پردازنده و پرفال های مورد استفاده است. مثلا در پروژه ای که ما نیاز به کار گرافیکی نداریم میتوانیم با خاموش کردن بخش گرافیکی از مصرف توان این قسمت جلوگیری کنیم و در نتیجه گرمای کمتری ایجاد خواهد شد ، فرکانس کاری پردازنده هم رابطه مستقیمی توان مصرفی دارد ، وقتی که شما پردازنده را در فرکانس 700 مگاهرتر راه اندازی میکنید ، دیگر فرقی نمیکند که با آن فیلم دکد کنید یا آن را بی کار بگذارید توان مصرفی یکسان خواهد بود. پس در نتیجه هرچه فرکانس کاری کمتر باشد توان مصرفی کمتر است نه لزوما هرچه پردازش کمتر باشد.
      2 – اتفاقا استیبل بودن سیستم عامل از درجه اهمیت خیلی بالایی برخوردار است ، شاید زیاد در عمل با این مساله مواجه نشده اید ، اگر تجربه کارهای صنعتی و حساس را داشته باشید به خوبی این مقوله را درک می کنید.مساله ورودی و خروجی ها نیست لزوما؛ برای روشن شدن مساله یک مثال عملی میزنم ، فرض کنید تجهیز شما یک خلبان خودکار است ، اگر استیبل نباشید یا در حین پرواز ریست شود جان چندصد نفر به خطر خواهد افتاد ؟ از این دست مثال ها در صنعت بیشمار است که موجب ضرر های جانی و مالی بسیاری خواهد شد.
      3 – بلادرنگ بودن یک سیستم در کرنل آن تعیین می شود ، لینوکس چیزی نیست جز یک کرنل ! پس شما با هیچ نرم افزاری قادر نخواهید بود قابلیت بلادرنگ بودن را به کرنل اضافه کنید مگر با تغییر کد های کرنل ! هر فردی قادر به تغییر که نه حتی کامپایل کرنل لینوکس هم نیست چه برسد به تغییر کد های آن و ریل تایم کردن آن. البته ناممکن نیست ولی قطعا شخصی که چنین دانشی را داشته باشد این مقاله را به خوبی درک میکند. و این که قبلا کرنل های ریل تایم تولید و کامپایل شده اند اگر کسی قادر به راه اندازی آنها بر روی رزبری پای باشند.
      4 – قبلا توضیح دادم که چرا لزوما پایه مهم نیستند ، یک مساله دیگر که مطرح هست زمان بوت شدن سیستم است ، زمان چند ده ثانیه کجا که لینوکس بوت میشود و زمان یکی دو ثانیه که برنامه شما بوت میشود کجا !
      پس ؛ بهتر است در این خصوص دقیق تر باشیم. همه میدانیم که هر سیستمی کاربردی دارد و کسی منکر کابرد های لینوکس نیست و کسی هم نمی تواند منکر کارکردهای این نوع دیزاین باشد. بیشتر افراد اصلا درکی از اتفاقاتی که درون یک سیستم عامل پیشرفته مثل لینوکس می افتد ندارند و قادر نخواهند بود سیستم را مدیریت کنند چه برسد که بخواهند برای ان برنامه هم بنویسند.

      1. وحید گفت:

        ممنونم از پاسختون
        منظورم از اینکه استیبل بودن مشکلی نیست اینه که میشه لینوکس رو استیبل کرد
        ریل تایم بودن رو هم میشه با متدهای مختلف مثل xenomai cobalt و یا xenomai mercury ویا rtai و سایر روشها بدست اورد، البته تخصص نرم افزار لازمه و معمولابرای بچهای الکترونیک سخت و زمانبره
        برنامه نویسی کرنل روهم باید بلد بود وگرنه ….
        حرف شمارو میپذیرم که یا باید در یک حوزه متخصص بود و یا باید حوزه ای که در اون متخصص هستیم مشغول شیم، معنی نداره کسی که حتی درس سیستم عامل پاس نکرده بخواد بره لینوکس تعبیه شده پیاده سازی کنه و همه چیز خیلی خوب کار کنه
        در مورد زمان بوت شدن هم راه حلهای زیادی وجود داره که میشه بسیار سریع ….
        البته قبلا هم گفتم، برای مقاصد خاص باید لینوکس ساخت، روشهای متعددی هست که از حوصله این بحث خارجه اما کسیکه ندونه کرنل چیه و چجوری میشه کامپایلش کرد و … کلا ….
        در کل، لینوکس، امروز و دیروز بوجود نیومده و محصول ادم اماتوری مثل من هم نیست پس اگر فکر میکنیم جایی مشکلی وجود داره براش راه حل های بسیار متنوعی وجود داره
        البته میشه سیستم عامل هم نداشت اما خوب دیگه خیلییی چیزا نداریم(البته اول باید دونست با سیستم عامل چه چیزهایی داریم ? )

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

          خواهش میکنم دوست عزیز.
          لینوکس به خودی خود استیبل هست و به همین دلیله که بر روی سرورهای بزرگ در حال ارئه سرویس است، مشکل موجود از پورت لایه های نرم افزاری برای سخت افزار رزبری پای است و با پیدا کردن مشکلات مربوطه میشه نسخه استیبل رو برای هر سخت افزاری رو ایجاد کرد.
          من در مورد این نرم افزار ها اطلاعی ندارم ولی چیزی که واضحه هست تا کرنل پشتیبانی نکنه ، ریل تایم واقعی به وجود نمی آد ، البته اطلاعی ندارم که این نرم افزار ها چطور کار میکنند شاید بیت کدهایی رو به کرنل اضافه می کنند ولی از قبل با RTLINUX آشنایی دارم و این پروژه به صورت واقعی ریل تایم است. در صورت لزوم و داشتن دانش کافی افراد می توانند از این پروژه استفاده کنند.
          اصولا تحصیلات آکادمیک زیاد ربطی به علاقه افراد نداره ، کسی که علاقه داشته باشه ، بدون پاس کردن به قول شما درس سیستم عامل و فقط با مطالعه کتاب ها و رفرنس های مربوطه مهارت بیشتری کسب میکنند ، افراد مختلفی میشناسم که رشته غیر الکترونیک دارند و الکترونیک کار میکنند و الکترونیکی هایی که به صورت حرفه ای برنامه نویسی انجام می دهند. فکر میکنم علاقه است که تعیین کننده است.
          بله درسته برای مقاصد خاص باید لینوکس ساخت ، یعنی مجدد کامپایل کرد با تغییرات لازم ولی کسی که قصد داره این کار رو انجام بده ، باید دید سخت افزاری خوبی داشته باشه ، وارد کردن چند خط توی ترمینال و تغییر چند تا آپشن نمیشه بهش گفت لینوکس ساختن ، اینوکس رو کسی بلده بسازه که اونو روی یک پلتفرم جدید پورت کنه یا فلان قابلیت رو از صفر بهش اضافه کنه.
          بله لینوکس واقعا خوبه من به شخصه مدت زیادی هست که از لینوکس استفاده میکنم ، یکی از نقاط قوت سیستم های اپن سورس پیدا کردن راه حل های مختلف و ایجاد خلاقیت هست ولی بحث ما لینوکس نیست ما در این سری مقالات که در حال انتشار آنها هستم شناختن سخت افزار است ، این که چطور میشه برای پردازنده های فرکانس بالا برنامه نوشت بر خلاف چیزی که عموم افراد فکر می کننده چندان پیچیده نیست یا این که چطور میشه چند پردازنده ای رو مدیریت کرد و…..
          ما هم قرار نیست سیستم عامل نداشته باشیم ، اگر مقداری صبوری کنید نحوه پیاده سازی سیستم عامل رو هم بر روی برد ها آموزش میدیم 🙂

  3. Pouria Rezaee Pouria گفت:

    جالب بود من همیشه این سیستمو متکی به سیستم عامل میدونستم و اگر میخواستی یذره هم شبیه آردواینو بنویسی یا gcc میخواست یا دات نت و مشکل بجایی کشیده میشد که برای یذره خنک سازی باید هیت سینک و فن کیس و… کلی دردسر میخواست و… منتظر مطلب بعدیتونم شاید این روشم خوب باشه ولی هر روشی مزایا و معایبی داره…

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

      خواهش می‌کنم دوست عزیز ، بله حق با شماست هر روشی نقایص خاص خودش رو داره
      به هر حال این هم میتونه یه روش استفاده باشه ، و البته فکر میکنم برای خیلی ها و بسته به کارشون این روش بهتر هم باشه
      انشالله به زودی قسمت دوم رو هم منتشر می‌کنیم

  4. New Modern حسین گفت:

    بسیار عالی بود
    تا حالا به این موضوع فکر نکرده بودم
    بی صبرانه منتظر ادامه این مطلب هستم

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

      خواهش میکنم دوست عزیز
      انشالله به زودی قسمت دوم مطلب منتشر خواهد شد.

  5. hamed گفت:

    سلام
    تشکر بابت مطلبتون، حالابخش بعدی یا بخش اصلی کجاست یا کی میاد ؟

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

      سلام دوست عزیز
      در دست اقدام است و انشالله فردا قسمت دوم مقاله منتشر خواهد شد.

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

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