کار با تراشه F1C100S – قسمت دوم – مقدمه ای بر buildroot

کار با تراشه F1C100S – قسمت دوم – مقدمه ای بر buildroot

کار با تراشه F1C100S – قسمت دوم – مقدمه ای بر buildroot
کار با تراشه F1C100S – قسمت دوم – مقدمه ای بر buildroot

در قسمت قبل توضیحات کلی در مورد بخش‌های سخت‌افزاری برد sinux f1 دادیم و از این به بعد می‌خواهیم وارد بحث نرم‌افزاری و شناساندن سخت‌افزار به نرم‌افزار شویم که یکی از این راهکارها Buildroot است پس با سیسوگ همراه باشید.

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

 

اما چگونه ممکن است؟

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

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

بایوس سیستم

اما در بردهای امبدد، ما چنین قطعه‌ای نداریم! چرا؟! اصلاً چرا باید داشته باشیم؟؟! اسمش روش هست، سیستم امبدد، ما یک سیستم امبدد را برای یک کاربرد خاص استفاده می‌کنیم پس همه منابع و ارتباطات سخت‌افزاری ما محدود، مشخص، و غیرقابل تغییر هستند، پس نیازی به چیزی مانند بایوس نداریم و اطلاعات سخت‌افزاری ما (نام آن device tree است که در آینده به آن اشاره می‌کنیم) را هم در سیستم‌عامل قرار می‌دهیم و به همین دلیل آن ایمیج روی سخت‌افزاری با منابع متفاوت قابل‌اجرا نیست (البته این فقط یک دلیل است و غیر از آن نوع پردازنده که خودش شامل چندین ویژگی می‌شود و دلایل دیگر هم هستند که توضیح آنها از هدف این مطلب دور است).

 

ابزار ها

این نکته را هم باید در نظر بگیرید که یک سیستم‌عامل نیاز به چندین نرم‌افزار دارد که تعداد آنها کم نیست، که نام آنها در لینوکس پکیج می‌باشد ، حالا در نظر بگیرید که ده‌ها پکیج دارید که هرکدام از آنها ممکن است نیاز به چندین پکیج دیگر داشته باشند و هر کدام از آنها باید از جایی دانلود شوند، در کنار یکدیگر قابل‌اجرا باشند و تداخل نداشته باشند، کامپایل شوند و فایل‌های خروجی آنها در پوشه‌های مشخص در فایل‌های سیستم قرار بگیرند، اگر کمی بیشتر درباره این مراحل و مراحل دیگری که برای ساخت یک سیستم‌عامل کامل انجام شود فکر کنید شاید اصلاً از این کار منصرف شوید! به دلیل زمان زیادی که گرفته می‌شود و در بعضی موارد شاید غیرممکن باشد برای کاربر انسانی به همین دلیل ابزارهایی برای تسهیل این فرآیند آماده شده تا شما نگران آن نباشید!?

yocto و buildroot ازجمله این ابزارها هستند که البته یوکتو کامل‌تر هست و این کاملی بدون هزینه نیست، ازجمله آن می‌توان به فضای زیادی که اشغال می‌کند اشاره کرد مثلاً در حالت عادی ممکن است برای ساخت ایمیج تنها برای یک برد حدود 100 گیگ فضا اشغال کند. اما buildroot سبک‌تر است و نسبت به یوکتو ساده‌تر می‌باشد. ما برای این برد از بیلد روت استفاده می‌کنیم.

لازم است برای درک بهتر buildroot چند مورد دیگر را هم به‌صورت کوتاه و خلاصه توضیح دهیم:

 

1- toolchain

تولچین اولین چیزی است که برای امبدد لینوکس نیاز داریم و از آن برای کامپایل کدها استفاده می‌کنیم، و شامل ابزارهایی مثل کامپایلر، لینکر و کتابخانه‌های موردنیاز است.

یکی از مهم‌ترین این کتابخانه‌ها کتابخانه C است، همان‌طور که در شکل زیر می‌بینید c library رابط بین نرم‌افزارها و هسته سیستم‌عامل می‌باشد.

تولچین

c library رابط بین نرم افزار هاو هسته سیستم

2- bootloader

