stem/IOT/OS
Andy Pack 5f04cacd81 vault backup: 2023-12-27 09:30:39
Affected files:
.obsidian/workspace.json
Projects/Dev Options.md
Projects/Mixonomer.md
Projects/NoteCrawler.md
Projects/Selector.md
Projects/To Do App.md
STEM/CS/ABI.md
STEM/CS/Calling Conventions.md
STEM/CS/Code Types.md
STEM/CS/Compilers.md
STEM/CS/ISA.md
STEM/CS/Language Binding.md
STEM/CS/Languages/Assembly.md
STEM/CS/Languages/C++.md
STEM/CS/Languages/Javascript.md
STEM/CS/Languages/Python.md
STEM/CS/Languages/Rust.md
STEM/CS/Languages/dotNet.md
STEM/IOT/OS/Composition.md
2023-12-27 09:30:39 +00:00
..
Composition.md vault backup: 2023-12-27 09:30:39 2023-12-27 09:30:39 +00:00
Contiki.md vault backup: 2023-12-22 12:45:16 2023-12-22 12:45:16 +00:00
OS.md vault backup: 2023-12-22 12:45:16 2023-12-22 12:45:16 +00:00
README.md vault backup: 2023-12-22 12:45:16 2023-12-22 12:45:16 +00:00

Environment

  • Energy efficiency
  • Restricted code
    • Compared to full OS

Features

  • Memory management
  • Power management
  • File management
  • Networking
  • Dev environment and tools
    • Commands
    • Interpreters
    • Compilers
  • Entry points for sensitive resources
    • Input components
  • Functional aspects
    • Scheduling
    • Multi-threading
    • Interrupts
    • Memory allocation

Dynamic Programming

  • Program parts of application after deployment
    • Settings and requirements not known prior to deployment
      • Can change over time
    • Bug fixes or update requirements wile in operation
    • Manual updates maybe not possible
  • Needs boundaries between application and OS
  • OS receive software updates and store in active memory
    • Check this is an updated version
    • Install and configure new version

Paradigm

  • Node-centric
    • Focuses on software for each node
    • Operating individually
  • Application-centric
    • Treat nodes as one application
    • Requires collaboration between nodes
      • Collection
      • Dissemination
      • Analysis and/or processing of generated and collected data

Deploy to Mote

  • Compile
    • make TARGET=xm1000 _____
  • Deploy
    • make TARGET=xm1000 _____.upload
      • As root
  • Terminal
    • make TARGET=xm1000 login

TinyOS

Embedded, component-based operating system and platform for low-power wireless devices, such as those used in wireless sensor networks (WSNs), smartdust, ubiquitous computing, personal area networks, building automation, and smart meters

From <https://en.wikipedia.org/wiki/TinyOS>

  • Written in nesC
    • Network Embedded Systems C
    • Component-based
      • Wired together to run applications
    • Event-driven
    • Extension to C
  • Non-blocking
    • One stack
    • No abstraction between OS and application
  • No dynamic programming
  • I/O ops longer than hundreds of milliseconds are async
  • Mainly event-based

FreeRTOS

  • Minimal ROM, RAM, processing overhead
  • Bin image 6K - 12K
  • 3 C files
  • Smaller & easier real-time processing alternative
  • Port layer
    • Architecture specific part of port
    • Officially supported or contributed
  • Good for AWS