Soumettre la recherche
Mettre en ligne
Embedded C
•
7 j'aime
•
26,023 vues
Anil Kumar Pugalia
Suivre
Embedded C for Bare Metal Programming
Lire moins
Lire la suite
Technologie
Signaler
Partager
Signaler
Partager
1 sur 20
Recommandé
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
Recommandé
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
Contenu connexe
Tendances
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
Tendances
(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
En vedette
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
En vedette
(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
Similaire à 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
Similaire à 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?
Plus 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
Plus 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
Dernier
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
panagenda
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc
Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...
itnewsafrica
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software Developers
Nicole Novielli
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
LoriGlavin3
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and Insights
Ravi Sanghani
2024 April Patch Tuesday
2024 April Patch Tuesday
Ivanti
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
Inflectra
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL Router
Mydbops
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
BookNet Canada
React Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App Framework
Pixlogix Infotech
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Mark Goldstein
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdf
Neo4j
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to Hero
UiPathCommunity
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
marketing932765
QCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architectures
Bernd Ruecker
A Framework for Development in the AI Age
A Framework for Development in the AI Age
Cprime
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...
itnewsafrica
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examples
Kari Kakkonen
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
LoriGlavin3
Dernier
(20)
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software Developers
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and Insights
2024 April Patch Tuesday
2024 April Patch Tuesday
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL Router
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
React Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App Framework
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdf
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to Hero
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
QCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architectures
A Framework for Development in the AI Age
A Framework for Development in the AI Age
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examples
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
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?