بوت لودر دو وظیفه اصلی داره، اول راه‌اندازی اولیه سیستم و بعد از آن اجرای Kernel، همچنین device tree را برای کرنل آماده می‌کند. device tree همان‌طور که در بالا هم اشاره شد برای تعریف بخش‌های سخت‌افزار به‌کار می‌رود هم ویژگی‌های خود SOC و هم ویژگی‌ها برد، مثلاً در آن بخش i2c را تعریف می‌کنیم و آدرس رجیستر های i2c رو مشخص کرده و میگوییم اگه دیتایی در i2c آمد به کدام درایور ارسال بشه و پین‌های i2c کدام است (البته یکسری از مقداردهی‌ها ارجاعی به بخش دیگر از device tree هستند).

bootloader

مثالی از device tree

 

3- kernel

وظیفه اصلی کرنل مدیریت منابع، ارتباط با سخت‌افزار و آماده‌سازی یک AP I برای برنامه‌های کاربر هست.

لایه های سیستم‌عامل

در شکل بالا یک نمای کلی از وظایف کرنل نشان داده شده. نرم‌افزارهایی که در بخش user space اجرا می‌شوند درخواست‌هایشان توسط c library به kernel space ارجاع داده می‌شود و از آنجا روی سخت‌افزار اجرا می‌شود. خود Kernel دارای امکانات مختلفی هست که در زمان کامپایل، کانفیگ های آن مشخص می‌شود، به‌طور مثال درایورهای مختلف میتواند در کرنل قرار داده شود که البته هرچه تعداد آنها بیشتر باشد، حجم کرنل بالاتر رفته و به‌تبع زمان لود شدن آن بیشتر می‌شود.

 

4- root filesystem

ما همه بخش‌های بالا را استفاده می‌کنیم تا درنهایت بتوانیم برنامه خودمان را اجرا کنیم، چیزی که در root file system قرار می‌گیرد. البته باید در نظر داشت که برای اجرای برنامه ما مسلماً باید بخش‌های دیگری از سیستم‌عامل اجرا شده باشند، مثلاً درایور شبکه راه‌اندازی و به شبکه متصل شده باشند، یا صفحه‌نمایش ما راه‌اندازی شده و آماده نمایش اطلاعات باشد، خوب کرنل از کجا بداند چه برنامه‌ای را اجرا کند؟! برای حل این مسئله ما برنامه‌ای با نام init داریم که آدرس آن در فایل سیستم، هنگام لود کرنل توسط بوت لودر، به کرنل اعلام می‌شود.

برنامه init که خودش انواع مختلفی دارد، به ترتیب نرم‌افزارهایی که باید اجرا شوند را مشخص و اجرا می‌کند حتی می‌توانید در فایل کانفیگ مشخص کنید که هر برنامه نیاز دارد، تا چه برنامه‌هایی قبل از آن اجرا شوند یا اگر برنامه‌ای بسته شد دوباره اجرا شود یا نه و … . همان‌طور که گفته شد یکسری از ابزارها خیلی نیاز هستند تا ما بتوانیم یک استفاده ساده از سیستم کنیم، مثلاً دستورات ls, cat, grep,mkdir, cd و غیره هر کدوم یک ابزار محسوب می‌شوند که ما در ترمینال آنها رو اجرا می‌کنیم، حالا برای راحتی کار و یک راه‌اندازی سبک، نرم‌افزاری آماده شده به نام busybox که در آن دستوراتی مثل مواردی که اشاره شد و خیلی بیشتر را تعبیه کردند با حجم بسیار کمتر، به قول خودشون 80 درصد ابزارهای کاربردی رو با 20 درصد کد پیاده‌سازی کردند.

روت سیستم

نحوه کارکرد روت سیستم

حالا با اتمام مقدمه‌ای طولانی به سراغ اصل مطلب می‌رویم!

 

buildroot چیست؟

بیلدروت

فرایند های buildroot

تصویر بالا کل فرایندی که buildroot انجام می‌دهد را نشان داده، buildroot یکسری makefile و patch هست که فرایند تهیه یک محیط لینوکس را برای یک سیستم امبدد، ساده و خودکار می‌کند. درواقع یک تولچین، روت فایل سیستم، کرنل و uboot را برای برد ما آماده می‌کند و در آخر هم یک ایمیج که شامل همه این بخش‌ها هست را به ما می‌دهد که فقط کافی است اون رو بریزیم روی sd و اجرا کنیم.

 

کامپایل buildroot

