بررسی اجمالی:

• بوت لودر

• بوت و کامپایل کردن کرنل

• فایل سیستم های بلوکی (Block) و فلش (Flash)

• کتابخانه C و cross-compiling tool chains

• ساختن بلوک های سبک برای سیستم های تعبیه شده

• آزمایشگاه عملی با برد  ARM

 

مدت زمان دوره:  30 ساعت

 

مخاطبین:

• توسعه دهندگان  سخت افزارها با استفاده از هسته لینوکس

• متخصصانی که از توسعه دهندگان سیستم های تعبیه شده لینوکسی پشتیبانی می کنند

 

پیش نیازها : دانش در سطح LPIC-1

 

تجهیزات مورد نیاز :

  • کامپیوتر با حداقل 1 گیگابایت رم، و لینوکس اوبونتو نصب شده در یک پارتیشن  حداقل 10 گیگابایتی
  • استفاده از لینوکس در ماشین مجازی به دلیل مسائل مربوط به اتصال واقعی سخت افزارها توصیه نمی شود.
  • نسخه اوبونتو دسکتاپ 14.04 (32 بیتی) – توزیع های دیگر پشتیبانی نمی شوند
  • از اطلاعات مهم کامپیوتر نسخه پشتیبان تهیه شود. ممکن است اطلاعات با ارزش در طول این جلسات آسیب ببیند.
  • داشتن پورت سریال بر روی کامپیوتر و یا مبدل USB به ماژول سریال

 

سخت افزار

SST-APEX-V210

 

S5PV210, ARM Cortex-A8, (ARMv7-A) with NEON , up to 1GHz.

 

CPU

3D Graphic Engine (SGX540)

GPU

 

 512MB Mobile DRAM -

 Secure Digital(SD) / MMC / SDIO card slot -

 

Memory

 

 

 GPIO, SPI, IIC, ADC -

 One 10/100M Ethernet interface (RJ45) -

 2 USB2.0 -

 USB OTG -

 5 serial ports -

 SD/MMC interface -

 CF interface -

 JTAG interface -

 Power supply: 9-13V@700mA -

 

Peripherals

Composite video

Video Input

 

 Composite video -

 LCD -

 HDMI -

 

Video output

120mm x 150mm

Size

 

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

  •       مزایای استفاده از لینوکس در مقابل سیستم عامل های تعبیه شده قدیمی و علل انتخاب لینوکس
  •       مفاهیم عمومی معماری یک سیستم لینوکسی تعبیه شده
  •       بررسی اجمالی اجزای یک سیستم ویژه

 

محیط توسعه لینوکس تعبیه شده

  •       استفاده از سیستم عامل و ابزارهای آن بر روی یک سیستم  توسعه یافته به منظور توسعه لینوکس تعبیه شده
  •       استفاده از راهنمای دسکتاپ لینوکس

 

کتابخانه C  و  Cross-compiling toolchain

  •       آنچه داخل  Cross-compiling tool chain وجود دارد.
  •      انتخاب کتابخانه  C
  •       آنچه داخل کتابخانه C وجود دارد.
  •       آمادگی برای استفاده از cross-compiling tool chains
  •       ساخت  cross-compiling tool chains  با استفاده از ابزارهای خودکار

 

Cross-compiling tool chain

  •       پیکربندی Crosstool-NG
  •       اجرای آن برای ساخت یکtool chain uClibc   سفارشی

 

بوت لودرها

  •       بوت لودرهای موجود
  •       ویژگی های بوت لودر
  •       نصب بوت لودر
  •       مطالعه دقیق U-Boot

 

بوت لودر و (U-Boot)

  •       تنظیم ارتباطات پورت سریال با برد
  •       پیکربندی، کامپایل و نصب U-Boot بر روی برد
  •       آشنایی با محیط U-Boot و دستورات مربوطه
  •       تنظیم ارتباطات TFTP با برد
  •       استفاده از دستورات  TFTP U-Boot

 

کرنل لینوکس

  •       نقش و معماری کلی کرنل لینوکس
  •       ویژگی های موجود در کرنل لینوکس، با تمرکز بر ویژگی های مفید برای سیستمهای تعبیه شده
  •       رابط کاربری کرنل
  •        تخصیص منابع
  •        آشنایی با مفاهیم ورژن های کرنل لینوکس
  •        استفاده از دستور Patch

 

سورس کرنل (Kernel sources)

  •       دانلود سورس کرنل
  •       اضافه نمودن پچ های کرنل

 

پیکربندی و کامپایل کرنل لینوکس

  •       پیکربندی کرنل
  •        تنظیمات مفید برای سیستم های تعبیه شده
  •        کامپایل بومی (Native compiling)
  •       فایل های تولید شده
  •       استفاده از ماژول های کرنل

 

Kernel cross-compiling

  •        انجام تنظیمات Kernel cross-compiling
  •        استفاده از فایل های پیکربندی آماده برای برد ها و معماری های خاص
  •       Linux Cross-compiling

 

