SlideShare a Scribd company logo
M. Kaisar Ul Haque Principal Software Engineer ReliSource Technologies Ltd.
M. Kaisar Ul Haque Principal Software Engineer ReliSource Technologies Ltd.
The Embedded Platform 8 bit MCU (Microcontroller Unit) 16 bit MCU 32 bit MCU/Processor Costing, Physical Size, Power Consumption, Computational Power, Resources (RAM, Program memory, Peripherals). All architectures are currently popular, for example new 8 bit models comes out every few months!
 
Resource Constrains 8 bit MCU, an example: 1 KB of RAM 16 K instructions / Code Size / Program memory Limited peripherals
Resource Constrains (Contd.) “ What makes ESW different [from other software development] is resource constraints,”  says Bob Iannucci, senior vice president and head of Nokia Research Center, Nokia's corporate research unit in Helsinki. Dr. Zhang agrees:  “You have to think about space, power conservation and pixel constraints. You have to balance power, simplicity, footprint, cost and size.”
Code Size long SomeFunction(long a, long b) { long c = a * b; return c; }
Code Size (Contd.) long  SomeFunction( long  a,  long  b) { long  c  =  a  *  b; return c; } Assignments can be expensive!
Code Size (Contd.) uint16  SomeFunction( uint8  a,  uint8  b) { uint16  c  =  a  *  b; return c; }
Code Size uint16  SomeFunction( uint8  a,  uint8  b) { uint16  c  =  a  *  b; return c; } Function calls can be expensive! Next instruction (PC) is changed, Stack frame is changed Parameters are placed in stack (assignments) Room made for return value Room made for locals Function code executes Return value stored (assigned) Stack frame changed / popped Return value assigned as function’s value PC is changed / popped
Code Size (Contd.) Macros are better in many cases But not in all cases.. #define  SomeFunction(a, b) ((a) * (b)) x = SomeFunction(y, z);
Code Size (Contd.) Multiplications can be expensive.. x = y * 8; x = y << 3; Floating point operation can be expansive 1.5 * 1.5 = 2.25 is more expansive than 15 * 15 = 225
Code Size (Contd.) What machine code/instructions your code generates How to minimize your code Save every instruction you can Hundreds of business logics can be difficult to fit into the program memory (for example in 16k)
RAM Size How much RAM your code needs? How to minimize RAM utilization? Save every ‘bit’ you can.. Literally
RAM Size (Contd.) Many data types (int, long, float, double) can be expensive! long  SomeFunction( long  a,  long  b) { long  c  =  a  *  b; return c; }
RAM – Saving every ‘bit’ uint8 a; //value range 1 to 50 uint8 b; //value range 1 to 10
RAM – Saving every ‘bit’ uint8 a; //value range 1 to 50 uint8 b; //value range 1 to 10 typedef struct { uint8 a: 6; uint8 b: 2; } s_ab; s_ab ab; //takes 1 byte
Power Sleeping is better than working :) Some peripherals consume more power High clock speed consumes more power Need to save as much uA as possible Less utilization of power = more battery life = less cost = better business = less batteries = greener world
Real-time Issues Some communication timing must be precise.. Depended on the clock.. the clock doesn’t run at the speed it should..  You asked for 2 MHz.. you got 1.4 MHz.. 26uS
Expertise over ‘the Platform’ Memory – Banks, Addressing Peripherals – Clock, WDT, IRQ, IO, LCD, ADC, RTC, TBC, Timers Communications - UART, I2C, SPI Spec/Datasheet, User Manual, Instruction set, C Language, Compiler, Assembler, Linker Docs
Cross-Platform Architecture Codes needs to support current and future target platforms Hardware abstraction layer is required to separate platform specific and business codes. Reusable modules is the key Changes in a module needs to be tested over all platforms
Shortage of Documents Not much example code from vendor No example/help returned in Google Platform not yet released in the market You only have the documents provided by the MCU vendor and those can have errors!
Debugging Limited support of break points Many real-time scenarios are impossible to debug Need the right tools to debug
Collaboration “ Any device we manufacture these days is getting more and more complicated, with quite a bit of software and hardware integration,”  says Woo-hyun Paik, president and chief technology advisor at LG Electronics in the United States.  “You can't do it all by yourself.”
Testing, Testing.. Testing Accenture’s AJ Gupta.  “Without a structured approach to testing, a company cannot effectively match initial product requirements with specific testing activities and expected actual outcomes. This—coupled with the fact that many companies lack the robust tools necessary to adequately test today’s complex high-tech products— results in bugs that go uncaught before the product is shipped.”
 
 

