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 執行


2. app_start.c

做了相關 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





       





留言

熱門文章