Embedded firmware

6,229 views 26 slides May 05, 2021
Slide 1
Slide 1 of 26
Slide 1
1
Slide 2
2
Slide 3
3
Slide 4
4
Slide 5
5
Slide 6
6
Slide 7
7
Slide 8
8
Slide 9
9
Slide 10
10
Slide 11
11
Slide 12
12
Slide 13
13
Slide 14
14
Slide 15
15
Slide 16
16
Slide 17
17
Slide 18
18
Slide 19
19
Slide 20
20
Slide 21
21
Slide 22
22
Slide 23
23
Slide 24
24
Slide 25
25
Slide 26
26

About This Presentation

Embedded firmware


Slide Content

Embedded Firmware

•responsible for controlling the various
peripherals of the embedded hardware
•stored in a permanent memory (ROM)

Designing Embedded firmware
•requires understanding of the particular embedded
product hardware,
•like various component interfacing,
•memory map details,
•I/O port details,
•configuration and register details of various
hardware chips used and
•some programming language (either low level
Assembly Language or High level language like
C/C++ or a combination of the two)

Thereexisttwobasicapproachesforthedesign
andimplementationofembeddedfirmware,
namely;
TheSuperloopbasedapproach
TheEmbeddedOperatingSystembased
approach
Thedecisiononwhichapproachneedstobe
adoptedforfirmwaredevelopmentispurely
dependentonthecomplexityandsystem
requirements

Embedded firmware Design Approaches –The Super
loop
Suitableforapplicationsthatarenottimecritical
Verysimilartoaconventionalproceduralprogrammingwherethe
codeisexecutedtaskbytask
Thetasksareexecutedinaneverendingloop.
Atypicalsuperloopimplementationwilllooklike:
1.Configurethecommonparametersandperforminitialization
forvarioushardwarecomponentsmemory,registersetc.
2. Start the first task and execute it
3. Execute the second task
4. Execute the next task
5. :
6. :
7. Execute the last defined task
8. Jump back to the first task and follow the same flow

void main ()
{
Configurations ();
Initializations ();
While (1)
{
Task 1 ();
Task 2 ();
//:
//:
Task n ();
}
}
The only way to come out of this loop is either hardware reset or
an interrupt assertion

Embedded firmware Design Approaches –Embedded
OS based Approach
The embedded device contains an Embedded Operating
System which can be one of:
•A Real Time Operating System (RTOS)
•A Customized General Purpose Operating System
(GPOS)
•The Embedded OS is responsible for scheduling the
execution of user tasks and the allocation of system
resources among multiple tasks
•Involves lot of OS related overheads apart from
managing and executing user defined tasks

Microsoft®WindowsXPEmbeddedisan
exampleofGPOSforembeddeddevices
PointofSale(PoS)terminals,GamingStations,
TabletPCsetcareexamplesofembeddeddevices
runningonembeddedGPOSs
‘WindowsCE’,‘WindowsMobile’,‘QNX’,
‘VxWorks’, ‘ThreadX’, ‘MicroC/OS-II’,
‘EmbeddedLinux’,‘Symbian’etcareexamplesof
RTOSsemployedinEmbeddedProduct
development
MobilePhones,PDAs,FlightControlSystemsetc
areexamplesofembeddeddevicesthatrunson
RTOSs

Embedded firmware Development Languages/Options
AssemblyLanguage
HighLevelLanguage
SubsetofC(EmbeddedC)
SubsetofC++(EmbeddedC++)
AnyotherhighlevellanguagewithsupportedCross-
compiler
MixofAssembly&HighlevelLanguage
MixingHighLevelLanguage(LikeC)withAssemblyCode
MixingAssemblycodewithHighLevelLanguage(LikeC)
InlineAssembly

Embedded firmware Development Languages/Options
–Assembly Language
AssemblyLanguage’isthehumanreadablenotationof
‘machinelanguage’
‘machinelanguage’isaprocessorunderstandable
language
Machinelanguageisabinaryrepresentationandit
consistsof1sand0s
•Assembly language programming is the process of
writing processor specific machine code in
mnemonic form, converting the mnemonics into
actual processor instructions (machine language)
and associated data using an assembler

Thegeneralformatofanassemblylanguage
instructionisanOpcodefollowedbyOperands
TheOpcodetellstheprocessor/controllerwhatto
doandthe
Operandsprovidethedataandinformation
requiredtoperformtheactionspecifiedbythe
opcode
Eachlineofanassemblylanguageprogramis
splitintofourfieldsas:
LABELOPCODEOPERANDCOMMENTS

;####################################################################
; SUBROUTINE FOR GENERATING DELAY
;DELAY PARAMETR PASSED THROUGH REGISTER R1
;RETURN VALUE NONE
;REGISTERS USED: R0, R1
;####################################################################
DELAY:MOV R0, #255; Load Register R0 with 255
DJNZ R1, DELAY ; Decrement R1 and loop tillR1= 0
RET ; Return to calling program

