Download - Rtos ameba
RTOS - AMEBA Neo Jou
IOT 技術同好會
Search : Ameba / IoT
AMEBA
ARM ARCH
ARM
ARM CORTEX
AMEBA CPU
CPU 處理速度
cortem-M3
1.25 DMIPS/MHz
Ameba - 166MHz
DAP – DEBUG ACCESS PORT
Ameba firmware download
UART/Serial to USB
JTAG/SWD debug
Ameba
CMSIS-DAP
USB mbed disk / USB-Serial / Debug
CMSIS-DAP SETUP
Usb 轉 serial
Driver : ARM mbed serial driver :
https://developer.mbed.org/handbook/Windows-serial-configuration
Usb disk – firmware CMSIS-DAP
DAP Link : https://github.com/mbedmicro/DAPLink
OpenOCD + CMSIS-DAP
AMEBA - PROS
相對於⼀般開發板
不⽤另外買 JTAG , 有 ARM CMSIS-DAP debug
有 wifi
Clock ⾼ , 速度快
省電
空氣盒⼦
AMEBA
TOPICS
⼯商時間
RTOS
Why RTOS
Environment – Arduino / Eclipse – open source
Micro Kernel
memory
schedule
IPC
Future
WHY RTOS
Linux v.s. RTOS
Memory
Jitter / response time – audio
Real time
No-OS v.s. RTOS
擴充⽀援 / 多⼯
即時 - REAL TIME
deadline : hard / soft
Linux : RTOS ?
kernel 非搶佔, user 權限⾼也無法搶佔
時間計算/限制機制
改良
重改 linux - PREEMPT_RT
dual kernel - 替換底層 - Xenomai ( 底層⽤ Nucleus )
ARDUINO
setup()
loop()
ARM MBED TICKER
https://developer.mbed.org/handbook/Ticker
TIMER CONS
HW timer 有限
SW timer : 延遲
No Preemptive / context switch ?
starvation
多⼯ - 3
multi-tasks
多⼯ - 3
⼯作 Task 程式執⾏最⼩單位?
Process =>Thread
Unix -> Mach
第⼀代 micro kernel
Mac OSX
THREAD
TOPICS
⼯商時間
RTOS
Why RTOS
Environment – arduino / eclipse
Micro Kernel
memory
schedule
IPC
Future
WHY ARDUINO
• Prototype -> 量產 / ardupilot
ARDUINO
http://njiot.blogspot.tw/2016/03/arduino-ameba-100-rtos-1-5100.html
板⼦管理員
ARDUINO
http://njiot.blogspot.tw/2016/03/arduino-ameba-100-rtos-1-5100.html
板卡選擇
ARDUINO 設定檔C:\Users\neo_jou\AppData\Local\Arduino15\packages\njiot\hardware\ameba\1.2.1
Platform.txt
Gcc
Compiler / link options
ARDUINO
ECLIPSE + QEMU
http://njiot.blogspot.tw/2016/07/qemu-arm-gnu-arm-eclipse.html
TOPICS
⼯商時間
RTOS
Why RTOS
Environment – arduino / eclipse
Micro Kernel
memory
schedule
IPC
Future
微核⼼
Memory
Thread
IPC
JIM HUANG / JSERV
Embedded system
RTOS
https://github.com/neojou/mini-arm-os/tree/master/07-Threads/Threads
TOPICS
⼯商時間
RTOS
Why RTOS
Environment – arduino / eclipse
Micro Kernel
memory
schedule
IPC
Future
TEXT / DATA
* Howard - HyperC OS * Linker script - http://njiot.blogspot.tw/2016/03/arduino-ameba-100-textdatabssheapstack.html
MEMORY
C: malloc / free
sbrk()
linker script
MALLOC
RLX8195A
C:\Users\neo_jou\AppData\Local\Arduino15\packages\njiot\hardware\ameba\1.2.1\variants\arduino_ameba\linker_scripts\gcc
TOPICS
⼯商時間
RTOS
Why RTOS
Environment – arduino / eclipse
Micro Kernel
memory
schedule
IPC
Future
REGISTERS
AAPCS
Procedure Call Standard for ARM Architecture
VECTOR TABLE
HANDLER
privileged
thread / handler
handler only have privileged mode
AUTO PUSH / POP
Thread mode -> Handler mode
EXC_RETURN
Exception : thread -> handler
LR : EXC_RETURN
ARDUINO SCHEDULER
和 mini-arm-os / RTX 很像
比 timer 優點 :
TCB : Task control block
各⾃有 stack
ARDUINO SCHEDULR
NUM_REGS=10, https://github.com/arduino-libraries/Scheduler/blob/master/src/Scheduler.cpp
SWITCH- SYSTICK
SWITCH - PENDSVC
TODO
Thread Priority
Scheduling
Round robin
…
優先權錯逆
priority inversion
realtime - deadline
優先權錯逆
⽕星探測計畫
http://wiki.csie.ncku.edu.tw/embedded/priority-inversion-on-Mars.pdf
TOPICS
⼯商時間
RTOS
Why RTOS
Environment – arduino / eclipse
Micro Kernel
memory
schedule
IPC
Future
IPC
Inter Process Communication
L4 kernel - 第⼆代微核⼼重點
f9-kernel: http://wiki.csie.ncku.edu.tw/embedded/f9-kernel
L4
http://www.slideshare.net/microkerneldude/from-l3-to-sel4-what-have-we-learnt-in-20-years-l4
https://www.youtube.com/watch?v=RdoaFc5-1Rk
RTX ON AMEBA
RTX
Keil ARM
CMSIS API
IPC
CMSIS-RTOS
Cortex Microcontroller Software Interface Standard
SHARE MEMORY
No thread safe
flag
interrupt write status
thread polling
CRITICAL SECTION
atomic
spinlock / mutex / semaphore 差異?
IPC -⼩訊息傳遞
signal events
mutex
semaphore
IPC - ⼤訊息傳遞
message queue
mail queue
TOPICS
⼯商時間
RTOS
Why RTOS
Environment – arduino / eclipse
Micro Kernel
memory
schedule
IPC
Future
複雜
drivers
wifi, usb, …
network protocol
TCP/IP
SSL / TLS
MQTT / HTTP
….
MBED OS
LoRa : https://docs.mbed.com/docs/lora-with-mbed/en/latest/intro-to-lora/
POWER
Tickless kernel
Busy waiting 耗電
WFI / WFE
中斷完成時直接休眠, 不回 Thread, 省下 stack push/pop
Systick or external sleep clock (32K)
ZEPHYR 和風
https://www.zephyrproject.org/doc/subsystems/power_management.html
安全
資料安全
資訊隱藏與封裝 (C++)
資訊最⼩化公開原則
各⾃ stack
系統安全 : security boot
網路安全 : SSL/TLS
安全- 硬體設計
Ameba Cortex-M3 :
MPU -> mbed uvisor
hardware crypto engine
加解密, 簽章 : AES / SHA-2
TrustZone : v8m : SAU
stack limit
FUTURE
Benchmark
ARM mbed / Arduino
CMSIS++ / mbed minar
NUTTX : ardupilot / cortex-m4
Zephyr : Linux ⼩弟
dynamic linking / module loading
hypervisor
THANK YOU
Q & A