More Related Content

Viewers also liked (7)

Am I Flexible?
Am I Flexible?Am I Flexible?
Am I Flexible?
SQABD
 
Jan Friis Nielson: Bideshi Experience
Jan Friis Nielson: Bideshi ExperienceJan Friis Nielson: Bideshi Experience
Jan Friis Nielson: Bideshi Experience
SQABD
 
Hasin Hayder: Motivated team and getting most out of it
Hasin Hayder: Motivated team and getting most out of itHasin Hayder: Motivated team and getting most out of it
Hasin Hayder: Motivated team and getting most out of it
SQABD
 
Tanvir Afzal: Selenium
Tanvir Afzal: SeleniumTanvir Afzal: Selenium
Tanvir Afzal: Selenium
SQABD
 
Mobiel uitgeven voor smartphone en tablet
Mobiel uitgeven voor smartphone en tabletMobiel uitgeven voor smartphone en tablet
Mobiel uitgeven voor smartphone en tablet
lisavdh
 
WinklerPrinsOnline_Basisonderwijs_APS-IT
WinklerPrinsOnline_Basisonderwijs_APS-ITWinklerPrinsOnline_Basisonderwijs_APS-IT
WinklerPrinsOnline_Basisonderwijs_APS-IT
lisavdh
 
Mozammel Haque: Scrum
Mozammel Haque: ScrumMozammel Haque: Scrum
Mozammel Haque: Scrum
SQABD
 
Am I Flexible?
Am I Flexible?Am I Flexible?
Am I Flexible?
SQABD
 
Jan Friis Nielson: Bideshi Experience
Jan Friis Nielson: Bideshi ExperienceJan Friis Nielson: Bideshi Experience
Jan Friis Nielson: Bideshi Experience
SQABD
 
Hasin Hayder: Motivated team and getting most out of it
Hasin Hayder: Motivated team and getting most out of itHasin Hayder: Motivated team and getting most out of it
Hasin Hayder: Motivated team and getting most out of it
SQABD
 
Tanvir Afzal: Selenium
Tanvir Afzal: SeleniumTanvir Afzal: Selenium
Tanvir Afzal: Selenium
SQABD
 
Mobiel uitgeven voor smartphone en tablet
Mobiel uitgeven voor smartphone en tabletMobiel uitgeven voor smartphone en tablet
Mobiel uitgeven voor smartphone en tablet
lisavdh
 
WinklerPrinsOnline_Basisonderwijs_APS-IT
WinklerPrinsOnline_Basisonderwijs_APS-ITWinklerPrinsOnline_Basisonderwijs_APS-IT
WinklerPrinsOnline_Basisonderwijs_APS-IT
lisavdh
 
Mozammel Haque: Scrum
Mozammel Haque: ScrumMozammel Haque: Scrum
Mozammel Haque: Scrum
SQABD
 

Similar to Challenges in Embedded Development (20)

How to Select Hardware for Internet of Things Systems?
How to Select Hardware for Internet of Things Systems?How to Select Hardware for Internet of Things Systems?
How to Select Hardware for Internet of Things Systems?
Hannes Tschofenig
 
Unit i-introduction
Unit i-introductionUnit i-introduction
Unit i-introduction
akruthi k
 
ERTS_Unit 1_PPT.pdf
ERTS_Unit 1_PPT.pdfERTS_Unit 1_PPT.pdf
ERTS_Unit 1_PPT.pdf
VinothkumarUruman1
 
