امبدد لینوکس – قسمت یازدهم –  کار با crosstool-NG - زنجیره‌ای از ابزارهای لازم برای ساختن همه چیز (بخش هفتم)

امبدد لینوکس – قسمت یازدهم –  کار با crosstool-NG - زنجیره‌ای از ابزارهای لازم برای ساختن همه چیز (بخش هفتم)

امبدد لینوکس – قسمت یازدهم –  کار با crosstool-NG - زنجیره‌ای از ابزارهای لازم برای ساختن همه چیز (بخش هفتم)
امبدد لینوکس – قسمت یازدهم –  کار با crosstool-NG - زنجیره‌ای از ابزارهای لازم برای ساختن همه چیز (بخش هفتم)

(فصل دوم – بخش هفتم)

خوب! توی قسمت قبل یاد گرفتیم که چطوری یه برد “رسپبری پای سه بی پلاس – Raspberry Pi 3 B Plus” یا “لیچی پای نانو – Lichee Pi Nano” رو راه اندازی اولیه کنیم. یعنی بتونیم از طریق یه سیستم دیگه بهش ssh بزنیم. توی این قسمت میخوایم با crosstool-NG و menuconfig که قبلاً قولشو داده بودیم، بیشتر آشنا بشیم و کار کنیم، همین طور بتونیم برای این دو برد، تولچین بسازیم.

 

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

 

کار با crosstool-NG

مسیر کامل crosstool-NG روی سیستم من با توجه به تنظیمات نصب این هست:

 

منطقی نیست هر بار که می‌خوام ازش استفاده کنم اینجوری اجراش کنم درسته؟

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

یه فایل می‌سازیم اینجوری:

 

راستی اگه با vi رفیق فاب نیستین باز هم عمو جادی رو دریابید!

و توش اینا رو میریزیم فعلا در آینده هم بیشتر میشه:

 

 

 

خب حالا هر سری اول کار این فایل رو source می‌کنیم توی ترمینال‌مون و دیگه به راحتی می‌شه توی اون ترمنیال فقط ct-ng رو صدا بزنیم.

 

خب همون طور که اولش گفتیم crosstool-NG یه سری makefile بوده و menuconfig طور هست رابط کاربریش مثل Kernel و U-Boot و خیلی چیزهای دیگه.

خب اگه بدون هیچ ورودی اجراش کنیم یه سری اطلاعات به ما می‌ده:

خوب نحوه استفاده ازش چه جوری هست حالا؟

اول برید توی فولدری که میخواید Toolchain رو بسازید:

 

 

بعدش با این دستور تنظیمات مربوط به یکی از سمپلها رو که به پردازنده‌تون میخوره توی فولدری Toolchain تون ذخیره کنید. مثلا:

 

خب حالا می‌تونید با دستور زیر به منو تنظیمات دسترسی داشته باشین

 

تنظیمات و منو های crosstool-NG

 

خبر خوب یا بد این هست که همه این منوها رو قرار نیست توضیح بدیم واستون و قراره خودتون برین یادبگیرین!

چون الان دیگه میدونید هر قسمت چی هست!

 

ساختن تولچین Toolchain  برای لیچی پای نانو Lichee Pi Nano

خب یه ترمینال باز می‌کنیم و این دستورات رو اجرا می‌کنیم

 

سوال: چرا این تنظیمات؟ چرا بقیه رو انتخاب نکردین؟

جواب: چون لینوکسی که الان روی برد هست با کتابخانه glibc ساخته شده. ولی وقتی که ما می‌خوایم از صفر همه چیز رو بسازیم بهتره به توصیه کریس گوش کنیم.

خب حالا بریم توی منو و یکم crosstool-NG رو شخصی‌سازی کنیم!

توی اولین منو من ترجیح میدم که این متغیر رو تغییر بدم.

 

شخصی سازی crosstool-NG

به چی و چرا؟

به:

 

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

بقیه متغیرها رو هم ببینید و اگه دوست داشتین تغییر بدین.

منوی دوم که واسه خودم خیلییییی گیج کننده بود تا مدت‌ها!!!!

انتخاب و تغییر مسیر تولچین

 

به یاد دبستان مانند نمونه پر کنید. 😁

برای این که بفهمید هر کدوم چی هست و چه مقادیری می‌تونه داشته باشه انتخابش کنید و هلپش رو ببینید و هم زمان این سایت  رو هم ببینید:

https://gcc.gnu.org/onlinedocs/gcc/ARM-Options.html

این رو هم اگر نمی‌دانید بدانید!

آرم یه اسم معماری داره یه اسم پردازنده یا کور و یه اسم خانواده:

معماری مثل armv5te

پردازنده مثل arm926ej-s

و خانواده مثل خانواده آرم ۹

منوی بعد هم تغییر خاصی نمی‌خواد

