배너
닫기

테크노트

배너

Nuvoton社의 32비트 RISC Cortex-M0 (Ⅰ) … 시작하기

  • 등록 2012.02.21 11:00:49
URL복사

Nuvoton社의32비트
RISC Cortex-M0 시작하기(I)


PAT-DAT-D7NM Target(이하 D7NM)은 누보톤(Nuvoton)社의 ARM 32Bit RISC Core CortexTM-M0를 효율적으로 익히기 위
해 회로를 설계하고 타깃 보드, 샘플 프로그램을 기획 제작한 Cortex-M0 임베디드 보드이다. D7NM은 누보톤(Nuvoton.com) NuMicro 시리즈 중 하나인 M052LAN이 사용됐으며 보드에서 다른 목적으로 확장할 수 있도록 LQFP48 핀의 대부분을 2.54mm 헤더 핀에 연결했다. 샘플 코드를 이용, 타깃을 가지고 32비트 RISC Cortex-M0를 실습해본다.

김형태 (conan@FirmwareBank.com), 펌웨어뱅크





누보톤 NuMicro M051 시리즈(표 1)는 32Bit RISC CortexTM-M0 Core를 사용하여 만든 고성능 마이크로프로세서이다.
칩 밴드에서 제작된 패키지는 크게 두 가지이며 외관과 핀 배치가 동일하므로 프로젝트에서 컴파일되고 기계어 코드를 생성하여 그것보다 큰 플래시메모리 크기의칩파트를선택하면된다.
개발 중에 메모리 크기가 증가할 경우, PCB(Printed Circuit Board) 풋프린트 수정 없이 M051 시리즈의 더 큰
메모리로 변경하면 된다. 임베디드 개 발 시, 고급 언어를 마이크로프로세서 에서 실행 가능한 기계어 코드로 생성 할 때 내부 RAM보다 플래시메모리 크 기에 민감해진다는 점을 감안할 경우, 유동성 있게 변경할 수 있다는 것은 대 단히 큰 장점이라고할수있다.
D7NM 보드와 미니 USB 케이블을 처음 연결하는 사용자라면 USB2Serial 드라이버를 다운받은 후 압축을 푼다. USB를 시리얼로 변환하는 IC는 Silicon Labs(www.silabs.com)社의 CP2102를 사용했다.
이 칩은 USB 드라이버가 내부 메모 리에 저장되어 있지 않으므로 다운받은 파일에서 PC의 OS에 맞는 드라이버를 선택, 설치해야 한다.
D7NM 타깃의 전기적 안정을 위해서 우선 USB 케이블의 미니 5핀 포트를 타 깃 보드에 먼저 연결하고, 직사각형 모 양의 A 타입 잭을 PC의 USB에 연결하 도록 한다.
케이블을 연결하면 USB가 자동 감지 되며, 처음에 정확하게 설치됐다면 드 라이버는 하드웨어를 연결할 때마다 묻 지 않는다. 만약 설치가 순조롭지 않다 고 판단되면 제어판에서 드라이버를 삭 제한 다음 다시 진행하고, 성공적으로 설치됐다면 압축을 푼 경로와 파일은 지워도 된다.
모든 것이 정상으로 실시됐을 경우, Window XP는“시작/제어판/시스템/ 하드웨어/장치관리자”에서 USB 디바 이스와 COM 포트 번호(기억해 두자!) 를 확인할 수 있어야 한다. 그렇지 않을 경우, 시간 낭비하지 않으려면 드라이 버를 지운 후 다시 설치해야 한다.
고급 언어를 기계어 코드로 만들어 주 는 컴파일러가 없을 경우에는 RealView MDK-ARM 컴파일러 V4.12를 설치한 다. 기계어 코드가 32KB 이내라면 무제 한 사용 가능한 무료 버전이다. 또 이미 KEIL 컴파일러가 있는 독자라도 Nu- Link 드라이버를 설치해야 New Project에서 NuMicroR M051을 선택하 여JTAG을원활히사용할수있다.



MDK412_Compiler 및 드라이버 설치


■ MDK412_Compiler/ MDK420.exe

■ D7NM_Drive/Nu-Link Driver for Keil RVMDK_V105