•The Assembly language program written in assembly code is
saved as .asm(Assembly file) file or a .src(source) file or a format
supported by the assembler
•The software utility called ‘Assembler’ performs the translation of
assembly code to machine code
•Assembling of each source file generates a corresponding object
file. The object file does not contain the absolute address of where
the generated code needs to be placed (a re-locatable code) on the
program memory
•The software program called linker/locater is responsible for
assigning absolute address to object files during the linking
process
•A software utility called ‘Object to Hex file converter’ translates
the absolute object file to corresponding hex file (binary file)

Embedded firmware Development Languages/Options –Assembly Language –
Source File to Hex File Translation
Assembly language to machine language Conversion process

Embedded firmware Development Languages/Options –High
Level Language
•The embedded firmware is written in any high level
language like C, C++
•A software utility called ‘cross-compiler’ converts the
high level language to target processor specific machine
code
•The cross-compilation of each module generates a
corresponding object file. The object file does not contain
the absolute address of where the generated code needs to
be placed (a re-locatable code) on the program memory
•The software program called linker/locater is responsible
for assigning absolute address to object files during the
linking process
•A software utility called ‘Object to Hex file converter’
translates the absolute object file to corresponding hex file
(binary file)

Embedded firmware Development Languages/Options –High Level Language –
Source File to Hex File TranslationSource File 1
(.c /.c++ etc)
(Module-1)
Module
Cross-compiler
Source File 2
(.c /.c++ etc)
(Module-2)
Module
Cross-compiler
Object File 1
Object File 2
Library Files
Linker/
Locator
Absolute Object File
Object to Hex File
Converter
Machine Code
(Hex File)
High level language to machine language conversion process

Embedded firmware Development Languages/Options –
Mixing of Assembly Language with High Level Language
CertainsituationsinEmbeddedfirmwaredevelopmentmayrequirethe
mixingofAssemblyLanguagewithhighlevellanguageorviceversa.
Interrupthandling,Sourcecodeisalreadyavailableinhighlevel
language\AssemblyLanguageetcareexamples
HighLevellanguageandlowlevellanguagecanbemixedinthreedifferent
ways
MixingAssemblyLanguagewithHighlevellanguagelike‘C’
MixingHighlevellanguagelike‘C’withAssemblyLanguage
InlineAssembly
Thepassingofparametersandreturnvaluesbetweenthehighlevelandlow
levellanguageiscross-compilerspecific

High Level Language –‘C’ V/s
Embedded C
EmbeddedCcanbeconsideredasasubsetofconventional‘C’
language
EmbeddedCsupportsall‘C’instructionsandincorporatesafew
targetprocessorspecificfunctions/instructions
ThestandardANSI‘C’libraryimplementationisalwaystailoredto
thetargetprocessor/controllerlibraryfilesinEmbeddedC
Theimplementationoftargetprocessor/controllerspecific
functions/instructionsdependsupontheprocessor/controlleraswell
asthesupportedcross-compilerfortheparticularEmbeddedC
language
Asoftwareprogramcalled‘Cross-compiler’isusedforthe
conversionofprogramswritteninEmbeddedCtotarget
processor/controllerspecificinstructions

High Level Language Based Development –‘Compiler’ V/s
‘Cross-Compiler’
Compilerisasoftwaretoolthatconvertsasourcecodewritteninahighlevellanguageontop
ofaparticularoperatingsystemrunningonaspecifictargetprocessorarchitecture(E.g.Intel
x86/Pentium).
Theoperatingsystem,thecompilerprogramandtheapplicationmakinguseofthesource
coderunonthesametargetprocessor.
Thesourcecodeisconvertedtothetargetprocessorspecificmachineinstructions
Anativecompilergeneratesmachinecodeforthesamemachine(processor)onwhichitis
running.
Crosscompileristhesoftwaretoolsusedincross-platformdevelopmentapplications
Incross-platformdevelopment,thecompilerrunningonaparticulartargetprocessor/OS
convertsthesourcecodetomachinecodeforatargetprocessorwhosearchitectureand
instructionsetisdifferentfromtheprocessoronwhichthecompilerisrunningorforan
operatingsystemwhichisdifferentfromthecurrentdevelopmentenvironmentOS
Embeddedsystemdevelopmentisatypicalexampleforcross-platformdevelopmentwhere
embeddedfirmwareisdevelopedonamachinewithIntel/AMDoranyothertargetprocessors
andthesameisconvertedintomachinecodeforanyothertargetprocessorarchitecture(E.g.
8051,PIC,ARM9etc).
KeilC51compilerfromKeilsoftwareisanexampleforcross-compilerfor8051family
architecture

Programming in Embedded C

THANK YOU
Tags