CMSIS-DAP - 2 - RTOS
收錄於 : 關於Ameba的一百篇
前篇 : CMSIS-DAP -1 - 前言
續前篇 exam1, 這篇主要是把 RTOS 加進來.
RTOS 我們可以用 ARM DAPLink 這個來參考 :
github for DAPLink
這個其實也是 ARM RTX
RTOS 的 投影片 :
http://www.slideshare.net/JouNeo/rtos-ameba
===
移植紀錄
因為 這顆 LPC11U35, 只有 12K= 8K+2K+2K. 記憶體得有效運用.
因此可以發現, 他的 RTOS, 是最單純的那種. 也不 porting CMSIS 介面.
這次先把相關程式放入. 讓他 systick / svc / pend svc 的 handler 掛上 vector table.
System clock 是設定成 48MHz.
同時將 main_task 視為主要 kernel thread 來帶動執行.
整個程式 在 github 的 example 2.
程式說明 :
1. Reset_Handler : startup_LPC11xx.c
當 按 reset 鍵時, ARM 會從 vector table 載入, 設定 stack,
且從 reset handler 開始執行.
主要是把 data 段 從 ROM 載到 RAM, bss 段資料清空, 跳到 main 執行
做了相關 SystemInit() clock 設定後, 就跳到 main() function
3. main.c
os_sys_init_user() 開 thread 執行 main_task
os_dly_wait() : 等待, 單位 ms
4. RTOS 相關程式
5. GCC SVC :
原本 code 在 ARM 上面, 改成 GCC 格式
打算先做整套把它兜出來, 因為他的 RAM 很緊, 很難再搭架構
之後 Ameba 的 Android SDK 再把 RTX 換成 f9 microkernel 和 nuttx
PS: toolchain 太大, 傳幾次上 github 都失敗, 只好作罷... 大家可以參考前篇自己抓下來,
放在和 exam1/, exam2/ 同一層, 叫 toolchain/
PS: win cygwin 下可執行 build/ 下的 ./make-cygwin.sh
===
執行結果 :
===
Future
下一篇 : 啟動一個 timer 來 trigger 主線程
2. usb stack :
1. usb -> uart
(1) 先 直接 output message
(2) 將 Ameba 的 log uart 轉向
2. usb disk
(1) 產生一個虛擬 disk
(2) JWD 與 Ameba 溝通
(3) with Ameba flash writing
3. debug
(1) CMSIS-DSP
(2) OpenOCD - gdb
留言
張貼留言