vault backup: 2023-12-22 12:45:16
Affected files: .obsidian/graph.json .obsidian/workspace-mobile.json .obsidian/workspace.json Christmas Movies.md Politcs/Fascism.md Politcs/Neoliberalism/Neoliberalism.md STEM/AI/Neural Networks/CNN/Interpretation.md STEM/CS/Languages/Python.md STEM/IOT/OS/Composition.md STEM/IOT/OS/Contiki.md STEM/IOT/OS/OS.md STEM/IOT/OS/README.md STEM/img/iot-event-based.png STEM/img/iot-os-stack.png STEM/img/iot-thread-based.png
This commit is contained in:
parent
6b86705317
commit
3fc7fa863e
@ -12,7 +12,7 @@
|
||||
- Update image
|
||||
|
||||
![am-process](../../../img/am-process.png)
|
||||
## R3egulariser
|
||||
## Regulariser
|
||||
- Fit to natural image statistics
|
||||
- Prone to high frequency noise
|
||||
- Minimise
|
||||
|
@ -16,7 +16,7 @@ Compiler
|
||||
Publication-quality Graphs
|
||||
|
||||
[NLTK](https://www.nltk.org)
|
||||
NLP
|
||||
[NLP](../../Speech/NLP/NLP.md)
|
||||
|
||||
If you are not getting good results, you should first check that you are using the right [classification](../../AI/Classification/Classification.md) algorithm (is your data well fit to be classified by a linear SVM?) and that you have enough training data. Practically, that means you might consider visualizing your dataset through PCA or t-SNE to see how "clustered" your classes are, and checking how your classification metrics evolve with the amount of data your classifier is given.
|
||||
|
||||
|
50
IOT/OS/Composition.md
Normal file
50
IOT/OS/Composition.md
Normal file
@ -0,0 +1,50 @@
|
||||
# Threading
|
||||
*Smallest sequence of programmed instructions that can be managed independently by a [scheduler](https://en.wikipedia.org/wiki/Scheduling_(computing))*
|
||||
From <[https://en.wikipedia.org/wiki/Thread_(computing)](https://en.wikipedia.org/wiki/Thread_(computing))>
|
||||
|
||||
- Instructions run independently by scheduler
|
||||
- Single address space
|
||||
- One thread blocked for I/O
|
||||
- Tasks run in other threads
|
||||
- Need locks and mutexes
|
||||
- Coordination between threads
|
||||
- Complicated
|
||||
- Deadlocks
|
||||
|
||||
# Protothreads
|
||||
- Lightweight
|
||||
- Stack-less
|
||||
- Interruptible tasks for event-based
|
||||
- Conditional blocking statement
|
||||
- Blocks until given statement is true
|
||||
- Use timer to manage
|
||||
- Invoked whenever process receives message from another process or timer
|
||||
|
||||
# Events
|
||||
*Action or occurrence recognized by software, often originating asynchronously from the external environment, that may be [handled](https://en.wikipedia.org/wiki/Event_handler) by the software*
|
||||
From <[https://en.wikipedia.org/wiki/Event_(computing)](https://en.wikipedia.org/wiki/Event_(computing))>
|
||||
|
||||
- Event loop
|
||||
- Waits for events
|
||||
- Inputs
|
||||
- On event
|
||||
- Collects info
|
||||
- Dispatches to call-back
|
||||
- Register handlers with OS scheduler
|
||||
- Kernel usually runs loop to poll for events
|
||||
- Blocking operation
|
||||
- Register call-back
|
||||
- Return control to scheduler
|
||||
|
||||
# Radio Sleep
|
||||
- Energy efficiency
|
||||
- Congestion
|
||||
|
||||
## Event-based
|
||||
![](../../img/iot-event-based.png)
|
||||
|
||||
## Thread-based
|
||||
![](../../img/iot-thread-based.png)
|
||||
- Less complex
|
||||
- Faster
|
||||
- Pointer-based
|
78
IOT/OS/Contiki.md
Normal file
78
IOT/OS/Contiki.md
Normal file
@ -0,0 +1,78 @@
|
||||
- Linux-based
|
||||
- Small memory (~20 kB)
|
||||
- Wide network stacks
|
||||
- TCP/IP
|
||||
- IPv6
|
||||
- 6LoWPAN
|
||||
- IPv6-based
|
||||
- Header compression
|
||||
- CoAP
|
||||
- Application layer protocol
|
||||
- RPL
|
||||
- Routing for low power
|
||||
- Lossy networks
|
||||
- SSL/TLS
|
||||
- RIME
|
||||
- Own communication solution
|
||||
- Instant Contiki
|
||||
- Dev environment
|
||||
- Whole VM
|
||||
|
||||
# Functional
|
||||
- Separates basic system from dynamically loadable and programmable services
|
||||
- Processes
|
||||
- Event-driven kernel
|
||||
- Multi-threading supported by library
|
||||
- Hybrid OS
|
||||
- No hardware abstractions
|
||||
- Services communicate by posting kernel events
|
||||
- Refer to stack with pointer to process state
|
||||
- Each service has state in private memory space
|
||||
|
||||
![](../../img/iot-os-stack.png)
|
||||
|
||||
# Process
|
||||
- Cooperative
|
||||
- Code running sequentially with respect to other coop code
|
||||
- Pre-emptive
|
||||
- Temporarily stops cooperative code
|
||||
- Normal processes run cooperatively
|
||||
- Interrupts and real-time timers run pre-emptively
|
||||
- Higher priority
|
||||
- Programs are processes
|
||||
- Started on boot
|
||||
- When module containing process loaded
|
||||
- Processes run on timer firing or external events
|
||||
|
||||
# Timers
|
||||
- Libraries
|
||||
- Used by applications and system
|
||||
- Check for timer completion
|
||||
- Waking system from low power
|
||||
- Real-time task scheduling
|
||||
- Allows cooperation when threads sleep
|
||||
- Low power mode
|
||||
- timer and stimer
|
||||
- Simplest
|
||||
- See if time period passed
|
||||
- Need querying
|
||||
- etimer
|
||||
- Event timers
|
||||
- Scheduling
|
||||
- Uses clock time from clock module
|
||||
- struct etimer
|
||||
## Clock
|
||||
- System time starts from zero when the Contiki system starts
|
||||
- clock_time()
|
||||
- In ticks
|
||||
- clock_seconds()
|
||||
- In seconds
|
||||
- CLOCK_SECOND
|
||||
- Ticks per second
|
||||
|
||||
# Power Saving Mode
|
||||
- Kernel does not provide any power saving abstractions
|
||||
- Need to implement in application
|
||||
- To help an application decide when to power down the system
|
||||
- The event scheduler exposes the size of event queue
|
||||
- If there were not events scheduled, this information can be used to power down the processor
|
87
IOT/OS/OS.md
Normal file
87
IOT/OS/OS.md
Normal file
@ -0,0 +1,87 @@
|
||||
- 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](https://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.636.3680&rep=rep1&type=pdf)
|
||||
|
||||
# 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](https://en.wikipedia.org/wiki/Wireless_sensor_network) (WSNs), [smartdust](https://en.wikipedia.org/wiki/Smartdust), [ubiquitous computing](https://en.wikipedia.org/wiki/Ubiquitous_computing), [personal area networks](https://en.wikipedia.org/wiki/Personal_area_network), [building automation](https://en.wikipedia.org/wiki/Building_automation), and [smart meters](https://en.wikipedia.org/wiki/Smart_meter)*
|
||||
|
||||
From <[https://en.wikipedia.org/wiki/TinyOS](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
|
1
IOT/OS/README.md
Symbolic link
1
IOT/OS/README.md
Symbolic link
@ -0,0 +1 @@
|
||||
OS.md
|
BIN
img/iot-event-based.png
Normal file
BIN
img/iot-event-based.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 120 KiB |
BIN
img/iot-os-stack.png
Normal file
BIN
img/iot-os-stack.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 19 KiB |
BIN
img/iot-thread-based.png
Normal file
BIN
img/iot-thread-based.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 95 KiB |
Loading…
Reference in New Issue
Block a user