Top 10 Supercomputers With Descriptive Information & Analysis
Top 10 Supercomputers With Descriptive Information & AnalysisTop 10 Supercomputers With Descriptive Information & Analysis
Top 10 Supercomputers With Descriptive Information & Analysis
NomanSiddiqui41
 
Unit 1 Introduction to Embedded computing and ARM processor
Unit 1 Introduction to Embedded computing and ARM processorUnit 1 Introduction to Embedded computing and ARM processor
Unit 1 Introduction to Embedded computing and ARM processor
Venkat Ramanan C
 
1.1. SOC AND MULTICORE ARCHITECTURES FOR EMBEDDED SYSTEMS (2).pdf
1.1. SOC AND MULTICORE ARCHITECTURES FOR EMBEDDED SYSTEMS (2).pdf1.1. SOC AND MULTICORE ARCHITECTURES FOR EMBEDDED SYSTEMS (2).pdf
1.1. SOC AND MULTICORE ARCHITECTURES FOR EMBEDDED SYSTEMS (2).pdf
enriquealbabaena6868
 
Alto Desempenho com Java
Alto Desempenho com JavaAlto Desempenho com Java
Alto Desempenho com Java
codebits
 
High Performance Computing (HPC) and Engineering Simulations in the Cloud
High Performance Computing (HPC) and Engineering Simulations in the CloudHigh Performance Computing (HPC) and Engineering Simulations in the Cloud
High Performance Computing (HPC) and Engineering Simulations in the Cloud
The UberCloud
 
High Performance Computing (HPC) and Engineering Simulations in the Cloud
High Performance Computing (HPC) and Engineering Simulations in the CloudHigh Performance Computing (HPC) and Engineering Simulations in the Cloud
High Performance Computing (HPC) and Engineering Simulations in the Cloud
Wolfgang Gentzsch
 
Introduction to Embedded Systems
Introduction to Embedded SystemsIntroduction to Embedded Systems
Introduction to Embedded Systems
Sudhanshu Janwadkar
 
embedded systems
embedded systemsembedded systems
embedded systems
Shanmuga Vadivu
 
UNIT I_Introduction.pptx
UNIT I_Introduction.pptxUNIT I_Introduction.pptx
UNIT I_Introduction.pptx
ssuser4ca1eb
 
Performance of State-of-the-Art Cryptography on ARM-based Microprocessors
Performance of State-of-the-Art Cryptography on ARM-based MicroprocessorsPerformance of State-of-the-Art Cryptography on ARM-based Microprocessors
Performance of State-of-the-Art Cryptography on ARM-based Microprocessors
Hannes Tschofenig
 
UNIT I.pptx
UNIT I.pptxUNIT I.pptx
UNIT I.pptx
SeshuSrinivas2
 
FPGA_prototyping proccesing with conclusion
FPGA_prototyping proccesing with conclusionFPGA_prototyping proccesing with conclusion
FPGA_prototyping proccesing with conclusion
PersiPersi1
 
AEC 8051 controller.pptxmicrocontroller notes
AEC 8051 controller.pptxmicrocontroller notesAEC 8051 controller.pptxmicrocontroller notes
AEC 8051 controller.pptxmicrocontroller notes
samarthwali91
 
CS465Lec1.ppt computer architecture in the fall term
CS465Lec1.ppt computer architecture in the fall termCS465Lec1.ppt computer architecture in the fall term
CS465Lec1.ppt computer architecture in the fall term
ppavani10
 
Wonho Park_20151209
Wonho Park_20151209Wonho Park_20151209
Wonho Park_20151209
Wonho Park
 
Chapter 1 computer abstractions and technology
Chapter 1 computer abstractions and technologyChapter 1 computer abstractions and technology
Chapter 1 computer abstractions and technology
BATMUNHMUNHZAYA
 
Embedded system
Embedded systemEmbedded system
Embedded system
ashraf eltholth
 
How to Select Hardware for Internet of Things Systems?
How to Select Hardware for Internet of Things Systems?How to Select Hardware for Internet of Things Systems?
How to Select Hardware for Internet of Things Systems?
Hannes Tschofenig
 
