2 What does it mean: programming for an embedded system?
3 Definition of an embedded system: Dedicated hardware and software,designed to perform a specific task.
4 Dedicated hardware and software Playing media, audio and videoTV signal decodingRecording media (PVR = personal video recorder)Low power consumption (energy saving)Internet browsingCommunication with other devices: remote control, game pad, smartphone...
5 Dedicated hardware and software CPURAM and ROMEthernet, WiFiHDDTunerDecoderDisplay (TV)Audio and video output (HDMI)
6 Dedicated hardware and software Low level:Memory mappingInterruptsBootloaderKernel and Kernel modulesFile systemI/ODriversUsually C languge
7 Dedicated hardware and software Middleware - System logic to implement the „Dedicated” features,.e.g:Web servers/clientsPVRUsually C++ language
8 Dedicated hardware and software When hardware changes - drivers change.To avoid middleware changes there is aHAL = Hardware Abstraction Layer between Middleware and Drivers.MiddlewareHALDriversHardware
18 Public API example : tuneUp function Middleware implements and manages the flow of channel change:TunerFrequency to digitalDemultiplexerParses video from mpegtsDecoderVideo processing (de-noise, scaler)Renderer(display)
19 Other Middleware examples Trickplay – fast forward video playingFileI-frames indexerBufferDecoderStreaming video file to mobile deviceFileBufferHTTP Server...
20 So, what does it mean: programming for an embedded system? In most cases it is programming for Middleware layer – sophisticated logicsUsually C++ programming in LinuxThreads, buffers, memory management, design patterns, network, shared libraries, open source components (e.g ffmpeg, Gstreamer)...Low Level programming
21 So, what does it mean: programming for an embedded system? Non-recurring engineering:Middleware/Low level devolepement is expensive but once it is done it can be duplicated with NO costChoise of more expensive hardware component can cause HUGE cost increase!Whenever possible it is always better to place logic in middleware level