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

Bootloaders .

Kernel (cross) compiling and booting .

Block and flash filesystems .

C library and cross-compiling toolchains .

Lightweight building blocks for embedded systems .

Embedded system development tools .

Practical labs with the ARM based Apex-V210 .

 

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

مخاطبین: توسعه دهندگان سخت افزارهایی که از کرنل لینوکس استفاده می کنند و توسعه دهندگان سیستم Embedded

پیش نیاز : دانش در سطح 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

 

Introduction to embedded Linux

Advantages of Linux versus traditional embedded operating systems. Reasons for choosing Linux .

Global picture: understanding the general architecture of an embedded Linux system. Overview of the major components in a typical system .

 

 

The rest of the course will study each of these components in detail

Embedded Linux development environment

Operating system and tools to use on the development workstation for embedded Linux .

Desktop Linux usage tips .

 

Cross-compiling toolchain and C library

What’s inside a cross-compiling toolchain .

Choosing the target C library .

What’s inside the C library .

Ready to use cross-compiling toolchains .

Building a cross-compiling toolchain with automated tools. .

 

Cross compiling toolchain

Configuring Cross tool-NG .

Executing it to build a custom uClibc toolchain .

 

Bootloaders

Available bootloaders .

Bootloader features .

Installing a bootloader .

Detailed study of U-Boot .

 

Bootloader and U-boot in action

Set up serial communication with the board .

Configure, compile and install U-Boot on the Apex-V210 board .

Become familiar with U-Boot environment and commands .

Set up TFTP communication with the board .

Use TFTP U-Boot commands .

 

Linux kernel

Role and general architecture of the Linux kernel .

Features available in the Linux kernel, with a focus on features useful for embedded systems .

Kernel user interface .

Getting the sources .

Understanding Linux kernel versions. .

Using the patch command .

Downloading kernel sources .

Apply kernel patches .

 

Configuring and compiling a Linux Kernel

Kernel configuration .

Useful settings for embedded systems .

Native compiling .

Generated files .

Using kernel modules .

 

Kernel cross-compiling

Kernel cross-compiling setup .

Using ready-made configuration files for specific architectures and boards .

Cross-compiling Linux .

 

Kernel cross-compiling and booting in action

Configuring the Linux kernel and cross-compiling it for the ARM board .

Downloading the kernel on the board through U-boot’s tftp client .

Booting the kernel from RAM .

Copying the kernel to flash and booting it from this location .

Storing boot parameters in flash and automating kernel booting from flash .

 

Root filesystem in Linux

Filesystems in Linux .

Role and organization of the root filesystem .

Location of the root filesystem: on storage, in memory, from the network .

Device files, virtual filesystems .

Contents of a typical root filesystem .

 

BusyBox

Detailed overview. Detailed features .

Configuration, compiling and deploying .

 

Tiny root filesystem built from scratch with BusyBox

Building a basic root filesystem from scratch for the ARM system .

Setting up a kernel to boot your system on a workstation directory exported by NFS .

Passing kernel command line parameters to boot on NFS .

Creating the full root filesystem from scratch. Populating it with BusyBox based utilities. .

Creating device files and booting the virtual system .

System startup using BusyBox /sbin/init .

Using the BusyBox http server .

Controlling the target from a web browser on the PC host .

Setting up shared libraries on the target and compiling a sample executable .

 

Block filesystems

Filesystems for block devices .

Usefulness of journaled filesystems .

Read-only block filesystems .

RAM filesystems .

How to create each of these filesystems .

Suggestions for embedded systems .

 

Block filesystems in action

Creating partitions on the block storage .

Booting a system with a mix of filesystems: SquashFS for applications, ext3 for configuration and user data, and tmpfs for temporary system files .

 

Flash filesystems

The Memory Technology Devices (MTD) filesystem .

Filesystems for MTD storage: JFFS2, Yaffs2, UBIFS .

Kernel configuration options .

MTD storage partitions .

Focus on today’s best solution, UBI and UBIFS: preparing, flashing and using UBI images .

 

Flash filesystems in action

Defining partitions in U-Boot for the internal flash storage instead of using raw offsets .

Sharing these definitions with Linux .

.Creating a UBI image on the workstation, flashing it from U-Boot and booting your system on one of the UBI volumes with UBIFS