처음부터 C 프로그램을 만들어 프로젝트에 추가하는 것은 번잡스러우므로, 다운받은 폴더의 프로그램 항목에서 “D7NM_Code/D7NM_GPIO_UART_Q uick_Start”하위 경로에 있는 *.uvproj 프로젝트 파일을 MDK-ARM 컴파일 러에서 오픈해야 한다.
먼저 MDK-ARM 통합 환경의 메뉴 ‘ Project/Open Project...’에 서 D7NM_M051.uvproj 파일을 연다. 반 드시 프로젝트로 오픈해야 한다.
메뉴 하단의‘Select Target’메뉴에 서‘Serial Load’항목을 선택하고  이용하여 컴파일과 링 크를 실행한다(그림 4).
컴파일과 링크가 에러 없이 실행됐 다면 바이너리 코드가 만들어졌으며 포팅 준비가 끝난 것이다. 정상적으로 다 실행됐다면 통합 개발환경 하단 Output Window를 통해 그림 5를 확 인할 수 있다.
여기까지가 최종 목적인 D7NM_ M051.bin의 바이너리 코드를 생성한 것이다. 이것을 타깃에 이식하고 리셋 버튼을 눌러 실행하면, 아직 코드를 분 석하지는 않았지만 작성한 소스대로 동 작된다.
고급언어가 바이너리로 만들어질 때 컴파일과 링크 후 Warning은 묵인할
수 있지만 Error일 경우에는 생성되지 않는다.







바이너리 Code 생성 폴더위치

■ Project 폴더/OBJ/D7NM_ M051.bin

ISP(In System Program)는 M051의 LDROM 영역에 2K바이트 크기의 부트 코드를 미리 올려놓고 리셋한 후 LDROM부터 부팅하도록 하는 방법이 다. 부트 코드는 LDROM의 초기 시작 에서 시리얼 통신으로부터 주어진 명령 어가 입력되면 APROM의 플래시 영역 일부 또는 전부를 지우고 시리얼 통신 으로 들어온 바이너리 코드를 다시 APROM에 기록하게 해주는 응용 프로 그램이다.
Cortex-M0의 MPU는, 리셋 후 시리얼 포트를 통 해 특별한 명령어 가 입력되지 않을 경우 별도의 업데 이트를 실행하지 않고 LDROM에서 APROM 영역으로 이동하여 실행을 계속한다. 전부 순 식간에 일어나므로 사용자는 ISP가 실 행되는지 모르고 애플리케이션 영 역만 실행된다고 착각하게 된다.
PC에서 바이너리 코드를 보내기 위 해서는 호환성 있는 명령어와 코드를 적절하게 제어해 주어야 하는데, 이 때 사용하는 프로그램이 누보톤社에서 만 든“NuMicro ISP Program Tool”이라 는 소프트웨어이다. 표 4를 참조하여 설치한 후 익혀보자. 기본 설치 경로는“Program Files/ Nuvoton Tools/Nuvoton NuMicro ISP Programming Tool, vx.xx/NuMicro ISP Programming Tool.exe”이며 윈도 우의‘시작/Program/Nuvoton Tools’ 의 항목에 을 실행해도된다.


 

ISP 프로그램 실행

■ Nuvoton NuMicro ISP Programming Tool( )

ISP 프로그램을 실행하고 PC 제어판 에서 확인된 COM 포트로 그림 5의 좌 측 상단에 있는‘Connection Type’에 서 COM 포트와 번호를 먼저 선택한다. 다음에‘Connection Check/Connect’ 를 누르고“Detecting...”이라는 메시지로 바뀔 때 타깃 보드의 리셋을 누르면 모든 것이 정상일 경우 소프트웨어와 보드는 인터페이스 상태로 된다.
연결됐을 경우 바이너리 코드를 다운 로드 할 수 있다. MDK-ARM에서 생성 된 바이너리 코드를 APROM 영역에 넣 기 위하여 경로와 파일 이름을 연결하 고 오른쪽 하단에 나타나 있는‘Start’ 를 누르면 APROM 영역으로 다운로드 가 완료된다.
한번 선택된 경로는 다시 바꾸지 않 아도 되므로 이후에는 소스 코드만 변 경하고 컴파일한 다음, 경로 그대로 특 별한 설정 없이 로딩하면 된다.





APROM File Name


■ D7NM_Code/D7NM_GPIO_ UART_Quick_Start/OBJ/D7 NM_M051.bin

그림 6은 로딩하기 위한 기본적인 설 정이며 중요한 사항은‘APROM’의 바 이너리코드가 있는 경로가 될 것이다. 하단에 있는‘Program/Config’항목 은 클록 소스를 선택하는 것으로, M051 의 Config 레지스터와 연관이 있다. 혹 시 변경하고 싶다면 타깃 보드에 12MHz 크리스털이 없을 경우 그림 7 과 같이‘Internal...22MHz’를 선택해 야 한다.
당연한 말이지만, 없는 상태에서 외 부 클록을 선택할 경우에는 타깃 동작 이 실행되지 않는다. 또한 D7NM 보드 처럼 3.3V 동작 시에는 그 이하의 값으 로 BOD(Brown Out Detect) 전압을 설 정해야 한다.
다음 달에는 누보톤社의 Cortex-M0 내부와 타깃 회로에 대해 설명할 예정 이므로 예습하고자 하는 기술자는 데이 터시트의 시스템, GPIO 부분을 읽고 타 깃보드를 준비하기 바란다.









배너










주요파트너/추천기업