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 파트너사
제경우 AVR시리즈는 써봤는데 ARM은 처음입니다.
이제부터 ARM의 8,16bit MCU 대체품으로 설계된 32bit Cortex-M0코어가 적용된 NXP사의 LPC1114 공부를 시작하려합니다.

LPCXpresso 라고 불리는 본 개발플래폼은  3개의 회사(NXP, Embedded ARtist, CodeRed)가 파트너가되어 만들었는데요,
무슨, 삼총사인가요?  아마도 유럽 쪽 회사들끼리 뭉친것 같습니다.

정리하면,  NXP사에서 칩을,
Embedded Artist사는 테스트 보드를,
CodeRed사는 개발 IDE를 맡았습니다.

몇가지 정리해 보면,

1. LPCXpresso EVB(Evaluation Board)
약 4만원짜리(해외에선 '$30이하'라고 광고하더군요) 평가보드를 구입하면,  JTAG/SWD 인터페이스 디버깅 장비( LPC3154 칩 내장)와  테스트용 MUC만 달랑 달린 테스트 보드 일체형의 보드가 생깁니다. 정말 좋은건, 필요시 반을 뚜욱~ 잘라서 디버깅 전용장비로 사용할 수 있다는 점과, MCU보드측에는 외부 확장 보드 없이도 약간의 프로토타입 회로를 추가할 수 있는 부분을 제공하는 여백의 미까지 갖쳤다는 것입니다.

JTAG 디버거(LPC Link라고 불림)는 현재 아래와 같은 칩들을 지원합니다.
LPC11xx: All products supported
LPC13xx: All products supported
LPC17xx: LPC1751 LPC1752 LPC1754 LPC17561 LPC17581 LPC1764 LPC17651 LPC17661 LPC17671 LPC17681
LPC2xxx: LPC2109 LPC2134 LPC2142 LPC2362 LPC2929
LPC3xxx: LPC3130 LPC3250


사진1. JTAG 디버거 및 평가보드 일체형 개발보드


그림1. 테스트보드 여러 이용법


개발을 하려면 칩(개발보드)과 더불어 개발환경(컴파일러 , IDE 등)이 필요한데요, 위의 삼총사님들이 다 준비해 놨습니다.  128KB이내의 작은 코드만 필요하신경우 무료로 모든 기능의 사용이 가능한 개발환경이 그냥 생깁니다.
(참고로, 조금 큰 용량이 필요하신분들도 256KB까지는 256$, 512KB까지는 512$만 투자하면 된답니다.)


1. LPCXpresso IDE 개발환경 설치

CodeRed 사의 LPCXPresso 개발환경을 설치합니다.
이때 USB드라이버 및 디버깅 보드 드라이버 등등도 함께 설치됩니다.
CodeRed사에 등록하고  128KB내에서 자유로운 사용이 가능한 라이센스를 받았습니다.
조금 번거롭지만, 용량제한말고는 제약이 없고, JTAG 디버깅 기능까지 지원하므로 기분좋습니다.

2. NXP 포럼가입
AVR과 달리 카페나 국내 기술자료가 거의 없는것 같습니다.
다른 회사 제품들은 M3급 이상의 제품이 많이 나와서 카페도 있고 왕성한 커뮤니티가 이뤄지고 있는데요
NXP제품은 전무;;; 하네요..  좋은 사이트 있으면 알려주시길
따라서, 방법은 한가지뿐이네요  NXP사 포럼에 가입하여 안되는 영어지만 눈팅이라도 하면서 배우는 수밖에 없는듯 합니다.
물론 비장의 무기인 유저 메뉴얼이 있으니, 레지스터만 섭렵하면 되지 않을까 하는 생각이 듭니다.  아닐까요?

하지만, 평가보드 구입후 개발환경 설치하면서 처음시작하는 사람을 위한 안내 자료가 있는데요
정작 가장 중요하다고 생각되는 User Manual이 잘 안보이네요.. 
(후기.알고보니 IDE 우측 하단에 링크버튼을 누르면 자료모음링크에 나오네요)
레지스터 섭렵을 하려면 필수 자료아닐까합니다.  열심히 찾아서 아래에 첨부합니다.


첨부자료:

LPCXpresso 플래폼 소개 자료 ( 테스트보드, 개발환경 등)


LPC11xx 기술문서 요약형


LPC11xx 수백페이지짜리 진짜 기술문서(User Manual)







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