Andy Pack
5f04cacd81
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 |
||
---|---|---|
.. | ||
Composition.md | ||
Contiki.md | ||
OS.md | ||
README.md |
- Thin software layer
- Basic programming abstractions
- Interact with hardware
- Schedule and prioritise tasks
- Mediate between applications and services requiring resources Comparison of Operating Systems TinyOS and Contiki
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
- Settings and requirements not known prior to deployment
- 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
- make TARGET=xm1000 _____.upload
- 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