Unit i-introduction
Unit i-introductionUnit i-introduction
Unit i-introduction
akruthi k
 
Top 10 Supercomputers With Descriptive Information & Analysis
Top 10 Supercomputers With Descriptive Information & AnalysisTop 10 Supercomputers With Descriptive Information & Analysis
Top 10 Supercomputers With Descriptive Information & Analysis
NomanSiddiqui41
 
Unit 1 Introduction to Embedded computing and ARM processor
Unit 1 Introduction to Embedded computing and ARM processorUnit 1 Introduction to Embedded computing and ARM processor
Unit 1 Introduction to Embedded computing and ARM processor
Venkat Ramanan C
 
1.1. SOC AND MULTICORE ARCHITECTURES FOR EMBEDDED SYSTEMS (2).pdf
1.1. SOC AND MULTICORE ARCHITECTURES FOR EMBEDDED SYSTEMS (2).pdf1.1. SOC AND MULTICORE ARCHITECTURES FOR EMBEDDED SYSTEMS (2).pdf
1.1. SOC AND MULTICORE ARCHITECTURES FOR EMBEDDED SYSTEMS (2).pdf
enriquealbabaena6868
 
Alto Desempenho com Java
Alto Desempenho com JavaAlto Desempenho com Java
Alto Desempenho com Java
codebits
 
High Performance Computing (HPC) and Engineering Simulations in the Cloud
High Performance Computing (HPC) and Engineering Simulations in the CloudHigh Performance Computing (HPC) and Engineering Simulations in the Cloud
High Performance Computing (HPC) and Engineering Simulations in the Cloud
The UberCloud
 
High Performance Computing (HPC) and Engineering Simulations in the Cloud
High Performance Computing (HPC) and Engineering Simulations in the CloudHigh Performance Computing (HPC) and Engineering Simulations in the Cloud
High Performance Computing (HPC) and Engineering Simulations in the Cloud
Wolfgang Gentzsch
 
Introduction to Embedded Systems
Introduction to Embedded SystemsIntroduction to Embedded Systems
Introduction to Embedded Systems
Sudhanshu Janwadkar
 
UNIT I_Introduction.pptx
UNIT I_Introduction.pptxUNIT I_Introduction.pptx
UNIT I_Introduction.pptx
ssuser4ca1eb
 
Performance of State-of-the-Art Cryptography on ARM-based Microprocessors
Performance of State-of-the-Art Cryptography on ARM-based MicroprocessorsPerformance of State-of-the-Art Cryptography on ARM-based Microprocessors
Performance of State-of-the-Art Cryptography on ARM-based Microprocessors
Hannes Tschofenig
 
FPGA_prototyping proccesing with conclusion
FPGA_prototyping proccesing with conclusionFPGA_prototyping proccesing with conclusion
FPGA_prototyping proccesing with conclusion
PersiPersi1
 
AEC 8051 controller.pptxmicrocontroller notes
AEC 8051 controller.pptxmicrocontroller notesAEC 8051 controller.pptxmicrocontroller notes
AEC 8051 controller.pptxmicrocontroller notes
samarthwali91
 
CS465Lec1.ppt computer architecture in the fall term
CS465Lec1.ppt computer architecture in the fall termCS465Lec1.ppt computer architecture in the fall term
CS465Lec1.ppt computer architecture in the fall term
ppavani10
 
Wonho Park_20151209
Wonho Park_20151209Wonho Park_20151209
Wonho Park_20151209
Wonho Park
 
Chapter 1 computer abstractions and technology
Chapter 1 computer abstractions and technologyChapter 1 computer abstractions and technology
Chapter 1 computer abstractions and technology
BATMUNHMUNHZAYA
 

More from SQABD (19)

Hasin: Bangla Input Manager jQuery Plugin
Hasin: Bangla Input Manager jQuery PluginHasin: Bangla Input Manager jQuery Plugin
Hasin: Bangla Input Manager jQuery Plugin
SQABD
 
