معرفی SBC : Single-Board Computer

  • شروع کننده موضوع SR
  • تاریخ شروع
  • شروع کننده موضوع
  • #1

SR

کاربر فوق‌حرفه‌ای
ارسال‌ها
604
امتیاز
1,158
نام مرکز سمپاد
شهید اژه ای 1
شهر
اصفهان
سال فارغ التحصیلی
00
مدال المپیاد
درست نخوندم به جایی نرسیدم
رشته دانشگاه
مهندسی برق
سلام
تو این پست سعی دارم یه گوشه از الکترونیک رو نشون بدم
راستش این گوشه همش هم مال الکترونیک نیست و بخشیش مال کامپیوتره اما به هر حال اینجا(انجمن الکترونیک) بهتره برای معرفیشون
بگذریم

تا حالا شده که نیاز داشته باشید به یه کامپیوتر کوچیک که چند تا کار ساده رو انجام بده براتون؟
خوب احتمالا دوستانی که کار کردن میگن میکروکنترلر ولی اگه این کارها کارهایی مثل پردازش تصویر باشه مثلا چی؟ دیگه فکر نکنم میکرویی مثل AVR بتونه از پسش بر بیاد.
بهترین میکروهایی هم که تو بازار پیدا میکنید و میتونید تقریبا مثل AVR راهشون بندازید یه cortex-m4 مال st با فرکانس 200 مگ حدودا
- "لپ تاپ"
نه اونم به درد نمیخوره بعضی جا ها. هم زود باتری خالی میکنه هم سنگینه.

پس چیه که این خلاء توان پردازشی رو پر میکنه؟
جواب : SBC ها و بقیه بورد هایی که تو همین مایه اند
حالا SBC چیه؟
طبق گفته ویکیپدیا:
[ltr]
A single-board computer (SBC) is a complete computer built on a single circuit board, with microprocessor(s), memory, input/output (I/O) and other features required of a functional computer.
[/ltr]
یعنی شما یه کامپیوتر کامل را روی یه بورد داشته باشید با بقیه ادوات جانبی لازم برای راه اندازیش رو همون بورد
از مثال های معروف SBC میشه به Raspberry Pi اشاره کرد:
rsz_b--300x225.jpg
که از اینجا میشه تهیه اش کرد
یا مثلا Beagle Bone Black که از نظر پردازنده از بالایی قوی تره:
product_detail_black_sm.jpg
که اینم از اینجا میشه خرید
البته بورد های دیگه هم هست تو ایران ولی اینا معروف ترند

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

چجوری راه بندازیمشون؟
جواب: قاعدتا دو راه داریم: بدون سیستم عامل یا با سیستم عامل

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

با سیستم عامل تقریبا مثل کاریه که با کامپیوتر انجام میدید
یه کامپیوتر تازه رو روش سیستم عامل نصب میکنید و بعد برای اون سیستم عامل برنامه مینویسید نه اینکه برنامه نوشته شدتون رو از بایوس بوت کنید!
برای سیستم عامل سه انتخاب هست
1- ویندوز: بله ویندوز ولی فکر نکنید فایل exe رو کامپیوتر رو روی بورد میتونید اجرا کنید تحت ویندوزش!
متاسفانه کار نکردم نمیدونم چجوریه دقیقا ولی میدونم کار ها (ساخت ایمیج سیستم عامل و برنامه نویسی براش) از طریق ویژوال استودیو انجام میشه

2- آندروید: کار نکردم نمیدونم ولی مشابه لینوکس هست (من شخصا فرق خاصی بین آندروید و لینوکس نمیبینم جز اینکه به نظر آندروید محدود تره!)

3- لینوکس: اینو تا حدودی کار کردم تقریبا میدونم چه خبره. بقیش برای پست های بعد ...

