Introduction to Embedded System Development in Linux

Course Introduction:
Embedded Linux system architecture and Linux 2.4/2.6 kernel configuration
Linux device driver (Char, Block and Network driver) development experience
-  Hand-on experience in system debugging and testing the System
Embedded Linux File System Building Techniques
BusyBox configuration and building skills
- Typical device driver working experience (Keyboard, I2C EEPROM, PCI Ethernet card, USB driver)
-  ARM9,
CoreFire5282 and MPC860 microcontroller experience
Embedded Linux kernel and applications debugging techniques
Embedded software design and coding skills
-  Real project with IP Camera Video Communication product (JPEG/MPEG2, RTP, Socket, USB)
-  Real project with WEB-Based remote data acquisition system   (PHP/CGI, ADC, Digit I/O, Relay Control, mini WEB, SNMP)
- Electronic, computer, automation, control related Bachelor degree or higher
- Knowledge of micro controller/processor
- Knowledge of the C programming language
- Working knowledge of Linux
- Experience with Embedded OS will be plus
- Good English for read and writing
Job Targets:
- Quality Technician or specialist
- Quality Assurance Engineer
- PV&V (verification and validation)
- Testing Engineer
- Windows CE application developer
- Windows CE device driver developer
- Windows CE  BSP developer
- Windows CE software Engineer
- Windows device driver developer
- Windows software Engineer
- Embedded Software Engineer
Open Course:     (2 hours)
Introduction of Embedded system development
I.      Introduction of embedded engineering
a.       What is Embedded System.
b.       Embedded system development environment.
c.       Embedded operating systems.
II:     Introduction of Embedded Linux Operating System. 
a.       Why Linux.
b.       Embedded Linux today.
c.       Anatomy of an Embedded Linux System.
III.     Job Categories in Embedded Engineer Field.
a.       Embedded application software design and implementation.
b.       Embedded software device driver development.
c.       Embedded software integration.
d.       Embedded testing software design and implementation.
IV:      Prerequisite for this course.
a.       Knowledge of C program language.
b.       Hardware background will be plus.
c.       Knowledge of Assembly language will be plus.
d.       Knowledge of micro-controller will be plus.
V:    Job market for embedded engineering position.
a.       Embedded Software Engineer
b.       Embedded Software Designer.
c.       Embedded Software Integration Specialist.
d.       Embedded Software Tester.
e.       Embedded Software Verification and Validation Tester.
f.        Quality Technician or technologist.

Embedded engineering position job description:
Our client is a stable and growing company in Syracuse, NY that is recognized as a leader in technology. We are currently assisting them with recruiting efforts for an Embedded Software Engineer. We are looking for candidates with 1-10+ years of Embedded experience in developing real-time embedded software. Specifically, experience with C/C++, RTOS constructs, Linux, Microsoft Office applications, etc.
Responsibilities Include:
-Embedded Applications Design and Development, Integration and Systems Test of Real-Time Applications, Assisting in the building, debugging, and testing of engineering prototypes, and communications development including 232, USB, Ethernet and Protocol Development.
Senior Embedded Linux Kernel Engineer:
7+years experience in systems software, embedded operating systems or firmware development. Experience working in Linux kernel development using C and assembly. Experience developing board support packages or device drivers. Bachelor's or Master's in EE or CS with emphasis in operating systems and networking.
This position requires in-depth knowledge of and previous experience with distributed operating systems, IPC mechanisms, I/O subsystems and hardware interfaces. Must have worked in kernel space and be very familiar with the Linux Open source issues. Be able to do coding in C/Assembly. Must have worked with embedded software components such as boot loaders, board support packages, device drivers and kernel modules. Must be capable of analyzing and debug kernel and application level anomalies and interactions in an embedded Linux multiprocessor environment. Must have strong experience in low-level system software concepts including interrupt handling, multi-tasking, and multi-processor systems. Must be conversant with embedded software development tools, debuggers, ICE. Must have experience working in operating system internals.
Course outline:  
1 Build Embedded Linux Developing Environment and kernel configure

      1.1 Cross Development and GNU Tool Chain
      1.2 Configure Host Development Environment
      1.3 Makefile, compile, debug
      1.4 Linux kernel introduction and configuration
      1.5 Kernel compile and build methods
Lab 1: Building and Deploying a Run-Time ucLinux Image on MCF5282 board
2 Making Root File System

      2.1 Linux File System Build
      2.2 Ramdisk
      2.3 JFFS2
      2.4 Yaffs2
Lab 2: Building different File System based on MCF5282 board and ARM9 EVM board
3 Bootloader (u-boot)

      3.1 Bootloader Introduction
      3.2 u-boot project
      3.3 u-boot compile
      3.4 u-boot code analysis
      3.5 u-boot debug
Lab 3: U-boot porting to ARM9 EVM board and add new function
Linux character device driver development

    4.1 LINUX driver basic
    4.2 Character device driver framework and analysis
    4.3 Data marshalling between user space and kernel space
    4.4 Synchronization, mutex, block, sleep mechanism
    4.5 Linux-2.6 device driver model and sysfs
    4.6 udev and devfs
Lab 4: GPIO control driver on MCF5282 board
5 Linux kernel concept and system mechanism

    5.1 Poll and select operation
    5.2 Async notification
    5.3 Linux interrupt sub system
    5.4 Top/Bottom half and DPC mechanism
    5.5 Kernel Timer
    5.6 Kernel memory management
Lab 5: I2C EEPROM device driver on ARM9 board
6 Linux block device driver

    6.1 Characteristic of block device driver
    6.2 GEN_DISK and REQUEST
    6.3 Block device driver register and request process
    6.4 MTD device and relation with block device
    6.5 MTD device driver analysis
Lab 6: Developing simple block driver and ram disk driver
7 Linux Network device driver

    7.2 Data packet Rx/Tx
    7.3 Interrupt handling
    7.4 PCI interface introduction
    7.5 Network debugging and protocol analysis
    7.6 PCI NIC device driver analysis and implementation
Lab 7: Developing fake NIC driver and PCI driver based on PC Linux
8 Linux USB driver

    8.1 Linux USB protocol
    8.2 Linux USB driver layers
8.3 URB data structure
    8.4 Linux USB device driver
Lab 8: EZ-USB driver developing to control relay or LEDs
9 Linux Application Development (project 1)

    9.1 Multi-process
    9.2 Multi-thread
9.3 IPC
    9.4 Video communication application (socket, JPEG, MPEG, RTP)
Lab 9: IP Camera video sampling and communication
10 Linux Application Development (project 2)

    10.1 Serial port communication
    10.2 ADC sampling
10.3 mini WEB server on Linux
    10.3 PHP/CGI
10.4 SNMP
Lab 10: Web-based remote monitor and control and SNMP management
本页最后更新: | -- | 网站设计和虚拟主机服务 CMS