Shoeb: Implementation Challenges of a Paperless Admission System
Shoeb: Implementation Challenges of a Paperless Admission SystemShoeb: Implementation Challenges of a Paperless Admission System
Shoeb: Implementation Challenges of a Paperless Admission System
SQABD
 
Aman: Developing a lightweight, hi-performance and dynamic JSON api server wi...
Aman: Developing a lightweight, hi-performance and dynamic JSON api server wi...Aman: Developing a lightweight, hi-performance and dynamic JSON api server wi...
Aman: Developing a lightweight, hi-performance and dynamic JSON api server wi...
SQABD
 
Zahidul: Meta Testing
Zahidul: Meta TestingZahidul: Meta Testing
Zahidul: Meta Testing
SQABD
 
Rabbi: Good to Great
Rabbi: Good to GreatRabbi: Good to Great
Rabbi: Good to Great
SQABD
 
Imrul: Context Driven Testing
Imrul: Context Driven TestingImrul: Context Driven Testing
Imrul: Context Driven Testing
SQABD
 
Tauhid: SQL Server Database Change Automation
Tauhid: SQL Server Database Change AutomationTauhid: SQL Server Database Change Automation
Tauhid: SQL Server Database Change Automation
SQABD
 
Ayman: When to stop testing?
Ayman: When to stop testing?Ayman: When to stop testing?
Ayman: When to stop testing?
SQABD
 
Mozammel: Solo Scrum - The Pomodoro Technique
Mozammel: Solo Scrum - The Pomodoro TechniqueMozammel: Solo Scrum - The Pomodoro Technique
Mozammel: Solo Scrum - The Pomodoro Technique
SQABD
 
Hasan: Whats preventing me to write nearly accurate code
Hasan: Whats preventing me to write nearly accurate codeHasan: Whats preventing me to write nearly accurate code
Hasan: Whats preventing me to write nearly accurate code
SQABD
 
Kabir Ahmed: AutoHotkey
Kabir Ahmed: AutoHotkeyKabir Ahmed: AutoHotkey
Kabir Ahmed: AutoHotkey
SQABD
 
Mozammel Haque: Git -- Stupid, Fast, distributed content tracker
Mozammel Haque: Git -- Stupid, Fast, distributed content trackerMozammel Haque: Git -- Stupid, Fast, distributed content tracker
Mozammel Haque: Git -- Stupid, Fast, distributed content tracker
SQABD
 
M. Ayman Noor: SQA Empowerment
M. Ayman Noor: SQA EmpowermentM. Ayman Noor: SQA Empowerment
M. Ayman Noor: SQA Empowerment
SQABD
 
Shimul: Testing Mnemonics
Shimul: Testing MnemonicsShimul: Testing Mnemonics
Shimul: Testing Mnemonics
SQABD
 
Innovation Stories of Test Toolsmiths
Innovation Stories of Test ToolsmithsInnovation Stories of Test Toolsmiths
Innovation Stories of Test Toolsmiths
SQABD
 
CUCUMBER - Making BDD Fun
CUCUMBER - Making BDD FunCUCUMBER - Making BDD Fun
CUCUMBER - Making BDD Fun
SQABD
 
Code Review In Testing View
Code Review In Testing ViewCode Review In Testing View
Code Review In Testing View
SQABD
 
SCALING Scrum
SCALING ScrumSCALING Scrum
SCALING Scrum
SQABD
 
Do You Have a Hit List?
Do You Have a Hit List?Do You Have a Hit List?
Do You Have a Hit List?
SQABD
 
Hasin: Bangla Input Manager jQuery Plugin
Hasin: Bangla Input Manager jQuery PluginHasin: Bangla Input Manager jQuery Plugin
Hasin: Bangla Input Manager jQuery Plugin
SQABD
 
Shoeb: Implementation Challenges of a Paperless Admission System
Shoeb: Implementation Challenges of a Paperless Admission SystemShoeb: Implementation Challenges of a Paperless Admission System
Shoeb: Implementation Challenges of a Paperless Admission System
SQABD
 
