This course provides embedded systems developers, making their first steps with Linux as an embedded system platform, with the skills required for being a productive programmer in that environment. The curriculum includes building applications and device drivers with real time constraints, understanding the inner working of the Linux system and its effects the system behavior. Participants should have solid knowledge in C and background in embedded systems or low level programming.
The course is suitable for people planning to develop for embedded Linux platforms from any source, including “home made” Linux distributions or embedded Linux system vendors such as WindRiver™, MontaVista™ or TimeSys™. The course is taught using a real live embedded Linux system, running inside a hardware emulator as the target, and the GNU tool set/Eclipse IDE on the host.
The course is parallel to the "Linux Kernel Internals" course with a twist towards the embedded systems and real time domains and is preferred for people with embedded systems background and requirements.
Accordingly, this course starts by arming the student with all the tools
necessary for developing conventional procedural application in Python. Then, it
adds advanced procedural and functional tools. Then, data abstraction and
finally – the essential object-oriented tools. This way, each student emerges
from the course with a substantial and useful body of knowledge. Even students
who come with a rudimentary programming background are capable to accomplish
much with the procedural/functional level of Python and consider the
object-oriented level as enrichment.
מבנה והיקף מסלול הלימודים
40 שעות אקדמיות.
☑ Seasoned embedded systems developers (using VxWorks, pSos, Vertex, Nucleos or home grown systems) wishing to become competent Linux Embedded systems developers.
☑ Seasoned Linux developers wishing to become competent Linux Embedded systems developers.
☑ Experience Programming in C.
☑ Experience in embedded systems or low level programming in any environment.
- What is Linux
- Layers in a Linux system
- Linux vs. Legacy RTOS
- Files and file system
- The shell
- Setting up networking
Application programming and the user space API
- Makefiles and the build environment
- Processes and threads
- IPC (mutex, condition variables, mailboxes, pipes, shared memory, Unix domain sockets and signals)
- Memory mapping and locking
- Real time priorities
- Debugging applications: in process and using remote debugger
Linux Internals and device drivers
- Linux kernel source layout
- Kernel Coding conventions
- Kernel log
- Supervisor mode and the system call interface
- Linux boot sequence
- Kernel modules
- Proc file driver
- Memory management
- Character device driver
- Top and bottom halfs: softirqs, tasklets, timers and work queues
- Blocking and waiting for events
- Locks and atomic operations
- Networking stack and network device drivers
During the course participants will develop a Linux device driver for an embedded Linux target running in a hardware emulator using the GNU tool chain and the Eclipse IDE.