Embedded Software

Power management

Code No
Skill Category No: 
9
Skill No: 
5
Topic No: 
9
Level: 
III
Objective: 

Implement power efficient device driver.

  • Understand Linux power management architecture
    • ACPI states
  • Understand standby and wakeup mechanism
  • Use ACPI to manage power consumption

Kernel thread

Code No
Skill Category No: 
9
Skill No: 
5
Topic No: 
8
Level: 
II
Objective: 

Implement kernel thread.

  • Create and daemonize a kernel thread
  • Understand and use softirq/tasklet

Kernel debugging

Code No
Skill Category No: 
9
Skill No: 
5
Topic No: 
2
Level: 
II
Objective: 

Monitor and debug kernel remotely.

  • Monitor kernel event and behavior with /proc, /sys, prink()
  • Use KGDB to trace kernel code, watch kernel data
  • Debug LKM (loadable kernel module)
  • Understand and use the capability of ICE (in circuit emulator) to debug kernel

Kernel debugging

Code No
Skill Category No: 
9
Skill No: 
5
Topic No: 
2
Level: 
I
Objective: 

Setup remote debugging environment and debug.

Linux kernel

Code No
Skill Category No: 
9
Skill No: 
5
Topic No: 
1
Level: 
II
Objective: 

Use kernel primitive functions.

  • Use various kernel memory primitives including kmalloc() / kfree(), vmalloc() / vfree(), alloc_page() / free_page(), slab primitives
  • Understand the process control primitives such as schedule(), sleep() and wakeup()
  • Understand kobject
  • Use primitive functions for /proc, /sys file system
  • Use the macros and primitives to handle kernel lists and queues
  • Understand kernel timer data structures and primitives

Linux kernel

Code No
Skill Category No: 
9
Skill No: 
5
Topic No: 
1
Level: 
I
Objective: 

Understand the basics of Linux Architecture.

Kernel synchronization primitives

Code No
Skill Category No: 
9
Skill No: 
5
Topic No: 
7
Level: 
II
Objective: 

Implement device driver with concurrent access.

  • Implement process level synchronization using sleep() / wakeup() / wait_event()
  • Implement mutual exclusion with kernel mutex primitives such as spin lock, read write lock, atomic operations
  • Understand when spin_lock_irq() is required
  • Use up/down, completion semaphore

Building target system

Code No
Skill Category No: 
9
Skill No: 
5
Topic No: 
6
Level: 
I
Objective: 

Configure boot loaders and manage boot sequences, Build root file system.

  • Configure bootloader such as uBoot, Redboot, and etc.
  • Use flash commands to fuse bootloader/kernel/root file system
  • Configure DHCP/BOOTP/NFS for network boot
  • Use boot load command or specify kernel options for network boot
  • Build root file system from scratch
  • Build Initramfs file system
  • Configure, build and install busybox
  • Configure mtd device and use it as Linux file systems

Other device drivers

Code No
Skill Category No: 
9
Skill No: 
5
Topic No: 
5
Level: 
III
Objective: 

Implement all kinds of device drivers.

  • Implement the bus drivers including I2C, SPI, PCI, PCMCIA/CF
  • Understand USB software architecture and implement USB class driver
  • Implement block device driver
  • Implement network interface driver
  • Implement video frame buffer driver
  • Implement audio driver using open sound system
  • Implement camera driver for video for Linux
  • Implement device drivers as a user space application

Character device driver

Code No
Skill Category No: 
9
Skill No: 
5
Topic No: 
4
Level: 
III
Objective: 

Implement device driver which uses interrupt and/or DMA.

  • Implement device drive which uses hardware interrupt by setting up IRQ
  • Understand execution context (user / kernel / interrupt)
  • Understand the do’s and don’ts in ISR
  • Understand and use delayed execution such as Top Half/Bottom Half
Syndicate content