rtos ameba

Post on 15-Apr-2017

357 Views

Category:

Engineering

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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 )

多⼯-1

真的需要多⼯?

* https://github.com/liuxuming/trochili

ARDUINO

setup()

loop()

多⼯-2

ISR

* https://github.com/liuxuming/trochili

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

top related