ARM Cortex-M0 코어 LPCXpresso 테스트보드 개발환경을 열어보니 막강한 이클립스 기반 IDE를 보고 감탄을 하는것도 잠깐,,, 예제를 열어보고 소스 분석을 해보려하자 당황스럽네요

더이상 main()이 메인이 아이더군요,  이보다 먼저 SystemInit() 가 수행되어 칩세팅을 하는데, 이 파일은 CMSIS library에 포함되어있습니다. 기타 레지스터 설정이나 장치 제어명령도(LED 한개 On/off하는것 까지도) 모두 전용 함수를 제공하는듯 합니다. (물론 CMSIS Libray 사용할 경우에 얘기겠죠, 마치 안드로이드 프로그래밍 하는 분위기입니다.)

AVR펌웨어를 만들때는 대게 8bit 레지스터에 비트마스킹하여 비트 ON/OFF/Toggle 하는정도로 Peripherals(타이머,UART,ADC etc) 제어하는 방식을 주로 사용했었는데요, LPC는 32bit MCU라서 그런지 효율적? 접근을 위해 2~3단계(매크로까지치면 그이상)는 랩핑된 함수로 Peripherals 설정을 하는것 같습니다.  물론 특정 주소에 직접 값을 기입하는것도 가능하겠지만, 칩제조사(silicon vendor)와 무관하고, 다른 ARM core에서도 호환이 가능한 장치 설정 인터페이스를 이용(표준화)하여, 코드 호환성을 높인다는 전략에 따른듯 합니다.  이를 CMSIS라고 부르더군요.  역시나 8bit MCU와 32bit MCU 사이는  장벽이 있네요.  새로운일을 시도할때는 어렵고 쉽고를 떠나서 평소와 다른 새로운것이 나오면 멈칫 진행이 멈쳐버립니다. 정작 중요한건 이로 인해 지체되는 시간을 보상할 정도의 메리트가 있는지? 아닌가 합니다.

어쨌든 좋은 취지로 만들어진것 같으니 일단 대충이라도 어떤것인지 알고넘어가야 하겠습니다.
근데, 진짜문제는 처음사용자용 안내문 링크에도 비중있게 나와있지않은 내용이라,,  이곳 저곳 다니며 자료를 모아야 했습니다. 관련자료를 모아서 여기에 모아두겠습니다.




1.2008년 11월에 발표를 했나보네요
 발표기사 http://www.arm.com/about/newsroom/23722.php

2. 개발환경에 기본 포함된 CMSIS library 내부 폴더에 도움말 도움문서가 숨어? 있습니다.
(도움문서 분량을 보니, 아직도 개발중이라고 해야할듯 합니다. 버젼마다 폴더명이 좀 다르겠네요 제경우 LPC11xx입니다. )
PC폴더 위치예: lpcxpresso_3.5/Examples/NXP/LPC1000/LPC11xx/CMSISv1p30_LPC11xx/CMSISv1p30_LPC11xx/docs/CMSIS_Core.htm

3. CMSIS 기술소개 동영상 및 문서
http://www.doulos.com/knowhow/arm/CMSIS/index.php
http://www.onarm.com/

4.CodeRed사 LPCXpresso IDE 서포트페이지
http://support.code-red-tech.com/CodeRedWiki/Support4CMSIS


그림2. CMSIS 파트너사

+ Recent posts