:::: MENU ::::
Posts tagged with: CMSIS-DAP

CMSIS-DAP 란?

CMSIS

Cortex Microcontroller Software Interface Standard의 약자. 즉 다양한 칩 벤더가 Cortex 시리즈의 IP를 라이센스해가면서 하드웨어 독립적인 표준화된 소프트웨어 인터페이스가 필요하게 됨.  이것은 다음을 포함한다. 스펙은 ARM에 사용자 등록을 하면 받을 수 있다. https://silver.arm.com/browse/CMSIS

  • CMSIS-CORE: provides an interface to Cortex-M0, Cortex-M3, Cortex-M4, SC000, and SC300 processors and peripheral registers
  • CMSIS-DSP: DSP library with over 60 functions in fixed-point (fractional q7, q15, q31) and single precision floating-point (32-bit) implementation
  • CMSIS-RTOS API: standardized programming interface for real-time operating systems for thread control, resource, and time management
  • CMSIS-SVD: System View Description XML files that contain the programmer’s view of a complete microcontroller system including peripherals

CMSIS-DAP

CMSIS-DAP의 DAP는 Coresight Debug Access Port의 약자이다. 구체적인 스펙은 역시 ARM에 사용자 등록을 하면 받을 수 있다. https://silver.arm.com/browse/CMSISDAP 아래 그림은 3가지 mbed모듈에 어떻게 CMSIS-DAP가 연결이 되어 있는지를 보여준다.

cmsis-dap-6

여기서 onboard interface의 기능은 다음 그림으로 설명이 된다. 즉 호스트와는 USB로 연결이 되어, Mass Storage Device 프로그래밍, CMSIS-DAP 로 디버깅, 가상 시리얼 포트를 제공한다.

onboard-if-block

mbed의 HDK에 이것이 포함이 되어서 커스텀 디자인을 지원하지만 현재는 NXP LPC1768, LPC11U24 and KL25Z  이 3가지 칩만 지원을 하고, 몇 벤더(NXP, Freescale)만 선택을 했다는…

The mbed HDK currently supports the NXP LPC1768, LPC11U24 and KL25Z. Due to an unexpectedly high demand for the HDK, we are choosing a few lead partners to work with to iron out any issues that may arise before we make it freely downloadable.

출처: http://mbed.org/handbook/mbed-HDK#mbed-onboard-interface

CMSIS-DAP firmware

중요한 것은 인터페이스 칩의 firmware인데, 이것도 위 사이트에서 다운로드가 가능하며 하드웨어 요구사항은 다음과 같다.

Hardware Requirements

The CMSIS-DAP Firmware is designed for Debug Units that fulfill the following hardware requirements:

  • Cortex-M0, Cortex-M0+, Cortex-M3, or Cortex-M4 processor-based microcontroller.
  • CPU Clock: 48MHz or higher; Microcontroller must have a SYSTICK timer.
  • RAM: 8KB or more; Flash ROM: 16KB or more.
  • Full-speed or High-speed USB Device Peripheral.
  • 7 standard I/O pins for JTAG/SWD Device Interface.
  • optional 2 I/O pins for Status LEDs.

추가자료

  • SeeedStudio의 경우는 보드에 타겟칩만 있는데, 이경우는 보드 2개를 연결해서 프로그래밍을 하기도 한다. 관련 정보
  • NXP에서 제공하는 app. note:  Porting the CMSIS-DAP debugger to the Cortex-M0 platform  

mbed 분석

mbed

mbed는 웹 기반의 컴파일러를 사용하는 보드로 2005년 ARM 사의 2엔지니어인 Simon(ARM R&D)과 Chris(ARM Support)가 “Rapid Prototyping for Microcontrollers”라는 비젼으로 시작을 했다. 이제는 오프라인 툴들로의 변환도 지원을 하고 활발한 커뮤니티를 가지고 있는데, 2007년 정도에 지금의 모습을 갖추었다고 한다[1]. 현재 NXP의 ARM CortexM3 칩인 LPC1768을 사용한 모듈과 M0기반인 LPC11U24을 사용한 버젼 그리고 올 2013년에 Freescale의 MKL25Z128VLK4을 사용한  Freedom FRDM-KL25Z 보드등 다양한 플랫폼(http://mbed.org/platforms/) 들이 있다.

mbed_pinout

Features

  • NXP LPC1768 MCU
    • High performance ARM® Cortex™-M3 Core
    • 96MHz, 32KB RAM, 512KB FLASH
    • Ethernet, USB Host/Device, 2xSPI, 2xI2C, 3xUART, CAN, 6xPWM, 6xADC, GPIO
  • Prototyping form-factor
    • 40-pin 0.1″ pitch DIP package, 54x26mm
    • 5V USB or 4.5-9V supply
    • Built-in USB drag ‘n’ drop FLASH programmer
  • mbed.org Developer Website
    • Lightweight Online Compiler
    • High level C/C++ SDK
    • Cookbook of published libraries and projects
  •  mbed회로도: http://mbed.org/media/uploads/chris/mbed-005.1.pdf

모듈의 전면에 있는 칩이 LPC1768이며, 내부에 512KB 플래시 / 32KB  램을 가지고 있으며, 핀 타입은 브레드보드에 꼽기 쉽게 2.54피치의 배수로 되어 있고 USB전원으로 동작한다. 모듈의 뒷면에는 또 다른 칩(CortexM3로 추정되며 mbed Interface라고 불린다.)과 Atmel사의 AT45DB161D 시리얼 플래시 메모리(2MB), 이더넷 PHY가 달려있다.  회로도 및 아래 그림을 보면 mbed Interface는 USB로 PC에 연결이 되어서 시리얼 플래시를 Mass Storage로 보이게 하고, 사용자가 여기에 펌웨어를 넣으면 JTAG으로 연결된 타겟( LPC1768)에 프로그래밍을 한다. Mass Storage의 파일시스템은 FAT12라고 하며, 가장 최근 파일이 프로그래밍이 된다.

mbed-internals

mbed Interface칩의 역할을 더 자세히 알려면 CMSIS-DAP를 알아야 한다.