وقتشه که بریم سراغ اجرایی کردن دانسته هامون:

سیستمی که برای استفاده از buildroot نیاز داریم لازم نیست که مشخصه‌های خیلی بالایی داشته باشد اما دقت کنید که ما قرار است کامپایل کنیم و هرچه CPU قوی‌تری داشته باشیم سریع‌تر کامپایل انجام می‌شود، به نظر من یک سیستم معمولی برای این کار هم مناسب است مثلاً با core i5، CPU یا core i7 نسل 4.

از بابت سیستم‌عامل هم، ترجیحاً استفاده از لینوکس بدون ماشین مجازی هست و بهتر است که لینوکس را روی سیستم بوت و استفاده کنید (اگه هم علاقه شدیدی به ویندوز دارید می‌توانید از  WSL 2 استفاده کنید و buildroot را با کمک آن استفاده کنید  (دردسر هاش با خودتون?).

من هم خودم از توزیع Ubuntu نسخه 2018 استفاده می‌کنم و شما هم بهتره که همین کار را انجام دهید ، نکته‌ای که برای لینوکسی‌ها ثابت‌شده است اینکه جدیدتر همیشه بهتر نیست (جدیدتر همیشه پر باگ تر است!) پس نسخه 2020 رو پیشنهاد نمی‌کنم.

حالا ترمینال را باز کرده و شروع می‌کنیم، اول از همه با دو دستور زیر پکیج‌های مورد نیازمان را نصب می‌کنیم:

 

حالا پروژه را دانلود کرده و وارد پوشه می‌شویم:

 

دقت کنید که لازم نیست هیچ‌کدام از دستورات buildroot با sudo اجرا شود!

با دستور

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

 

حالا برای شروع فرآیند build دستور زیر را وارد می‌کنیم

این هم از خروجی دستور بالا در صورت درست بودن همه چیز:

خروجی سیستم

دستور make مراحل زیر را انجام می‌دهد:

  • دانلود سورس کد ها
  • کانفیگ و بیلد تولچین (یا استفاده از تولچینی که خود ما میدهیم)
  • کانفیگ و بیلد پکیج هایی که مشخص کردیم
  • بیلد کرنل
  • بیلد بوت لودر
  • ساخت root file system
  • ساخت ایمیج نهایی

 

خروجی بیلد ما در پوشه output قرار می‌گیرد که خودش شامل چند زیرپوشه می‌باشد:

  • images: همه ایمیج های خروجی ما اینجا هستند (مثل ایمیج کرنل و بوتلودر و فایل سیستم) در واقع فایل هایی هستند که باید روی برد خودمان بریزیم.
  • build: همه کامپوننت هایی که بیلد شدند در این پوشه هستند
  • host: ابزار هایی که برای بیلد استفاده شدند و sysroot تولچین در این پوشه هستند ، مثلا میتوانید در پوشه host/bin به کراس کامپایلر دسترسی پیدا کنید و از آن برای کامپایل برنامه های خود ، استفاده کنید.
  • و…

 

کانفیگ buildroot

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

(منظور فایلsisoog_sinux_f1_defconfig است که در پوشه configs قرار داره، البته که خود نام‌گذاری‌ها و کامنت ها تا حدی گویای کاری است که انجام می‌دهند )

 

در بخش بوت لودر کانفیگ خودمان را توسط پارامتر BR2_TARGET_UBOOT_CUSTOM_CONFIG_FILE مشخص کردیم تا از کانفیگ دیفالت جلوگیری شود. درBR2_TARGET_UBOOT_CUSTOM_DTS_PATH دو مقدار را مشخص کردیم که یکی dtsi هست که بیشتر شامل ارجاع به فایل های دیگر (i از include میاد) و اطلاعات soc هست و dts که شامل اطلاعات بر اساس برد خودمان و بخش هایی که  استفاده کردیم است.

در بخش kernel هم نسخه کرنل و پچ هایی که باید روی کرنل اعمال شود مشخص شده و کانفیگ و …

دربخش fielsystem مشخص شده که فایل سیستم ما با چه فرمت هایی ساخته شود (مثلا هم با فرمت ext2 برای ریختن روی sd card و هم فرمت لازم برای ریختن روی nand flash). در آخر هم پارامتری با نام BR2_ROOTFS_POST_IMAGE_SCRIPT داریم که اسکریپتی را اجرا میکند که وظیفه ی اسکریپت این است که  فایل های کرنل و بوت لودر و فایل سیستم را در کنار هم قرار میدهد و یک ایمیج میسازد که آن ایمیج را میتوانیم روی sd یا nand flash  بریزیم.

 

در قسمت  Target Package هم پکیج هایی که میخواهیم نصب شوند را مشخص میکنیم لازم هست که پکیج ها با نامی که در اینجا مشخص شده اند در package در پوشه اصلی بیلدروت وجود داشته باشند.

 

با این دستور هم میتوانید به صورت گرافیکی کانفیگ های buildroot را اعمال کنید.

کانفیگ بیلدروت

کانفیگ گرافیکی buildroot

در قسمت بعد به سراغ ساخت ایمیج و اجرای آن روی سخت‌افزار می‌رویم.

 

دانلود رایگان شماتیک و PCB برد توسعه SINUX F1

فایل های طراحی را میتوانید به صورت رایگان از گیت هاب من دریافت کنید!

خرید برد توسعه SINUX F1

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

 

2 نفر

پــــســنــدیـده انـد

توجه

Mahdi.h  
Mahdi.h  

علاقه مند به سیستم های امبدد

دیدگاه ها

20 دیدگاه

  • Hojjat
    hojjat
    ۱۹ خرداد ۱۴۰۱

    سلام
    با تشکر از شما
    وقتی دستور make را می زنیم ارور 404 رو برای یو ار ال http://sources.buildroot.net/rtl8188eus/rtl8188eus-v5.3.9.tar.gz می ده به نظرم دیگه این لینک موجود نیست چه باید بکنیم؟

    • Mahdi.h  
      Mahdi.h  
      ۲۴ خرداد ۱۴۰۱

      سلام
      خواهش میکنم
      عذرخواهی بابت تاخیر
      من بررسی کردم این رو ولی نتونستم اون فایلی رو که قبلا دانلود کرده بودم رو دوباره پیدا کنم و checksum متفاوتی میگرفتم ، چون این پکیج رو خودم اضافه کرده بودم ، اما شما میتونید فعلا از داخل این فایل board/sisoog/sinux/f1/sisoog_sinux_f1_defconfig
      کانفیگ
      BR2_PACKAGE_RTL8188EUS=y
      رو غیر فعال بکنید تا بتونید از بقیه قابلیت ها استفاده کنید
      تا من اولین فرصت این پکیج رو هم درستش کنم

  • مهدی سهیلی
    ۱۵ بهمن ۱۴۰۰

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

    • Mahdi.h  
      Mahdi.h  
      ۱۵ بهمن ۱۴۰۰

      سلام
      خواهش میکنم???
      حقیقتا چون معمولا به سیستم های امبدد دسترسی فیزیکی هست یه جورایی میتونیم فقط سخت تر کنیم دسترسی به اطلاعاتمون رو (البته به اندازه کافی،ولی میگم سخت تر چون بستگی داره اطلاعات ما چقدر مهم باشه و طرف مقابل ما چقدر براش ارزش قائل باشه و کی باشه ، یه شخص باشه ، یه شرکت باشه یا یه مجموعه بزرگ تر! ).
      نحوه حفاظت هم خودش چندتا مطلب میشه براش نوشت که شاید در آینده این کار رو انجام بدیم.
      اما در حال حاضر میتونید این لینک ها رو بررسی کنید
      https://embeddedbits.org/introduction-embedded-linux-security-part-1/
      https://embeddedbits.org/introduction-embedded-linux-security-part-2/

  • ارسلان
    ۲ بهمن ۱۴۰۰

    سلام
    ممنون از مطلب خوبتون
    در قسمتی که دستور make sisoog_sinux_f1_defconfig رو وارد میکنم پیام زیر نمایش داده میشه و هیچی ساخته نمیشه.به نظرتون مشکل از کجاست؟
    Nothing to be done for ‘sisoog_sinux_f1_defconfig’

    • Mahdi.h  
      Mahdi.h  
      ۲ بهمن ۱۴۰۰

      سلام.
      خواهش میکنم ?
      دقت کنید که این دستور رو داخل خود پوشه buildroot-sinux باید اجرا کنید

      همچنین اگر که در زمان انتشار مطلب پروژه رو از گیت گرفتید یه مشکل کوچیک داشت که برطرف شده و باید دوباره ریپازیتوری رو pull یا clone کنید.

      اگر هم که الان که کامنت گذاشتید پروژه رو دانلود کردید احتمالا همین پوشه ای که گفتم رو داخلش نیستید

      • ارسلان
        ۳ بهمن ۱۴۰۰

        آره من اشتباه میکردم تو دایرکتوری configs اجرا میکردمش

        ممنون مهدی عزیز!

  • نیما
    ۲۴ دی ۱۴۰۰

    سلام
    دمتون گرم. مطالبتون و نگارشتون عالیه.
    در مورد یک چیپ دیگه از allwinner در روال فلش، مدام حرف از firmware میزنه. البته من هنوز عمیق نشدم وکار عملی باهاش رو شروع نکردم.
    متوجه نمیشم منظورش از firmware چیه. کرنل بوت لودر سیستم فایل یا چی!

    • Mahdi.h  
      Mahdi.h  
      ۲۴ دی ۱۴۰۰

      سلام
      خواهش میکنم??
      منظورتون از “در روال فلش“ متوجه نمیشم.
      معمولا برای دستگاه های امبدد به همون ایمیج نهایی (که شامل بوت لودر و سیتم فایل و کرنل ) فریمور گفته میشه.

  • صاحبی
    ۲۲ دی ۱۴۰۰

    با سلام و تشکر از شما آقا مهدی و ریچ_دد

    در مرحله اجرای دستور make configfile فایل پیکربندی sisoog_sinux_f1_defconfig که ls میگیرم اشاره به فایل /home/mahdi2001h/projects/buildroot-sinux/board/sisoog/sinux/f1/sisoog_sinux_f1_defconfig داره که به یک مسیر شخصی اشاره می‌کنه. من دستور زیر رو اجرا کردم نمیدونم کار درستی کردم یا که نه
    ln -sf ../board/sisoog/sinux/f1/sisoog_sinux_f1_defconfig config/sisoog_sinux_f1_defconfig

    و فعلا در حال Build هست …، فقط سوال اینکه سیستم از کجا میفهمه که از چه تولچینی باید استفاده کنه؟ آیا اون هم توی پیکربندی مشخص میشه؟

    • Mahdi.h  
      Mahdi.h  
      ۲۳ دی ۱۴۰۰

      سلام خواهش میکنم??
      بله شما کار درستی کردید?
      مثل اینکه لینک درست نیست من توی گیتهاب اصلاحش میکنم ، ممنون که اطلاع دادید
      منظورتون رو از چه تولچینی متوجه نمیشم
      تولچین باید بر اساس نسخه کتابخونه c و معماری پردازنده باشه که ما این اطلاعات رو در همین فایل کانفیگی که بهش اشاره کردید بهش میدیم و خودش از سورس کامپایل میکنه برامون. اطلاعات بیشتر رو میتونید توی این لینک بررسی کنید:
      https://buildroot.org/downloads/manual/manual.html#_cross_compilation_toolchain
      توی قسمت هشتم و نهم آموزش “امبدد لینوکس” هم اشاره ای به این بحث تولچین شده

  • بهزاد
    ۱۷ دی ۱۴۰۰

    چقدر لذت بخش بود.. کلی یاد گرفتم.. تشکر کردن خیلی کمه برای این پروژه. واقعا عالی هستید.

    • Mahdi.h  
      Mahdi.h  
      ۱۷ دی ۱۴۰۰

      ممنون از شما ، همین انرژی هاتون باعث میشه که ادامه بدیم ?.

  • محمدرضا
    ۱۵ دی ۱۴۰۰

    نحوه ساخت این فایل هم توضیح میدید.sisoog_sinux_f1_defconfig

    • Mahdi.h  
      Mahdi.h  
      ۱۷ دی ۱۴۰۰

      احتمالا منظور شما این هست که اگر برای برد خودمون خواستیم چنین فایلی بسازیم چیکار باید بکنیم ؛ روش مناسبش این هست که یک فایل کانفیگ مشابه که نزدیک هست به کارتون رو انتخاب کرده و یکسری پارامتر هایی که نیاز دارید رو فقط داخلش تغییر بدید ، به طور مثال من خودم از کانفیگ licheepi nano استفاده کردم ، برای اعمال تغییرات توی اون هم میتونید هم به صورت دستی و متنی تغییرش بدید و یا با کمک دستور make menuconfig به صورت گرافیکی تغییراتتون رو اعمال کنید و بعد ذخیرش کنید.

  • مجید
    ۱۴ دی ۱۴۰۰

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

    • Mahdi.h  
      Mahdi.h  
      ۱۵ دی ۱۴۰۰

      سلام. سوال خوبی رو اشاره کردید. انشالله در چند قسمت بعد بهش اشاره میکنیم (احتمال زیاد البته ?)
      اما شما فعلا میتونید این مطلب رو https://jaycarlson.net/embedded-linux/
      یه بررسی بکنید که خیلی کمک کننده هست در رابطه با این موضوع.

  • Elahe Khabaz
    الهه خباز
    ۱۴ دی ۱۴۰۰

    بسیار عالی 🙂

پر بحث ترین ها

مسابقه دوم : چالش برنامه نویسی به زبان C

مسابقه دوم : چالش برنامه نویسی به زبان C

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

Zeus ‌ Zeus ‌
  • 3 سال پیش
راه اندازی LCD گرافیکی Nokia 1661

راه اندازی LCD گرافیکی Nokia 1661

LCD گرافیکی یکی از مهم ترین پارامترهای موجود در طراحی انواع مدارات الکترونیکی پیچیده و حتی ساده است ، نمایش وضعیت و...

Zeus ‌ Zeus ‌
  • 4 سال پیش
ریموت کدلرن و چکونگی دکد کردن آن به همراه سورس برنامه

ریموت کدلرن و چکونگی دکد کردن آن به همراه سورس برنامه

ریموت کنترل امروزه کاربرد زیادی پیدا کرده است؛ از ریموت‌های درب بازکن تا ریموت‌های دزدگیر و کنترل روشنایی همه از یک اصول اولیه پیروی می‌کنند و آن‌هم ارسال اطلاعات به‌صورت بی‌سیم است....

Zeus ‌ Zeus ‌
  • 5 سال پیش
همه چیز درباره ریموت کنترل‌های هاپینگ

همه چیز درباره ریموت کنترل‌های هاپینگ

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

Zeus ‌ Zeus ‌
  • 5 سال پیش
مسابقه سوم: استخراج داده از رشته ها در زبان C

مسابقه سوم: استخراج داده از رشته ها در زبان C

نزدیک به 5 ماه از مسابقه دوم سیسوگ می‌گذره و فکر کردم که بد نیست یک چالش جدید داشته باشیم! البته چالش‌ها...

Zeus ‌ Zeus ‌
  • 2 سال پیش
مسابقه ششم: بزن میکروکنترلر را بسوزون!

مسابقه ششم: بزن میکروکنترلر را بسوزون!

بزنم میکروکنترلر را بسوزونم اونم تو  این شرایط!، طراحی مسابقه از اون چیزی که به نظر می‌رسه سخت‌تر است، باید حواست باشه...

Zeus ‌ Zeus ‌
  • 12 ماه پیش
آموزش قدم به قدم راه اندازی NRF24L01

آموزش قدم به قدم راه اندازی NRF24L01

آموزش قدم به قدم راه اندازی +NRF24L01  با کتابخانه سازگار با انواع میکروکنترلرها و کامپایلرها قبل از اینکه قسمت بشه با ماژول...

رسول خواجوی بجستانی رسول خواجوی بجستانی
  • 3 سال پیش
ساخت ماینر با FPGA و ARM

ساخت ماینر با FPGA و ARM

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

Zeus ‌ Zeus ‌
  • 3 سال پیش
کار با ماژول تمام عیار mc60 – قسمت دوم – راه اندازی OpenCPU

کار با ماژول تمام عیار mc60 – قسمت دوم – راه اندازی OpenCPU

در قسمت اول به یکسری اطلاعات کلی ماژول mc60 پرداختیم، با نرم افزار QNavigator کار کردیم و یک هدربرد هم برای کار...

Mahdi.h   Mahdi.h  
  • 3 سال پیش
مسابقه چهارم: کدام حلقه سریع‌تر است؟

مسابقه چهارم: کدام حلقه سریع‌تر است؟

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

Zeus ‌ Zeus ‌
  • 2 سال پیش
سیـــســـوگ

مرجع متن باز آموزش الکترونیک