هر جا رو سوتی دادم بهم بگید لطفا (;
 

AmirHR

کاربر نیمه‌حرفه‌ای
ارسال‌ها
185
امتیاز
139
نام مرکز سمپاد
شهید اژه ای ۱
شهر
اصفهان
مدال المپیاد
یه سال برا نانو می خوندم ولی ادامش ندادم
دانشگاه
دانشگاه تهران
رشته دانشگاه
دندانپزشكي
پاسخ : معرفی SBC : Single-Board Computer

تاپیک خیلی خوبیه فقط یه نکته‌ای که هست و باعث گمراهی میشه سرعته، مثلا نباید فک کرد که چون سرعت پردازنده‌ی این ها بین ۷۰۰Mhz تا ۱Ghz و یا حتی بیشتره، در همه موردی سریع تر از چیزای دیگه هستند. مثالشم سرعت خوندن و نوشتن اطلاعات روی پین هاست و برای همچین کاری یه میکرو آرم مثل همون STM32F4 که حدود ۲۰۰Mhz ه خیلی سریع تر از این برد ها جواب میده!
مدل--- سرعت پردازنده --- حداکثر سرعت با روش سیستم عامل
۲۲Mhz --- ۷۰۰Mhz --- Raspberry
۲.۷۸Mhz --- ۱Ghz --- Beaglebone
۹۰Mhz --- ۱۸۰Mhz --- STM32F4(سیستم عامل ندارد)
البته اگه بدون سیستم عامل کد بزنید احتمال زیاد خیلی سریع تر میشن.
 
  • شروع کننده موضوع
  • #3

SR

کاربر فوق‌حرفه‌ای
ارسال‌ها
604
امتیاز
1,158
نام مرکز سمپاد
شهید اژه ای 1
شهر
اصفهان
سال فارغ التحصیلی
00
مدال المپیاد
درست نخوندم به جایی نرسیدم
رشته دانشگاه
مهندسی برق
پاسخ : معرفی SBC : Single-Board Computer

به نقل از AmirH.R :
تاپیک خیلی خوبیه فقط یه نکته‌ای که هست و باعث گمراهی میشه سرعته، مثلا نباید فک کرد که چون سرعت پردازنده‌ی این ها بین ۷۰۰Mhz تا ۱Ghz و یا حتی بیشتره، در همه موردی سریع تر از چیزای دیگه هستند. مثالشم سرعت خوندن و نوشتن اطلاعات روی پین هاست و برای همچین کاری یه میکرو آرم مثل همون STM32F4 که حدود ۲۰۰Mhz ه خیلی سریع تر از این برد ها جواب میده!
مدل--- سرعت پردازنده --- حداکثر سرعت با روش سیستم عامل
۲۲Mhz --- ۷۰۰Mhz --- Raspberry
۲.۷۸Mhz --- ۱Ghz --- Beaglebone
۹۰Mhz --- ۱۸۰Mhz --- STM32F4(سیستم عامل ندارد)
البته اگه بدون سیستم عامل کد بزنید احتمال زیاد خیلی سریع تر میشن.
ممکنه برای کاری مثل خوندن و نوشتن روی پین ها سیستم عامل مزاحم به نظر بیاد اما کسی فقط به خاطر این سراغ این بورد ها نمیاد+اصلا تو سرعت های بالا این روش برای انتقال اطلاعات به درد نمیخوره!
صرفا تو یه چیزی کند بودن در مقایسه با چیز دیگه کل کارکرد این بوردها رو زیر سوال نمیبره
در ضمن بنده اون مقیاس ستون سوم رو درک نکردم چه ارتباطی به فرکانس داره سرعت نهایی اجرا وقتی خود فرکانس رو هم ذکر کردید یا اینکه منظور MIPS بوده؟
کد زدن بدون سیستم عامل صد در صد سریعتره ولی توسعه برنامه رو تقریبا مختل میکنه اصلا هم مثل سیستمی که میکرو داره نیست کد زدن خلاصه یه سیستم عامل رو بچسبید...
 

AmirHR

کاربر نیمه‌حرفه‌ای
ارسال‌ها
185
امتیاز
139
نام مرکز سمپاد
شهید اژه ای ۱
شهر
اصفهان
مدال المپیاد
یه سال برا نانو می خوندم ولی ادامش ندادم
دانشگاه
دانشگاه تهران
رشته دانشگاه
دندانپزشكي
پاسخ : معرفی SBC : Single-Board Computer

از ستون سوم منظورم تقریبا همون MIPS اما در عمل بود یعنی یه برنامه خالی خالی بنویسی که فقط یه پین رو ۰،۱ شو پشت سر هم برعکس کنه و بعد با اسیلسکوپ ببینیم چه فرکانسی تولید شده اینجوری اگه بدونیم هر دفعه چند تا Instruction استفاده کردیم تقریبا میشه همون MIPS رو به دست اورد.اینم کلا فقط به عنوان یه پیشنهاد گفتم که مثلا اگه یه پروژه باید کلی سیگنالو آنالیز کنه و ... ٬ بهتره به جای استفاده از GPIO خود برد، یه میکرو جدا مثلا آرم برای خوندن اطلاعات استفاده کنیم بعد اطلاعات رو یجا منتقل کنیم به SBC برای پردازش!بقیه ی امکانات SBC که قطعا به درد میخوره و در این سایزم جایگزینی به این آسونی فک نمی کنم داشته باشه! (;
 
  • شروع کننده موضوع
  • #5

SR

کاربر فوق‌حرفه‌ای
ارسال‌ها
604
امتیاز
1,158
نام مرکز سمپاد
شهید اژه ای 1
شهر
اصفهان
سال فارغ التحصیلی
00
مدال المپیاد
درست نخوندم به جایی نرسیدم
رشته دانشگاه
مهندسی برق
پاسخ : معرفی SBC : Single-Board Computer

به نقل از AmirH.R :
از ستون سوم منظورم تقریبا همون MIPS اما در عمل بود یعنی یه برنامه خالی خالی بنویسی که فقط یه پین رو ۰،۱ شو پشت سر هم برعکس کنه و بعد با اسیلسکوپ ببینیم چه فرکانسی تولید شده
نه! بازم درست نیست چون ممکنه سرعت باسی که I/O ها به پردازنده وصل شده باشه کم باشه یا اصلا خود I/O ها محدودیت داشته باشند در صورتی که پردازنده بهترین در نوع خودش باشه
یکی از راه ها اینه که الگوریتم های ریاضی رو روش تست کنیم بعد I/O رو صفر و یک کنیم به طوری که سرعت پردازنده در اجرای الگوریتم این صفر و یک کردن رو به تاخیر بندازه نه محدودیت پورت اما بازم ممکنه بهترین راه نباشه بهتره از برنامه های بنچمارک استفاده بشه که بین میکرو و این بورد ها مشترک باشه(هر چند بعید میدونم باشه ولی اگه کسی راه درستی برای مقایسه سرعت پردازنده ها میدونه بگه)
 
  • شروع کننده موضوع
  • #6

SR

کاربر فوق‌حرفه‌ای
ارسال‌ها
604
امتیاز
1,158
نام مرکز سمپاد
شهید اژه ای 1
شهر
اصفهان
سال فارغ التحصیلی
00
مدال المپیاد
درست نخوندم به جایی نرسیدم
رشته دانشگاه
مهندسی برق
پاسخ : معرفی SBC : Single-Board Computer

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

کل پست در حال ویرایش[nb]به علت تنبلی اینجانب و زیادی مطالب بقیه این پست رو بعدا کامل میکنم. با عرض پوزش.[/nb]


خوب ادعا کردم یه خورده لینوکس حالیمه.(الآن لینوکسی ها دارند بهم میخندند! حق هم دارند.)
بریم ببینیم من چی بلدم

قبل از اینکه شروع کنم باید بگم هر گونه کاری در رابطه با لینوکس باید در لینوکس انجام بشه؛ حالا میل خودتونه که Virtual-Machine استفاده کنید, دوآل بوت یا هر چی. (من خودم دوآل بوتم ولی اگه میترسید بلایی سر کامپیوتر بیاد از گزینه اول استفاده کنید.)
کلا این دم و دستگاه لینوکس روی این بورد ها(در مورد کامپیوتر مطمئن نیستم.) از سه بخش تشکیل شده:


1- بوتلودر:
یه برنامه است جهت راه اندازی سیستم.
از کار هایی که میکنه میشه به

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

از معروف ترین بوتلودر ها میشه به U-boot اشاره کرد که U اینجا یعنی Universal.

برای بوتلودر میشه از برنامه کامپایل شده استفاده کنید یا خودتون کامپایل کنید.


2- کرنل:
عملا میشه گفت یه برنامه است که قابلیت چند وظیفگی رو فراهم میکنه براتون به علاوه بستری برای ارتباط با سخت افزار
دو راه برای فراهم آوردن ایمیج کرنل هست: آماده بگیرید. / خودتون کامپایل کنید.
ایمیج نهایی یک فایل یک تکه هست که پسوند های متفاوتی داره.
این پسوندها هر کدوم برای نوع خاصی از بوتلودر استفاده میشه و راحت میشه خود فایل ایمیج رو برای استفاده یه بوت لودر دیگه تغییر داد مثلا پسوند ایمیج مناسب برای U-boot پسوند uImage هست.
برای کامپایل کرنل توسط خودتون باید کرنل پورت شده مخصوص پردازنده بورد رو پیدا کنید.(یا اگه خیلی آخرش هستید خیلی شیک برید از kernel.org به روزترین کرنل رو دانلود کنید و پورت کنید و بنصبید و لذت ببرید!)
یکی از ملاک هایی که به کیفیت بورد اضافه میکنه ساپورت نرم افزاری اونه مثلا من از این استفاده میکردم؛ یه DVD همراهش بود که کرنل پورت شده لینوکس و مخلفات کار با ویندوز رو همراهش داشت و خیلی سریعتر میشد به بحث برنامه نویسی رسید البته این بورده قدیمی شده و میتونید یه نگاهی به این و این هم بندازید که هنوز جدید هستند.
حالا اینکه چجوری میشه ایمیج کرنل رو در دسترس بوتلودر قرار داد بستگی داره به بوت لودرتون داره
در ضمن برای تغییر, حذف و یا اضافه کردن درایور ها باید کرنل رو دستکاری کنید بعد کامپایلش کنید...

فایل سیستم، روت فایل سیستم، RFS، Root FS، Root File System ، ... اصلا هر چی!

بعد از نصب موفقیت آمیز بوتلودر و ریختن کرنل قاعدتا لینوکس شما نباید بالا بیاد!
اگه یه وقت اینطوری شد اون موقع وقتشه که از خودتون بپرسید:
پس این همه دایرکتوری که تو لینوکس کامپیوتر هست اینجا کجا میره؟
جوابش یه مرحله دیگست که باید برای راه اندازی لینوکستون انجام بدید.
به علت تنبلی فراوان دوتا نقل قول از یه جای دیگه که اونجا این بخش رو توضیح دادم میزارم اینجا:
[quote author=شهریار]
یه سر به مسیر / در لینوکس خودتون بزنید
چیزی که میبینید یه جور rootfs هست مشابه همونی که لازم دارید
معمول rootfs یه سری فایل و دایرکتوری هست
برای من که مینی 2440 دارم کرنل به تنهایی کافی نبود و فقط میشد باهاش یه برنامه تحت لینوکس رو اجرا کرد
چیزی که میخوام بگم اینه که اون ترمینالی که دارید یه جورایی میشه گفت یه برنامه تحت لینوکسه مثل همون برنامه ای که خودمون مینویسیم برای مثلا روشن کردن led
پس تا اینجا میتونید برنامتون رو توی یه دایرکتوری بریزید(کامپایل شدش رو) بعد اون دایرکتوری رو مثلا به فرمت jffs2 در بیارید و بریزید توی بورد(یا NFS و SD و ...) و آخرش در پارامتر های بوت بوتلودری مثل u-boot یا barebox آدرس فایل jffs2 رو میدید به عنوان rootfs بعدش مثلا در u-boot یه init=helloworld میزارید وقتی بوت میکنید بعد از لود شدن کرنل این برنامه مستقیما اجرا میشه
نمونش هم تو این دیده میشه:
http://wiki.iface.ch/index.php/How_to_cross_compile_a_working_kernel_for_Mini2440
حالا busybox چی کار میکنه؟
گفتم اون ترمینال و دستوراتش همه یه سری برنامه مثل اون چشمک زنه هستند
busybox این برنامه ها رو تو خودش داره و کافیه آدرس کامپایلر و آدرس جایی که میخواید rootfs تون رو کامپیوتر درست بشه و برنامه ها(در واقع میشه دستورات لینوکس بوردتون یه جورایی) مورد نیازتون رو انتخاب کنید و بعد اجراش کنید تا براتون بسازه
بعد یه سری کار اضافه احتمالا باید انجام بدید روی rootfs مثل اینکارهایی که اینجا شده(البته مال مینی2440 هست):
http://wiki.iface.ch/index.php/Basic_rootfs_for_Mini2440
بعد میتونید برنامتون رو تو همون جایی که rootfs هست قرار بدید و lib هایی که برنامه بهش احتیاج داره رو از خود محل قرارگیری کامپایلر کپی کنید بریزید توی دایرکتوری lib در rootfs تون معمولا به شکل
[ltr]
***.so.*
[/ltr]
هستند
بعد هر کاری که لازمه مثل تبدیل rootfs به jffs2 یا هر فرمت دیگه ای یا ریختن مستقیم روی SD و یا share کردنش از طریق شبکه و در نهایت بوت کردنش از rootfs تون لذت ببرید فقط فرقش با قبل اینه که چیزی که در جای init=helloworld هست به linuxrc تغییر پیدا میکنه هر چند نوشتن init=linuxrc الزامی نیست بعد میرید تو ترمینال میزنید:
[ltr]
./helloworld
[/ltr]
در صورتی که اونجا مستقیم برنامه اجرا میشد
پس rootfs میتونه حتی یه دایرکتوری خالی باشه!
و کرنل در واقع برنامه هایی که تحت کامپایلر های مخصوصش درست شده باشند رو اجرا میکنه
[/quote]
[quote author=شهریار]
اگه به حالت jffs2(یک نوع از rootfs که به صورت یک فایل ایمیج هست) بخواین تست هاتون رو انجام بدین که هیچی زیاد به وقتی که صرفش میشه نمیصرفه
اگه به حالت بوت به صورت ext3 مثلا با SD باشه که خیلی راحت تره(همون کاری که من فعلا میکنم)--> اینجا محتویات rootfs رو به همون صورت مجموعه فایل ها و فولدر(دایرکتوری) ها استفاده میکنید

rootfs تحت شبکه یا همون NFS راحتترین راه ممکن هست و اصولا این روش برای تست کرنل و rootfs به کار میره (NFS هم مثل مورد بالاییه با این تفاوت که این مجموعه یه جایی روی کامپیوتر شماست و بورد از طریق شبکه بهش دسترسی پیدا میکنه)
اما rootfs لازم نیست هر بار کامپایل بشه همونطور که اینجا گفتم:
{همون نقل قول بالایی}
rootfs میتونه یه دایرکتوری خالی باشه اما خالیش به درد نمیخوره و در این مورد شما میتونید دایرکتوری ای رو که فایل کامپایل شده برنامه رو تو خودش داره به jffs2 تبدیل کنید و طبق چیزی که تو اون لینک بالایی گفتم عمل کنید میتونید برنامتون رو اجرا کنید بدون استفاده از busybox یا هر چیز دیگه
فکر کنم منظور شما از کامپایل کردن در هر بار ساخت rootfs با busybox یا ... باشه که با توجه به اینکه خروجیش یه سری دایرکتوری و فایل هست میتونید برنامه کامپایل شده رو یه جایی تو خروجی busybox بزارید بعد کلش رو تبدیل به ایمیج با فرمت jffs2 کنید یا با استفاده از NFS یا بوت SD تستش میکنید
برای تبدیل اون فایل هایی که میخواید به شکل jffs2 فکر کنم استفاده از دستور mkfs کافی باشه بیشتر کار نکردم نمیدونم بگردید تو نت دنبالش هست تو آموزش های ساخت rootfs
تو هر بار تغییر فقط فایل کامپایل شده برنامه رو عوض میکنید و فایل های ساخته شده با busybox تغییری نمیکنند و احتیاج به دوباره کامپایل شدن ندارند(کلا ارتباطی هم با برنامتون ندارند)
کلا پیشنهاد میکنم روی NFS کار کنید که هم انتقال فایل هم تست rootfs و کرنل رو سریعتر میکنه
این مثلا یه لینکه که درباره NFS برای مینی توضیح داده:
http://wiki.iface.ch/index.php/Setup_a_testing_environment_for_Mini2440
[/quote]
یه چیز هایی هم الآن بگم:
شنیدید میگن توزیع لینوکس فلان به درد فلان کارها میخوره و اینا؟
دلیلش اینه که توزیع در واقع مجموعه ابزار هایی هست که یکجا با کرنلتون جمع شده و روی کامپیوتر به عنوان سیستم عامل اجرا میشه
در واقع شما اون برنامه چشمک زنی که تو نقل قول اولی گفتم رو میتونید به یه ترمینال تغییر بدید و برنامه دستورات مورد استفادتون رو هم خودتون بنویسید و یه توزیع لینوکس بسازید!
حالا اگه دلتون نخواست ولی به ترمینال نیاز داشتید یه سری مجموعه برنامه ها هستند مثل busybox که با کامپایلشون یه rootfs به دست میارید که با در دسترس قرار دادنشون برای بورد و تنظیم بوتلودر برای اجرای اولین برنامه بعد از بالا اومدن سیستم به فایل linuxrc شما به ترمینال لینوکستون میرسید...
 
بالا