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 파트너사




Cortex-M0는 ARM의 가장작은 Cortex processor입니다.
12,000여 게이트로 이뤄져 있으며, 기존의 8,16bit 프로세서들의 대체를 목표하고 있습니다.  가령, 터치스크린 제어기로 8051을 사용해온 고객들이 대화면 및 멀티터치의 적용시 한계에 다다른 상황을 대체할 수 있다고 합니다.








성능 및 사양 비교


ARM 프로젝터 메니져 왈:
M3가 1.25Dmips/MHz, ARM7TDMI가 0.7Dmips/MHz인것에 비해
M0가 0.9Dmips/MHz 성능을 갖고있답니다.

전력소비도 적어져서,
M3가 210uW/MHz,180nm공정의 M0는 85uW/MHz 를 소비하고,
효율은 M3:6Dmips/mW에 비해 10Dmips/mW을 갖습니다.

ARM의 첫번째 범용 MCU인 Cortex-M3보다 간단한 코어로 이뤄졌으며,
두 코어를 구체적으로 비교하면 43,000게이트를 12,000게이트로 줄였고,
하바드 구조대신 폰노이만 구조를 갖고있으며
240개의 인터럽트를 32개로, 256가지 인터럽트 우선순위를 4단계로 줄였답니다.
명령어셋은 32bit instrunction체계를 16bit instruction 쌍으로 변경하여
코드크기도 대폭 축소하였답니다.

개발툴
파트너사인 CodeRed는 GNU tools 활용으로 저렴한 개발환경을 기획하여
현재는 128K 용량제한내에서 무료사용이 가능한 개발환경을 배포한 상태입니다.


이상, 아래의 링크 기사를 요약 소개드렸고요
참고기사: http://www.electronicsweekly.com/Articles/2009/03/04/45584/arms-cortex-m0-processor-how-it-works.htm


저도 어제 처음으로 NXP사의 ARM Cortex-M0 용 평가 보드인 LPCXpresso 를 구하여 테스트를 시작하고 있습니다. 관련글
LPC1114가 들어있는 보드로 구했는데요, AVR대체품으로 적당하다는 생각이 드네요,
하지만 AVR과 ARM사이의 장벽을 넘는일은 그리 녹녹치 않아보입니다;;

기술자료: http://infocenter.arm.com/help/index.jsp


추가내용(DEC.15)
링크1: 저의 LPCXpresso 간단 사용기
링크2: BR님의 NXP의 ARM Cortex-M0 코어 칩 LPC1000시리즈와 LPC 평가보드 사용기:  $1대의 ARM Cortex-M0 MCU, NXP LPC1000 시리즈 2 ? LPCxpresso 데모 보드 사용기


+ Recent posts