Embedded Software for the IoT

Book Description

With a mixture of theory, examples, and well-integrated figures, Embedded Software for the IoT helps the reader understand the details in the technologies behind the devices used in the Internet of Things. It provides an overview of IoT, parameters of designing an embedded system, and good practice concerning code, version control and defect-tracking needed to build and maintain a connected embedded system.

After presenting a discussion on the history of the internet and the word wide web the book introduces modern CPUs and operating systems. The author then delves into an in-depth view of core IoT domains including:

  • Wired and wireless networking
  • Digital filters
  • Security in embedded and networked systems
  • Statistical Process Control for Industry 4.0

This book will benefit software developers moving into the embedded realm as well as developers already working with embedded systems.

Table of Contents

  1. Cover
  2. Title Page
  3. Copyright
  4. About De|G PRESS
  5. Contents
  6. Preface
  7. 1 Introduction
    1. 1.1 The tale of the internet
    2. 1.2 The cloud
    3. 1.3 Internet of things
    4. 1.4 IoT related terms
  8. Part I: The basic system
    1. 2 How to select an OS
      1. 2.1 No OS and strictly polling
      2. 2.2 Co-routines
      3. 2.3 Interrupts
      4. 2.4 A small real-time kernel
      5. 2.5 A nonpreemptive operating system
      6. 2.6 Full OS
      7. 2.7 Open source, GNU licensing, and Linux
      8. 2.8 OS constructs
      9. 2.9 Further reading
    2. 3 Which CPU to use?
      1. 3.1 Overview
      2. 3.2 CPU core
      3. 3.3 CPU architecture
      4. 3.4 Word size
      5. 3.5 MMU-memory managed unit
      6. 3.6 RAM
      7. 3.7 Cache
      8. 3.8 EEPROM and flash
      9. 3.9 FPU-floating point unit
      10. 3.10 DSP
      11. 3.11 Crypto engine
      12. 3.12 Upgrade path
      13. 3.13 Second sources
      14. 3.14 Price
      15. 3.15 Export control
      16. 3.16 RoHS-compliance
      17. 3.17 Evaluation boards
      18. 3.18 Tool-chain
      19. 3.19 Benchmarking
      20. 3.20 Power consumption
      21. 3.21 JTAG debugger
      22. 3.22 Peripherals
      23. 3.23 Make or buy
      24. 3.24 Further reading
  9. Part II: Best practice
    1. 4 Software architecture
      1. 4.1 Design for performance
      2. 4.2 The fear of the white paper
      3. 4.3 Layers
      4. 4.4 Not just APIs—more files
      5. 4.5 Object model (containment hierarchy)
      6. 4.6 Case: CANOpen
      7. 4.7 Message passing
      8. 4.8 Middleware
      9. 4.9 Case: architectural reuse in LAN-XI
      10. 4.10 Understanding C
      11. 4.11 Further reading
    2. 5 Debug tools
      1. 5.1 Simulator
      2. 5.2 ICE – in-circuit emulator
      3. 5.3 Background or JTAG debugger
      4. 5.4 Target stand-in
      5. 5.5 Debugger
      6. 5.6 strace
      7. 5.7 Debugging without special tools
      8. 5.8 Monitoring messages
      9. 5.9 Test traffic
      10. 5.10 Further reading
    3. 6 Code maintenance
      1. 6.1 Poor man’s backup
      2. 6.2 Version control—and git
        1. 6.2.1 GitHub and other cloud solutions
      3. 6.3 Build and virtualization
      4. 6.4 Static code analysis
      5. 6.5 Inspections
      6. 6.6 Tracking defects and features
      7. 6.7 Whiteboard
      8. 6.8 Documentation
      9. 6.9 Yocto
      10. 6.10 OpenWRT
      11. 6.11 Further reading
  10. Part III: IoT technologies
    1. 7 Networks
      1. 7.1 Introduction to the internet protocols
      2. 7.2 Cerf and Kahn-internet as net of nets
      3. 7.3 Life of a packet
      4. 7.4 Life before the packet
      5. 7.5 Getting an IP address
      6. 7.6 DHCP
      7. 7.7 Network masks, CIDR, and special ranges
      8. 7.8 Reserved IP ranges
      9. 7.9 NAT
      10. 7.10 DNS
      11. 7.11 Introducing HTTP
      12. 7.12 REST
      13. 7.13 TCP sockets on IPv4 under Windows
      14. 7.14 IP fragmentation
      15. 7.15 Introducing IPv6 addresses
      16. 7.16 TCP Sockets on IPv6 under Linux
      17. 7.17 Data transmission
      18. 7.18 UDP sockets
      19. 7.19 Case: UDP on IPv6
      20. 7.20 Application layer protocols
      21. 7.21 Alternatives to the socket API
      22. 7.22 Ethernet cabling
      23. 7.23 Physical layer problems
      24. 7.24 Further reading
    2. 8 Network tools
      1. 8.1 Finding the IP address
      2. 8.2 The switch as a tool
        1. 8.2.1 Mirroring
        2. 8.2.2 Statistics
        3. 8.2.3 Simulating lost frames
        4. 8.2.4 Pause frames
      3. 8.3 Tap
      4. 8.4 SNMP
      5. 8.5 Wireshark
      6. 8.6 Network commands
      7. 8.7 Further reading
    3. 9 Wireless networks
      1. 9.1 Introduction
      2. 9.2 Wi-Fi basics
      3. 9.3 The access point as a repeater
      4. 9.4 How is speed calculated?
      5. 9.5 Case: Wi-Fi data transmission
      6. 9.6 Case: beacons
      7. 9.7 Case: a strange lagging
      8. 9.8 Aggregated frames
      9. 9.9 Channel assessment
      10. 9.10 Bluetooth low energy
      11. 9.11 Certification
      12. 9.12 Further reading
    4. 10 Security
      1. 10.1 Introduction
      2. 10.2 The goals of a hacker
      3. 10.3 Network security concepts
      4. 10.4 Hash function
      5. 10.5 Symmetric key encryption
      6. 10.6 Case: enigma
      7. 10.7 Asymmetric key encryption
      8. 10.8 Digital signature
      9. 10.9 Certificates
      10. 10.10 Message authentication code
      11. 10.11 Nonce
      12. 10.12 Secure socket communication
      13. 10.13 OpenSSL
      14. 10.14 Case: heartbleed
      15. 10.15 Case: Wi-Fi security
      16. 10.16 Software Crypto libraries
      17. 10.17 Trusted platform module
      18. 10.18 Embedded systems
      19. 10.19 Vulnerabilities in embedded systems
      20. 10.20 Export control
      21. 10.21 Further reading
    5. 11 Digital filters
      1. 11.1 Why digital?
      2. 11.2 Why filters?
      3. 11.3 About the sampling frequency
      4. 11.4 Time and frequency domains
      5. 11.5 Analog and digital definitions
      6. 11.6 More duality
      7. 11.7 A well-behaving system
      8. 11.8 IIR filter basics
      9. 11.9 Implementing IIR
      10. 11.10 FIR filter basics
      11. 11.11 Implementing FIR
      12. 11.12 Dynamic range versus precision
      13. 11.13 Integers
      14. 11.14 Fixed-point arithmetic
      15. 11.15 Q-notation and multiplication
      16. 11.16 Division
      17. 11.17 BCD
      18. 11.18 Further reading
    6. 12 Statistical process control
      1. 12.1 Introduction
      2. 12.2 Important terms
      3. 12.3 Control charts
      4. 12.4 Finding the control limits
      5. 12.5 Subgroups
      6. 12.6 Case: insulation plates
      7. 12.7 EWMA control charts
      8. 12.8 Process capability index
      9. 12.9 Further reading
  11. Epilogue
  12. List of Figures
  13. List of Tables
  14. Listings
  15. Index

Product Information

  • Title: Embedded Software for the IoT
  • Author(s): Klaus Elk
  • Release date: December 2018
  • Publisher(s): De Gruyter
  • ISBN: 9781547401048