Kernel cross-compiling and booting

  •        استفاده از برد ARM
  •       پیکربندی هسته لینوکس و cross-compileآن بر روی برد ARM
  •       دانلود کرنل بر روی برد از طریق کلاینت  U-boot's tftp
  •       بوت کردن کرنل از RAM
  •       کپی کردن کرنل به فلش و بوت کردن آن از این محل
  •       مرتب سازی پارامترهای بوت در فلش و خودکار سازی بوت شدن کرنل از فلش

 

فایل سیستم(Root) در لینوکس

  •       فایل سیستم ها در لینوکس
  •       نقش فایل سیستم root
  •       محل فایل سیستم root: در دیسک های ذخیره سازی، در حافظه و در شبکه
  •       دیوایس فایل ها و فایل سیستم های مجازی
  •       محتویات یک فایل سیستم root معمولی

 

BusyBox

  •       بررسی ویژگی ها
  •       پیکربندی، کامپایل و بکار گیری

 

ساختن فایل سیستم ریشه (Tiny root file system) از ابتدا با BusyBox

  •         ساختن یک فایل سیستم ریشه(From Scratch) برای سیستم ARM
  •         راه اندازی کرنل برای بوت کردن سیستم شما در یک دایرکتوری سیستم
  •          اکسپورت شده توسط NFS
  •          ارسال پارامترهای خط فرمان کرنل به بوت در NFS
  •          ایجاد فایل سیستم ریشه کامل از ابتدا به وسیله ابزارهای مبتنی بر BusyBox
  •          ایجاد دیوایس فایل ها و بوت کردن سیستم های مجازی
  •          راه اندازی سیستم با استفاده از /sbin/init در BusyBox
  •          راه اندازی کتابخانه های اشتراکی و توسعه یک برنامه کاربردی (Application) نمونه

 

فایل سیستم های بلوکی

  •       فایل سیستم ها برای دیوایس های بلوکی
  •       مزیت فایل سیستم های ژورنالی
  •       فایل سیستم های بلوکی فقط خواندنی (Read Only)
  •       فایل سیستم های RAM
  •       چگونگی ایجاد هر یک از این فایل سیستم ها
  •       پیشنهاداتی برای سیستم های تعبیه شده

 

فایل سیستم های بلوکی

  •        استفاده از برد ARM
  •       ایجاد پارتیشن در سیستم ذخیره سازی بلوکی (Block Storage)

 

فایل سیستم های فلش

  •          فایل سیستم دیوایس های تکنولوژی حافظه (MTD File System)
  •           فایل سیستم ها برای سیستم ذخیره سازی MTD: JFFS2، Yaffs2، UBIFS
  •          گزینه های پیکربندی کرنل
  •           پارتیشن های سیستم ذخیره سازی MTD
  •           راه اندازی MTD file system images

 

فایل سیستم های فلش

  •       استفاده از برد ARM
  •       ایجاد پارتیشن  ها در سیستم ذخیره سازی فلش داخلی
  •       قالب بندی پارتیشن اصلی با JFFS2 در حالت فقط خواندنی (Read Only)
  •       استفاده از JFFS2 برای سیستم داده (System Data)

 

ابزار ساخت سیستم تعبیه شده

  •       بررسی ابزارهای موجود کاربردی سیستم
  •       مثال Buildroot

 

ساخت سیستم با Buildroot

  •       استفاده از Buildroot  برای ساختن یک سیستم لینوکسی

 

توسعه و رفع اشکال نرم افزار

  •       زبان های برنامه نویسی و کتابخانه های موجود
  •       بررسی ویژگی های کتابخانه C برای توسعه نرم افزار
  •       مرورگرهای منبع(Source browsers) و محیط های توسعه یکپارچه (IDE ها)
  •       دیباگرها. اشکال زدایی برنامه های کاربردی از راه دور با gdb و gdbserver

 

توسعه و رفع اشکال نرم افزار

  •       توسعه و کامپایل یک برنامه کاربردی
  •       استفاده از gdbserver برای اشکال زدایی یک برنامه کاربردی crappy بر روی یک سیستم ریموت

 

Hotplugging

  •         udev: مدیریت رویدادهای سخت افزاری از فضای کاربر: ایجاد و حذف  دیوایس فایل ها، شناسایی درایورها، آگاه ساختن(Notify) برنامه ها و کاربران
  •         پیاده سازی ساده تر با استفاده از BusyBox mdev
  •       استفاده از BusyBox mdev به منظور ساکن کردن دایرکتوری /dev با تمام دیواس های موجود
  •       اضافه کردن قوانین (Rules) برای mdev

 

آشنایی با Qt

  •       آنچه می توانیم با Qt انجام دهیم
  •       مبانی Qt
  •       محیط های توسعه یکپارچه برنامه کاربردی Qt
  •       پیکربندی  IDE

 

آشنایی با Qt

  • توسعه و طراحی یک برنامه کاربردی ساده Qt