منو کانفیگ - تنظیمات عمومی crosstool-NG

 

به منوی سیستم عامل  هم یه سر بزنید و اگه صلاح دونستین ورژن کرنل رو کمش کنید.

منو سیستم عامل crosstool-NG

 

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

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

هشدار: از تحریم شکن مناسب استفاده کنید!

سوال: چه خطاهایی ممکنه داشته باشیم؟ و راه حلشون چیه؟

 

جواب: خطاهایی که مربوط به نبودن یه سری پکیج روی سیستم‌تون هست که راه حل هم نصب اون پکیج‌هاست.

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

 

سوال: از کجا دانلود کنیم و جاش کجاست؟

جواب: اگه به گزینه‌های منو و متن خطا دقت کنی جواب خواهی گرفت!

بیلد کردن تولچین مورد نظر با crosstool-NG

 

تست کردن تولچین Toolchain  برای لیچی پای نانو Lichee Pi Nano

خوب من اولش ترجیح میدم این خط رو به فایل at00exports.sh اضافه کنم:

 

و دوباره این فایل رو source کنم.

 

خوب الان میریم توی فولدر پروژه‌هامون و یه فایل می‌سازیم:

خب حالا با کراس کامپایلرمون Cross Compiler کامپیالش می‌کنیم:

 

خوب حالا فایل اجرایی رو یه بررسی کنیم و بعدش بریزیم روی SD Card

 

حسب ظاهر که اکی هست امیدوارم حسب باطن هم اکی باشه!

خوب حالا کارت حافظه رو میذاریم و برد رو روشن میکینم و برنامه رو از هرجایی که ریختیم اجرا می‌کنیم:

 

ساخت تولچین برای لیچی پای نانو

 

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

چرا انگار چون تست اصلی زمانی هست که کرنل رو کامپایل کنیم با تولچین خودمون.

 

ساختن تولچین Toolchain  برای رسپبری پای سه بی پلاس Raspberry Pi 3  B Plus

خب معما چون حل گشت گلابی شد دیگه، مخصوصاً که یکی از مثال‌ها دقیقا واسه رسپبری پای سه بی پلاس Raspberry Pi 3  B Plus

اولش طبق قاعده از اولش منظم باشیم تا آخرش گم نشیم فولدرهامون رو می‌سازیم

 

خب در اینجا من چون crosstool-NG رو توی فولدر F1C100s نصب کردم دوباره فایل at00exports.sh رو از اونجا source میکنم و بعدش این دستورات

 

خب تغییراتی که من دادم یکی در مورد مسیر هست یکی هم کرنل:

 

و بعدش

 

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

برای تست کردنش هم مثل قبل منتهی برای ریختن فایل روی رسپبری پای سه بی پلاس Raspberry Pi 3  B Plus از scp قافل نشید!

خب الان همه چیز رو برای ساختن همه چیز دارید! اگه سازنده باشید خیلی چیزها رو تا قسمت بعد خواهید ساخت. 💪

 

پایان بخش هفتم از فصل دوم

توصیه میکنم یه سری هم به نظرات این پایین بندازید، نظرات رو بخونید و اگر شما هم نظری دارید، مشارکت کنید! 😁

همه آموزش های امبدد لینوکس

حمایت از Rich_Dad IRANEMBEDDED

خوشحال میشیم برای تداوم و کیفیت ما رو حمایت کنید.

0 نفر

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

توجه

Rich_Dad IRANEMBEDDED
Rich_Dad IRANEMBEDDED