Aman: Developing a lightweight, hi-performance and dynamic JSON api server wi...
Aman: Developing a lightweight, hi-performance and dynamic JSON api server wi...Aman: Developing a lightweight, hi-performance and dynamic JSON api server wi...
Aman: Developing a lightweight, hi-performance and dynamic JSON api server wi...
SQABD
 
Zahidul: Meta Testing
Zahidul: Meta TestingZahidul: Meta Testing
Zahidul: Meta Testing
SQABD
 
Rabbi: Good to Great
Rabbi: Good to GreatRabbi: Good to Great
Rabbi: Good to Great
SQABD
 
Imrul: Context Driven Testing
Imrul: Context Driven TestingImrul: Context Driven Testing
Imrul: Context Driven Testing
SQABD
 
Tauhid: SQL Server Database Change Automation
Tauhid: SQL Server Database Change AutomationTauhid: SQL Server Database Change Automation
Tauhid: SQL Server Database Change Automation
SQABD
 
Ayman: When to stop testing?
Ayman: When to stop testing?Ayman: When to stop testing?
Ayman: When to stop testing?
SQABD
 
Mozammel: Solo Scrum - The Pomodoro Technique
Mozammel: Solo Scrum - The Pomodoro TechniqueMozammel: Solo Scrum - The Pomodoro Technique
Mozammel: Solo Scrum - The Pomodoro Technique
SQABD
 
Hasan: Whats preventing me to write nearly accurate code
Hasan: Whats preventing me to write nearly accurate codeHasan: Whats preventing me to write nearly accurate code
Hasan: Whats preventing me to write nearly accurate code
SQABD
 
Kabir Ahmed: AutoHotkey
Kabir Ahmed: AutoHotkeyKabir Ahmed: AutoHotkey
Kabir Ahmed: AutoHotkey
SQABD
 
Mozammel Haque: Git -- Stupid, Fast, distributed content tracker
Mozammel Haque: Git -- Stupid, Fast, distributed content trackerMozammel Haque: Git -- Stupid, Fast, distributed content tracker
Mozammel Haque: Git -- Stupid, Fast, distributed content tracker
SQABD
 
M. Ayman Noor: SQA Empowerment
M. Ayman Noor: SQA EmpowermentM. Ayman Noor: SQA Empowerment
M. Ayman Noor: SQA Empowerment
SQABD
 
Shimul: Testing Mnemonics
Shimul: Testing MnemonicsShimul: Testing Mnemonics
Shimul: Testing Mnemonics
SQABD
 
Innovation Stories of Test Toolsmiths
Innovation Stories of Test ToolsmithsInnovation Stories of Test Toolsmiths
Innovation Stories of Test Toolsmiths
SQABD
 
CUCUMBER - Making BDD Fun
CUCUMBER - Making BDD FunCUCUMBER - Making BDD Fun
CUCUMBER - Making BDD Fun
SQABD
 
Code Review In Testing View
Code Review In Testing ViewCode Review In Testing View
Code Review In Testing View
SQABD
 
SCALING Scrum
SCALING ScrumSCALING Scrum
SCALING Scrum
SQABD
 
Do You Have a Hit List?
Do You Have a Hit List?Do You Have a Hit List?
Do You Have a Hit List?
SQABD
 

