Enviar pesquisa
Carregar
Embedded C
•
7 gostaram
•
26,046 visualizações
Anil Kumar Pugalia
Seguir
Embedded C for Bare Metal Programming
Leia menos
Leia mais
Tecnologia
Denunciar
Compartilhar
Denunciar
Compartilhar
1 de 20
Recomendados
Kernel Timing Management
Kernel Timing Management
SysPlay eLearning Academy for You
Signals
Signals
Anil Kumar Pugalia
POSIX Threads
POSIX Threads
SysPlay eLearning Academy for You
Interrupts
Interrupts
Anil Kumar Pugalia
Linux DMA Engine
Linux DMA Engine
SysPlay eLearning Academy for You
Introduction to Linux Drivers
Introduction to Linux Drivers
Anil Kumar Pugalia
Embedded Software Design
Embedded Software Design
Anil Kumar Pugalia
Serial Drivers
Serial Drivers
SysPlay eLearning Academy for You
Recomendados
Kernel Timing Management
Kernel Timing Management
SysPlay eLearning Academy for You
Signals
Signals
Anil Kumar Pugalia
POSIX Threads
POSIX Threads
SysPlay eLearning Academy for You
Interrupts
Interrupts
Anil Kumar Pugalia
Linux DMA Engine
Linux DMA Engine
SysPlay eLearning Academy for You
Introduction to Linux Drivers
Introduction to Linux Drivers
Anil Kumar Pugalia
Embedded Software Design
Embedded Software Design
Anil Kumar Pugalia
Serial Drivers
Serial Drivers
SysPlay eLearning Academy for You
Linux Kernel Overview
Linux Kernel Overview
Anil Kumar Pugalia
Block Drivers
Block Drivers
Anil Kumar Pugalia
Kernel Debugging & Profiling
Kernel Debugging & Profiling
Anil Kumar Pugalia
Timers
Timers
Anil Kumar Pugalia
Toolchain
Toolchain
Anil Kumar Pugalia
Kernel Debugging & Profiling
Kernel Debugging & Profiling
Anil Kumar Pugalia
Architecture Porting
Architecture Porting
Anil Kumar Pugalia
Real Time Systems
Real Time Systems
Anil Kumar Pugalia
Linux Network Management
Linux Network Management
Anil Kumar Pugalia
SPI Drivers
SPI Drivers
SysPlay eLearning Academy for You
BeagleBone Black Bootloaders
BeagleBone Black Bootloaders
SysPlay eLearning Academy for You
Embedded Storage Management
Embedded Storage Management
Anil Kumar Pugalia
Introduction to Linux
Introduction to Linux
Anil Kumar Pugalia
Understanding the BBB
Understanding the BBB
SysPlay eLearning Academy for You
Kernel Programming
Kernel Programming
Anil Kumar Pugalia
Mobile Hacking using Linux Drivers
Mobile Hacking using Linux Drivers
Anil Kumar Pugalia
SPI Drivers
SPI Drivers
SysPlay eLearning Academy for You
BeagleBoard-xM Booting Process
BeagleBoard-xM Booting Process
SysPlay eLearning Academy for You
Synchronization
Synchronization
Anil Kumar Pugalia
Shell Scripting
Shell Scripting
Anil Kumar Pugalia
gcc and friends
gcc and friends
Anil Kumar Pugalia
References
References
Anil Kumar Pugalia
Mais conteúdo relacionado
Mais procurados
Linux Kernel Overview
Linux Kernel Overview
Anil Kumar Pugalia
Block Drivers
Block Drivers
Anil Kumar Pugalia
Kernel Debugging & Profiling
Kernel Debugging & Profiling
Anil Kumar Pugalia
Timers
Timers
Anil Kumar Pugalia
Toolchain
Toolchain
Anil Kumar Pugalia
Kernel Debugging & Profiling
Kernel Debugging & Profiling
Anil Kumar Pugalia
Architecture Porting
Architecture Porting
Anil Kumar Pugalia
Real Time Systems
Real Time Systems
Anil Kumar Pugalia
Linux Network Management
Linux Network Management
Anil Kumar Pugalia
SPI Drivers
SPI Drivers
SysPlay eLearning Academy for You
BeagleBone Black Bootloaders
BeagleBone Black Bootloaders
SysPlay eLearning Academy for You
Embedded Storage Management
Embedded Storage Management
Anil Kumar Pugalia
Introduction to Linux
Introduction to Linux
Anil Kumar Pugalia
Understanding the BBB
Understanding the BBB
SysPlay eLearning Academy for You
Kernel Programming
Kernel Programming
Anil Kumar Pugalia
Mobile Hacking using Linux Drivers
Mobile Hacking using Linux Drivers
Anil Kumar Pugalia
SPI Drivers
SPI Drivers
SysPlay eLearning Academy for You
BeagleBoard-xM Booting Process
BeagleBoard-xM Booting Process
SysPlay eLearning Academy for You
Synchronization
Synchronization
Anil Kumar Pugalia
Shell Scripting
Shell Scripting
Anil Kumar Pugalia
Mais procurados
(20)
Linux Kernel Overview
Linux Kernel Overview
Block Drivers
Block Drivers
Kernel Debugging & Profiling
Kernel Debugging & Profiling
Timers
Timers
Toolchain
Toolchain
Kernel Debugging & Profiling
Kernel Debugging & Profiling
Architecture Porting
Architecture Porting
Real Time Systems
Real Time Systems
Linux Network Management
Linux Network Management
SPI Drivers
SPI Drivers
BeagleBone Black Bootloaders
BeagleBone Black Bootloaders
Embedded Storage Management
Embedded Storage Management
Introduction to Linux
Introduction to Linux
Understanding the BBB
Understanding the BBB
Kernel Programming
Kernel Programming
Mobile Hacking using Linux Drivers
Mobile Hacking using Linux Drivers
SPI Drivers
SPI Drivers
BeagleBoard-xM Booting Process
BeagleBoard-xM Booting Process
Synchronization
Synchronization
Shell Scripting
Shell Scripting
Destaque
gcc and friends
gcc and friends
Anil Kumar Pugalia
References
References
Anil Kumar Pugalia
File System Modules
File System Modules
Anil Kumar Pugalia
PCI Drivers
PCI Drivers
Anil Kumar Pugalia
Network Drivers
Network Drivers
Anil Kumar Pugalia
I2C Drivers
I2C Drivers
SysPlay eLearning Academy for You
USB Drivers
USB Drivers
Anil Kumar Pugalia
BeagleBone Black Bootloaders
BeagleBone Black Bootloaders
SysPlay eLearning Academy for You
Linux Porting
Linux Porting
Anil Kumar Pugalia
BeagleBoard-xM Bootloaders
BeagleBoard-xM Bootloaders
SysPlay eLearning Academy for You
Character Drivers
Character Drivers
Anil Kumar Pugalia
Platform Drivers
Platform Drivers
SysPlay eLearning Academy for You
File Systems
File Systems
Anil Kumar Pugalia
Destaque
(13)
gcc and friends
gcc and friends
References
References
File System Modules
File System Modules
PCI Drivers
PCI Drivers
Network Drivers
Network Drivers
I2C Drivers
I2C Drivers
USB Drivers
USB Drivers
BeagleBone Black Bootloaders
BeagleBone Black Bootloaders
Linux Porting
Linux Porting
BeagleBoard-xM Bootloaders
BeagleBoard-xM Bootloaders
Character Drivers
Character Drivers
Platform Drivers
Platform Drivers
File Systems
File Systems
Semelhante a Embedded C
리눅스 드라이버 실습 #3
리눅스 드라이버 실습 #3
Sangho Park
IBM Systems Technical Symposium Melbourne, 2015
IBM Systems Technical Symposium Melbourne, 2015
Filipe Miranda
Rsockets ofa12
Rsockets ofa12
trustitrusti
Software Engineering
Software Engineering
Tharindu Weerasinghe
Node.js primer for ITE students
Node.js primer for ITE students
Quhan Arunasalam
f37-book-intarch-pres-pt2.ppt
f37-book-intarch-pres-pt2.ppt
ssuserf06014
f37-book-intarch-pres-pt2.ppt
f37-book-intarch-pres-pt2.ppt
Vhhvf
03 workshop
03 workshop
Ziyuan Chen
Vasiliy Litvinov - Python Profiling
Vasiliy Litvinov - Python Profiling
Sergey Arkhipov
Defcon 22 - Stitching numbers - generating rop payloads from in memory numbers
Defcon 22 - Stitching numbers - generating rop payloads from in memory numbers
Alexandre Moneger
07 processor basics
07 processor basics
Murali M
O365Con18 - Using ARM Templates to Deploy Solutions on Azure - Kevin Timmermann
O365Con18 - Using ARM Templates to Deploy Solutions on Azure - Kevin Timmermann
NCCOMMS
What's new in AVR 12.0 and VS 2013
What's new in AVR 12.0 and VS 2013
Roger Pence
Build 2016 - B880 - Top 6 Reasons to Move Your C++ Code to Visual Studio 2015
Build 2016 - B880 - Top 6 Reasons to Move Your C++ Code to Visual Studio 2015
Windows Developer
Node.js Workshop
Node.js Workshop
Quhan Arunasalam
JavaMicroBenchmarkpptm
JavaMicroBenchmarkpptm
Srinivasan Raghavan
Es2015 training material-syedawase
Es2015 training material-syedawase
Dr. Awase Khirni Syed
Simple Single Instruction Multiple Data (SIMD) with the Intel® Implicit SPMD ...
Simple Single Instruction Multiple Data (SIMD) with the Intel® Implicit SPMD ...
Intel® Software
Amazon EC2 deepdive and a sprinkel of AWS Compute | AWS Floor28
Amazon EC2 deepdive and a sprinkel of AWS Compute | AWS Floor28
Amazon Web Services
Meeting rooms are talking! are you listening?
Meeting rooms are talking! are you listening?
Cisco DevNet
Semelhante a Embedded C
(20)
리눅스 드라이버 실습 #3
리눅스 드라이버 실습 #3
IBM Systems Technical Symposium Melbourne, 2015
IBM Systems Technical Symposium Melbourne, 2015
Rsockets ofa12
Rsockets ofa12
Software Engineering
Software Engineering
Node.js primer for ITE students
Node.js primer for ITE students
f37-book-intarch-pres-pt2.ppt
f37-book-intarch-pres-pt2.ppt
f37-book-intarch-pres-pt2.ppt
f37-book-intarch-pres-pt2.ppt
03 workshop
03 workshop
Vasiliy Litvinov - Python Profiling
Vasiliy Litvinov - Python Profiling
Defcon 22 - Stitching numbers - generating rop payloads from in memory numbers
Defcon 22 - Stitching numbers - generating rop payloads from in memory numbers
07 processor basics
07 processor basics
O365Con18 - Using ARM Templates to Deploy Solutions on Azure - Kevin Timmermann
O365Con18 - Using ARM Templates to Deploy Solutions on Azure - Kevin Timmermann
What's new in AVR 12.0 and VS 2013
What's new in AVR 12.0 and VS 2013
Build 2016 - B880 - Top 6 Reasons to Move Your C++ Code to Visual Studio 2015
Build 2016 - B880 - Top 6 Reasons to Move Your C++ Code to Visual Studio 2015
Node.js Workshop
Node.js Workshop
JavaMicroBenchmarkpptm
JavaMicroBenchmarkpptm
Es2015 training material-syedawase
Es2015 training material-syedawase
Simple Single Instruction Multiple Data (SIMD) with the Intel® Implicit SPMD ...
Simple Single Instruction Multiple Data (SIMD) with the Intel® Implicit SPMD ...
Amazon EC2 deepdive and a sprinkel of AWS Compute | AWS Floor28
Amazon EC2 deepdive and a sprinkel of AWS Compute | AWS Floor28
Meeting rooms are talking! are you listening?
Meeting rooms are talking! are you listening?
Mais de Anil Kumar Pugalia
File System Modules
File System Modules
Anil Kumar Pugalia
Processes
Processes
Anil Kumar Pugalia
System Calls
System Calls
Anil Kumar Pugalia
Playing with R L C Circuits
Playing with R L C Circuits
Anil Kumar Pugalia
Audio Drivers
Audio Drivers
Anil Kumar Pugalia
Video Drivers
Video Drivers
Anil Kumar Pugalia
Functional Programming with LISP
Functional Programming with LISP
Anil Kumar Pugalia
Power of vi
Power of vi
Anil Kumar Pugalia
"make" system
"make" system
Anil Kumar Pugalia
Hardware Design for Software Hackers
Hardware Design for Software Hackers
Anil Kumar Pugalia
RPM Building
RPM Building
Anil Kumar Pugalia
Linux User Space Debugging & Profiling
Linux User Space Debugging & Profiling
Anil Kumar Pugalia
System Calls
System Calls
Anil Kumar Pugalia
Threads
Threads
Anil Kumar Pugalia
Processes
Processes
Anil Kumar Pugalia
Linux Memory Management
Linux Memory Management
Anil Kumar Pugalia
Linux File System
Linux File System
Anil Kumar Pugalia
Inter Process Communication
Inter Process Communication
Anil Kumar Pugalia
Introduction to Linux
Introduction to Linux
Anil Kumar Pugalia
Mais de Anil Kumar Pugalia
(19)
File System Modules
File System Modules
Processes
Processes
System Calls
System Calls
Playing with R L C Circuits
Playing with R L C Circuits
Audio Drivers
Audio Drivers
Video Drivers
Video Drivers
Functional Programming with LISP
Functional Programming with LISP
Power of vi
Power of vi
"make" system
"make" system
Hardware Design for Software Hackers
Hardware Design for Software Hackers
RPM Building
RPM Building
Linux User Space Debugging & Profiling
Linux User Space Debugging & Profiling
System Calls
System Calls
Threads
Threads
Processes
Processes
Linux Memory Management
Linux Memory Management
Linux File System
Linux File System
Inter Process Communication
Inter Process Communication
Introduction to Linux
Introduction to Linux
Último
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
Safe Software
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Drew Madelung
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
Sinan KOZAK
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
The Digital Insurer
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
Delhi Call girls
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
Enterprise Knowledge
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
The Digital Insurer
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
Maria Levchenko
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
Enterprise Knowledge
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Katpro Technologies
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
Martijn de Jong
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
Anna Loughnan Colquhoun
🐬 The future of MySQL is Postgres 🐘
🐬 The future of MySQL is Postgres 🐘
RTylerCroy
How to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
naman860154
Slack Application Development 101 Slides
Slack Application Development 101 Slides
praypatel2
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
Paola De la Torre
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
HampshireHUG
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
Radu Cotescu
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
giselly40
Último
(20)
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
🐬 The future of MySQL is Postgres 🐘
🐬 The future of MySQL is Postgres 🐘
How to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
Slack Application Development 101 Slides
Slack Application Development 101 Slides
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
Embedded C
1.
© 2015 SysPlay
Workshops <workshop@sysplay.in> All Rights Reserved. Fun with 'Embedded' C
2.
2© 2015 SysPlay
Workshops <workshop@sysplay.in> All Rights Reserved. What to Expect? What is in Embedded? De-jargonified Pointers Hardware Programming Compiler Optimizations Register Programming Techniques Playful Bit Operations
3.
3© 2015 SysPlay
Workshops <workshop@sysplay.in> All Rights Reserved. What is in Embedded? Typically for a cross architecture Needs cross compilation Needing architecture specific options like -mcpu No-frills Programming Typically no library code usage No init setup code Have a specific / custom memory map Needs specific code placement Programming a Bare Metal No code support framework like stack, ... No execution support framework like loader
4.
4© 2015 SysPlay
Workshops <workshop@sysplay.in> All Rights Reserved. Pointers: De-jargonification through 7 rules
5.
5© 2015 SysPlay
Workshops <workshop@sysplay.in> All Rights Reserved. Rule #0: Foundation Memory Locations & its Address CPU RAM DB Integer i; Pointer p; i = 6; p = 6; i p AB 0 4 8 12 16 20 24 28 32 36 6 6
6.
6© 2015 SysPlay
Workshops <workshop@sysplay.in> All Rights Reserved. Rule #1: Pointer as an Integer “Pointer is an Integer” Exceptions: May not be of same size Rule #2
7.
7© 2015 SysPlay
Workshops <workshop@sysplay.in> All Rights Reserved. Rule #2: Pointer not an Integer Variable Address Referencing (&) De-referencing (*)
8.
8© 2015 SysPlay
Workshops <workshop@sysplay.in> All Rights Reserved. Rule #3: Pointer Type Why do we need types attached to pointers? Only for 'dereferencing' “Pointer of type t = t Pointer = (t *)” It is a variable Which contains an address Which when dereferenced returns a variable of type t Starting from that address Defining a Pointer, indirectly
9.
9© 2015 SysPlay
Workshops <workshop@sysplay.in> All Rights Reserved. Rule #4: Pointer Value “Pointer pointing to a Variable = Pointer contains the Address of the Variable” “Pointing means Containing Address”
10.
10© 2015 SysPlay
Workshops <workshop@sysplay.in> All Rights Reserved. Rule #5: NULL Pointer Need for Pointing to 'Nothing' Evolution of NULL, typically 0 “Pointer value of NULL = Null Addr = Null Pointer = Pointing to Nothing”
11.
11© 2015 SysPlay
Workshops <workshop@sysplay.in> All Rights Reserved. Array Interpretations Original Big Variable Consisting of Smaller Variables Of Same Type Placed consecutively Constant Pointer to the 1st Small Variable In the Big Variable
12.
12© 2015 SysPlay
Workshops <workshop@sysplay.in> All Rights Reserved. Rule #6: Array vs Pointer arr + i = &arr[i] Value(arr + i) = Value(arr) + i * sizeof(*arr) “Value(p + i) = Value(p) + i * sizeof(*p)” Corollaries: p + i = &p[i] *(p + i) = p[i] sizeof(void) = 1
13.
13© 2015 SysPlay
Workshops <workshop@sysplay.in> All Rights Reserved. Rule #7: Allocation Types “Static Allocation vs Dynamic Allocation” Named vs Unnamed Allocation Managed by Compiler vs User Done internally by Compiler vs Using malloc/free Dynamic corresponding of a 1-D Static Array Can be treated same once allocated Except their sizes
14.
14© 2015 SysPlay
Workshops <workshop@sysplay.in> All Rights Reserved. 2-D Arrays Each Dimension could be Static, or Dynamic Various Forms for 2-D Arrays (2x2 = 4) Both Static (Rectangular) - arr[r][c] First Static, Second Dynamic - *arr[r] First Dynamic, Second Static - (*arr)[c] Both Dynamic - **arr 2-D Arrays using a Single Level Pointer
15.
15© 2015 SysPlay
Workshops <workshop@sysplay.in> All Rights Reserved. Hardware Programming
16.
16© 2015 SysPlay
Workshops <workshop@sysplay.in> All Rights Reserved. Compiler Optimizations Using -O0, -O1, -O2, -O3, -Os, -Ofast, -Og May eliminate seemingly redundant code But important from embedded C perspective Examples Seemingly meaningless reads/writes NOP loop for delay Functions not called from C code Ways to avoid Use -O0 or no optimization Use volatile for hardware mapped variables Use __attribute__((optimize("O0"))) for specific functions Use asmlinkage for functions called from assembly
17.
17© 2015 SysPlay
Workshops <workshop@sysplay.in> All Rights Reserved. Register Programming Techniques Direct using the (Bus) Address Indirect through some Direct Register Multiplexed using some Config Registers / Bits Example: UART Registers, ... Clear On Set Example: Status Registers, ... Protected Access using Lock / Unlock Registers Example: MAC Id Registers, ...
18.
18© 2015 SysPlay
Workshops <workshop@sysplay.in> All Rights Reserved. Bit Operations Using the C operators &, |, ^, ~, <<, >> Assignment equivalents of those Clearing using &, ~ Setting using | Toggling using ^ Shifting, Multiplication using << Shifting, Division using >>
19.
19© 2015 SysPlay
Workshops <workshop@sysplay.in> All Rights Reserved. What all have we learnt? Specifics of Embedded C Architecture Specifics, Linker Scripts, Bare Metal Pointers Simplified 7 Rules, Arrays Hardware Programming Compiler Optimizations Register Programming Techniques Playful Bit Operations
20.
20© 2015 SysPlay
Workshops <workshop@sysplay.in> All Rights Reserved. Any Queries?