طراحی، بهینه سازی و تولید محصولات الکترونیکی، درحوزه های تجاری،صنعتی و تجهیزات پزشکی، مجری سیستم های امبدد لینوکس * (فروش قطعات الکترونیک https://aniroot.com)

دیدگاه ها

16 دیدگاه

  • سعید
    ۱۳ مهر ۱۴۰۰

    سلام
    ممنون از آموزش های خوبتون
    من به مرحله ی build رسیدم و خطای failed to retrieve isl-0.24 رو نشون میده.
    فایل مربوط به این پکیج رو دانلود کردم. ولی نمی دونم باید کجا قرارش بدم تا موقع build شناسایی بشه.
    ممنون که راهنمایی می کنید

  • صاحبی
    ۲۳ خرداد ۱۴۰۰

    سلام
    کامپایل toolchain و شروع کردم. فقط چون هنوز SoM لیچی پای رو تهیه نکردم، قصد دارم روی qemu تست‌های خودم رو بزنم.
    ممنونم

  • Pouya
    ۲۵ فروردین ۱۴۰۰

    مرسی داداش 🙂 تمام مراحلی که تا اینجاش اومدم به کنار … اون scp با اینکه آسونش بود … سر کپی نشدن فایلی که کامپایل کرده بودم نزدیک بود سرمو بکوبم به دیوار … در هر صورت اویل به این سایت و مطالبش …

    ضمن اینکه من برای raspberry pi zero w انجام دادم .
    soc این برد bcm2835 هست – معماری cpu اون هم armv6 – از خانواده arm11 که دقیق تر بگم ARM11J6JZF-S
    برای ساخت تولچین این soc از
    ct-ng armv6-unknown-linux-gnueabihf
    استفاده کنید…
    توی قسمت menuconfig هم وقتی بخش معماری چک می کنید متوجه می شید که بری همین معماری و خانوادس :))
    یه نکته ای هم هست را جب GCC که برای نسخه های متفاوتی که شما نصب می کنید ساختار فایلا تغییر می کنه و خب باید پیداش کنید …
    بعد از نصب شدن فایلای toolchain شما باید اون آدرسو بگردید بین فایلاتون (که می تونید از دستور locate هم استفاده کنید برای بیدا کردن) و فایل
    armv6-rpi-linux-gnueabihf-gcc
    که البته اگه معماری cpu شما فرق می کنه طبیعتا اسم فایل فوق فرق خواهد کرد ولی اخرش gcc داره که … خلاصه با این فایله می تونید برنامه های c رو مثلا first.c رو کامپایل کنید 🙂 … پس:
    export GCC=/path/…/armv6-rpi-linux-gnueabihf-gcc رو من زدم …. و بعدش می تونیم از GCC$ استفاده کنیم برای کامپایل.

    🙂

    ضمن سخن ادمین : ‘ اما متاسفانه غالب افراد مهارت در امبدد لینوکس را با بازی کردن با رسپبری پای اشتباه می‌گیرند! 😉 ‘ شما هم اینو یادتون باشه … واقعا فرق دارن :)))))))

    تا درودی دگر …

    • Rich_Dad IRANEMBEDDED
      Rich_Dad
      ۶ اردیبهشت ۱۴۰۰

      سلام پویا جان
      خداقوت و ممنون از توضیحات 🙏

  • آرمین
    ۳۰ آذر ۱۳۹۹

    سلام وقت بخیر
    این دوره دیگه قرار نیس ادامه پیدا کنه؟

    • Rich_Dad IRANEMBEDDED
      Rich_Dad
      ۹ دی ۱۳۹۹

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

    • Rich_Dad IRANEMBEDDED
      Rich_Dad
      ۹ دی ۱۳۹۹

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

      • آرمین
        ۹ دی ۱۳۹۹

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

  • داود
    ۱۴ آذر ۱۳۹۹

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

    • Rich_Dad IRANEMBEDDED
      Rich_Dad
      ۹ دی ۱۳۹۹

      سلام داود جان
      امیدوارم برای شما راه گشا باشد

  • علی
    ۱۷ آبان ۱۳۹۹

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

    • Rich_Dad IRANEMBEDDED
      Rich_Dad
      ۹ دی ۱۳۹۹

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

  • محمد مهدی کریمی
    محمد مهدی کریمی
    ۸ آبان ۱۳۹۹

    سلام
    ممنون از لطفتون که تجربه و دانشی که دارین به اشتراک گذاشتین
    مهندس من کامپایل تول چین و نمونه سمپل hello wordهم انجام دادم و بر روی بورد lichee pi اجرا کردم و به خوبی اجرا شد , برای ادامه کار مثلا بخوام به GPIO ها دسترسی داشته باشم چه کتابخانه ای باید اضافه بکنمو از کجا اون کتابخانه رو باید پیدا کنم ؟ اصولش به چه صورت ؟
    پیشاپیش از پاسختون ممنونم

    • Rich_Dad IRANEMBEDDED
      Rich_Dad
      ۹ دی ۱۳۹۹

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

پر بحث ترین ها

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

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

Zeus ‌ Zeus ‌
  • 2 سال پیش

راه اندازی LCD گرافیکی Nokia 1661 و دانلود کتابخانه آن

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

Zeus ‌ Zeus ‌
  • 4 سال پیش

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

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

Zeus ‌ Zeus ‌
  • 5 سال پیش

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

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

Zeus ‌ Zeus ‌
  • 2 سال پیش

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

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

Zeus ‌ Zeus ‌
  • 5 سال پیش

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

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

Zeus ‌ Zeus ‌
  • 9 ماه پیش

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

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

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

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

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

Zeus ‌ Zeus ‌
  • 3 سال پیش

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

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

Zeus ‌ Zeus ‌
  • 1 سال پیش

درآمد زایی به سبک پینوکیو

ما مهندسین, بخصوص مهندسین برق و الکترونیک … علاقه خاصی به طراحی و ساختن داریم علاقه زیادی به تکنولوژی , بخصوص از...

Sisoog Os Sisoog Os
  • 3 سال پیش
سیـــســـوگ

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