Challenges in Embedded Development

  • 1. M. Kaisar Ul Haque Principal Software Engineer ReliSource Technologies Ltd.
  • 2. M. Kaisar Ul Haque Principal Software Engineer ReliSource Technologies Ltd.
  • 3. The Embedded Platform 8 bit MCU (Microcontroller Unit) 16 bit MCU 32 bit MCU/Processor Costing, Physical Size, Power Consumption, Computational Power, Resources (RAM, Program memory, Peripherals). All architectures are currently popular, for example new 8 bit models comes out every few months!
  • 4.  
  • 5. Resource Constrains 8 bit MCU, an example: 1 KB of RAM 16 K instructions / Code Size / Program memory Limited peripherals
  • 6. Resource Constrains (Contd.) “ What makes ESW different [from other software development] is resource constraints,” says Bob Iannucci, senior vice president and head of Nokia Research Center, Nokia's corporate research unit in Helsinki. Dr. Zhang agrees: “You have to think about space, power conservation and pixel constraints. You have to balance power, simplicity, footprint, cost and size.”
  • 7. Code Size long SomeFunction(long a, long b) { long c = a * b; return c; }
  • 8. Code Size (Contd.) long SomeFunction( long a, long b) { long c = a * b; return c; } Assignments can be expensive!
  • 9. Code Size (Contd.) uint16 SomeFunction( uint8 a, uint8 b) { uint16 c = a * b; return c; }
  • 10. Code Size uint16 SomeFunction( uint8 a, uint8 b) { uint16 c = a * b; return c; } Function calls can be expensive! Next instruction (PC) is changed, Stack frame is changed Parameters are placed in stack (assignments) Room made for return value Room made for locals Function code executes Return value stored (assigned) Stack frame changed / popped Return value assigned as function’s value PC is changed / popped
  • 11. Code Size (Contd.) Macros are better in many cases But not in all cases.. #define SomeFunction(a, b) ((a) * (b)) x = SomeFunction(y, z);
  • 12. Code Size (Contd.) Multiplications can be expensive.. x = y * 8; x = y << 3; Floating point operation can be expansive 1.5 * 1.5 = 2.25 is more expansive than 15 * 15 = 225
  • 13. Code Size (Contd.) What machine code/instructions your code generates How to minimize your code Save every instruction you can Hundreds of business logics can be difficult to fit into the program memory (for example in 16k)
  • 14. RAM Size How much RAM your code needs? How to minimize RAM utilization? Save every ‘bit’ you can.. Literally
  • 15. RAM Size (Contd.) Many data types (int, long, float, double) can be expensive! long SomeFunction( long a, long b) { long c = a * b; return c; }
  • 16. RAM – Saving every ‘bit’ uint8 a; //value range 1 to 50 uint8 b; //value range 1 to 10
  • 17. RAM – Saving every ‘bit’ uint8 a; //value range 1 to 50 uint8 b; //value range 1 to 10 typedef struct { uint8 a: 6; uint8 b: 2; } s_ab; s_ab ab; //takes 1 byte
  • 18. Power Sleeping is better than working :) Some peripherals consume more power High clock speed consumes more power Need to save as much uA as possible Less utilization of power = more battery life = less cost = better business = less batteries = greener world
  • 19. Real-time Issues Some communication timing must be precise.. Depended on the clock.. the clock doesn’t run at the speed it should.. You asked for 2 MHz.. you got 1.4 MHz.. 26uS
  • 20. Expertise over ‘the Platform’ Memory – Banks, Addressing Peripherals – Clock, WDT, IRQ, IO, LCD, ADC, RTC, TBC, Timers Communications - UART, I2C, SPI Spec/Datasheet, User Manual, Instruction set, C Language, Compiler, Assembler, Linker Docs
  • 21. Cross-Platform Architecture Codes needs to support current and future target platforms Hardware abstraction layer is required to separate platform specific and business codes. Reusable modules is the key Changes in a module needs to be tested over all platforms
  • 22. Shortage of Documents Not much example code from vendor No example/help returned in Google Platform not yet released in the market You only have the documents provided by the MCU vendor and those can have errors!
  • 23. Debugging Limited support of break points Many real-time scenarios are impossible to debug Need the right tools to debug
  • 24. Collaboration “ Any device we manufacture these days is getting more and more complicated, with quite a bit of software and hardware integration,” says Woo-hyun Paik, president and chief technology advisor at LG Electronics in the United States. “You can't do it all by yourself.”
  • 25. Testing, Testing.. Testing Accenture’s AJ Gupta. “Without a structured approach to testing, a company cannot effectively match initial product requirements with specific testing activities and expected actual outcomes. This—coupled with the fact that many companies lack the robust tools necessary to adequately test today’s complex high-tech products— results in bugs that go uncaught before the product is shipped.”
  • 26.  
  • 27.  
  翻译: