Curso Linux Embedded Linux Systems
32 horasVisão Geral
Curso Linux Embedded Linux Systems, Desenvolva aplicativos Linux embarcados usando linguagem C - garanta um design robusto e comportamento em tempo real. O desempenho e a estabilidade de um sistema dependem, em última análise, de quão bem você usa os recursos do sistema operacional subjacente. Este Curso Linux Embedded Linux Systems, enfoca a interface entre aplicativos e o kernel Linux e a especificação POSIX em particular. Os participantes aprenderão sobre programação multithread, gerenciamento de memória, sinais e comunicação entre processos, incluindo IPC usando soquetes locais.
Este Curso Linux Embedded Linux Systems, é destinado a engenheiros que trabalham em dispositivos Linux embarcados e, portanto, há ênfase em design robusto, uso eficiente de recursos e comportamento em tempo real. Todos os exercícios de laboratório são compilados e testados em uma placa de desenvolvimento embarcada típica. Os participantes aprenderão como configurar o Eclipse IDE para desenvolvimento cruzado, depuração remota e gerenciamento remoto de destino.
Publico Alvo
- Engenheiros de software e arquitetos de sistemas
Materiais
Inglês + Exercícios + Lab PraticoConteúdo Programatico
Developing for embedded Linux
- The tool-chain: choosing, installing and testing
- The Linux kernel: customising and cross-compiling
- The bootloader and root file system: the final steps to having a working target board
- Embedded development using Eclipse for cross-compiling and remote debug
- Application program interfaces: the POSIX standard
- Open source licenses: GPL/LGPL, BSD, etc
Files and devices
- Files and file-related API: waiting for several things to happen with select() and poll()
- Devices: everything is a file. Interfacing with a simple device driver. Using the ioctl()
- function to access device-specific operations
- Interacting with the kernel through /proc and /sys: an example using gpiolib
Processes
- Process life cycle: fork(), exit() and exec()
- Scheduling: real-time and non-real-time policies; setting priority and niceness
Memory
- Virtual memory and its consequences
- Allocating from the heap and stack
- Mapping memory using mmap
Signals
- Standard and real-time signals
- Writing robust signal handlers
- Signal masks and how to handle signals synchronously
Inter-process communication
- Pipes
- Shared memory
- Semaphores
- Message queues
- Sockets: internet and UNIX (local). Stream and datagram connections
POSIX Threads
- Thread life cycle: pthread_create(), pthread_exit(), pthread_join()
- Scheduling threads: real-time and non-real-time
- The thread stack and how to set the stack size
Thread synchronisation
- Synchronisation using mutexes; priority inversion and priority inheritance
- Condition variables: producer and consumer threads
- Thread cancellation and clean-up operators
- Signals and threads
Time and timers
- Timer accuracy: high-resolution timers, POSIX clocks and timers
- Measuring time
- Periodic tasks