CMSIS-DAP - 1


收錄於 : 關於Ameba的一百篇


CMSIS


CMSIS 是  Cortex Microcontroller Software Interface Standard  的縮寫

意指 使用 ARM cortex-M MCU 時, ARM 為了晶片商/系統開發商 方便,

所定的 軟體 接口標準.





DAP 是 Coresight Debug Access Port

CMSIS-DAP 是 ARM 提供的一個標準的介面, 可以透過 usb - CMSIS-DAP 

來 debug cortex-M 處理器



使用這個, 可以有三個好處

    1. 作為 Ameba 從 usb download firmware 到 Ameba 上的 flash

    2. 可用作 uart/serial 轉 usb 到 PC 的工具

    3. 可以當作 JTAG/SWD debug Ameba 的工具




所以可以省下 JLINK/Multi-ICE 和 usb-serial 轉接線 的開發成本



而 ARM 所提供的 DAP firmware, 可以參考這篇 : 



ARM mbed 文中介紹兩個 chip solution 

    (1) NXP LPC11U35

    (2) Freescale KL25Z

Ameba 是使用 NXP 的 LPC11U35


===

這篇主要以 Ameba 開發板為例, 
介紹如何寫 LPC11U35 的 firmware, 進而開發 CMSIS-DAP

DAP 的作法, 也可以參考


    DAPLink


====

前置工作: 


1. 保護還原作法: 

 在製作前, 用 Ameba 板 更換 DAP firmware  的方式可以參考這篇


 可以先把原本 firmware.bin 備份, 避免自己寫的 DAP firmware 寫錯時,  
 還可以重新燒回

   這個 DAP 更換方法,  NXP 稱作 USB ISP mode


 2. LPC11U35 datasheet 

在開發前, 首先我們要了解 LPC11U35 . 可以下載他的 datasheet 來開


可以知道他是一個 cortex-M0 的 CPU , ARM 的 architecture 是 v6 而不是 v7 喔. 

所用的詳細編號是這顆


    - 64K on-chip flash
    - 12K on-chip SRAM
    - clock : 50MHz

3. HDK 

    當初 Ameba 開發板在製作時, 是參考 NXP 的 LPC1768 , 所以所接線路是類似的作法. 


    Ameba 板子是兩年前開發的, 所以參考的是底下這份. 




    上面有三個 LED : 

       LED_MSD :  pin7

       LED_HID: pin12

      LED_UART : pin21 

    這次我們第一個範例, 就是來把 LED 點亮. 
   
    看線路圖, 要注意, 他接線是 3.3V 反向. 所以 GPIO 要填 0 才會亮. 

    (太久連自己一開始寫這範例都忘了.. )

     這是因為平常腳位如果是 low 的話, 會浪費電 (current leakage)

     所以反向平常不開 LED 維持 high. 

4.  下載相對應的 toolchain

       個人偏好使用這套 ARM gcc , 目前 2016 Q2 出到 5.4 版

            下載 from launchpad 

5. 程式 : github

     - cd exam1/build
     - mkdir output
     - make

     會產生 firmware.bin, 再用上述置換 DAP firmware 的方式來做即可. 

    (1) linker script : ld/lpc11u35.ld

    (2) Makefile 

    (3) Reset_Handler : src/startup_LPC11xx.c

    (4) system init : src/system_LPC11Uxx.c

    (5) gpio : gpio.c 

          須注意腳位, 要參考 datasheet. 

          譬如 LED_MSD 是 pin7, 但 GPIO 是對應到 20, 所以在 gpio.c 要設成 20
           


   (6) 須注意 LPC firmware 需要做 checksum 

      目前 windows 的 checksum 可以從 LPC Xpresso 的 IDE 程式找出來. 

       MacOS 的方法, 本想找個同樣的程式, 發現這篇, 可以修改程式來自動計算

      實驗後可行. 在 MacOS 燒錄時, 一個方式是用 dd 指令, 另一個簡便的方式是, 
      不用刪除原本 firmware.bin 檔, 只要覆蓋就可以了

      $cp -f firmware.bin /Volumes/CRP\ DISABLD/firmware.bin 
      
      編譯時, 可執行 ./make-mac.sh 

      ( 明天同步把 windows 也修正好 )


置換後, reset, 會發現 "CRP DISABLE" 名稱的 usb disk 會消失, 表示 firmware 有正確 load 執行. 
( 如果 checksum 沒做, firmware 無法 正確載入, 就還會維持是 "CRP DISABLE" usb disk, ) 
這個例子就可以看到 LED 有亮起來. 





       

       




留言

熱門文章