:::: MENU ::::
Posts tagged with: CMSIS

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를 알아야 한다.


Migrating from version 4.x to version 5.x

EWARM 4.x => 5.0으로 갈아 타기위한 가이드 문서입니다.

cfile27.uf.173906564D425352191FFC.pdf

소스를 그룹별로 정리를 해서 프로젝트를 만들었는데,
-. CMSIS – ARM의 CMSIS 관련 소스
-. EWARMv5.4 – CMSIS에서 지원하는 device 중 ST 라이브러리 소스
   사용하는 디바이스에 맞는 소스를 넣어준다.

– startup_stm32f10x_ld_vl.s:    for STM32 Low density Value line devices
– startup_stm32f10x_ld.s:        for STM32 Low density devices
– startup_stm32f10x_md_vl.s:  for STM32 Medium density Value line devices
– startup_stm32f10x_md.s:      for STM32 Medium density devices
– startup_stm32f10x_hd_vl.s:   for STM32 High density Value line devices
– startup_stm32f10x_hd.s:       for STM32 High density devices
– startup_stm32f10x_xl.s:        for STM32 XL density devices

– startup_stm32f10x_cl.s:        for STM32 Connectivity line devices


-. StdPeriph_Driver –  ST에서 제공하는 페리페럴 드라이버 소스, 사용하는 드라이버 만 올리면 된다.
-. USER – 이건 사용자 소스


CMSIS-Cortex Microcontroller Software Interface Standard


CMSIS – Cortex Microcontroller Software Interface Standard


CMSIS - Cortex Microcontroller Software Interface Standard Image

최근 많은 칩 벤더들이 CortexM 시리즈의 칩들을 내놓고 있습니다. 코아는 같지만 다양한 메모리 옵션과 페리페럴들로 특화된 칩들이 나오고 있죠. 다양한 칩들이 나오다보니 ARM에서 CMSIS라는 CortexM 시리즈칩들의 하드웨어를 억세스하기위한 S/W 인터페이스를 만들었네요. 이것은 벤더에 무관하게 하드웨어를 추상화 시킨 레이어 입니다. 칩 벤더들이 좀 더 쉽게 자신들의 페리페럴 인터페이스 코드를 만들 수 있겠군요. CMSIS는 약 1K정도의 코드 메모리와 10바이트 미만의 램을 필요로 하답니다.10 Bytes RAM).

ARM에서 아래 보이는 칩 벤더 및 툴 벤더와 작업을 했다는데, ABC순서군요. ^^

AtmelCode RedEnergy MicroFreescale  HitexIAR  Keil  Micrium NXP Segger STMicroelectronics Texas InstrumentsToshiba

ARM에서는 이 CMSIS를 Ethernet, SD/MMC, 디버그 인터페이스 같은 미들웨어 레이어까지 확장할 계획이라고 하니 S/W 개발자 측면에서는 점점더 개발이 쉬워지는 느낌은 있으나, 기술의 겉만 보고 핵심은 파악하지 못하는 개발자가 많이 생길 것 같은 우려도 동시에 되는 군요.