NEWTC SAM7 강좌 - 상

SAM은 Smart ARM Microcontroller의 약자로 ATMEL 사에서 플래시 메모리를 포함하여 ARM 프로세서를 간단하게 사용할 수 있도록 만든 마이크로컨트롤러이다. 특히 AT91SAM7S64(256)은 시스템 버스가 핀으로 나와 있지 않기 때문에 핀 수가 작아, 작은 시스템을 구성하는데 적합하게 되어 있다. 이번 연재에서는 SAM7S의 개발환경에서부터 WJTAG를 이용한 디버깅과 프로그램 다운로드 하는 방법, 포트제어 및 printf 사용 방법과 타이머 사용 방법을 개괄적으로 살펴보고자 한다. 
글: 류대우 / ㈜뉴티씨(NEWTC) www.NewTC.co.kr
연재 차례
1. SAM7S 개발환경 및 I프로그램 설치, 사용방법과 다운로드 방법
2. 포트제어 및 printf를 사용하는 방법과 타이머 사용하는 방법
ATMEL SAM7 소개
ATMEL SAM7 소개
AT91SAM7S64(256)은 내부에 ARM7TDMI-S 코어를 사용하고 있다. 내부 장치로는 플래시 메모리 64(256)Kbyte, SRAM 16(64)Kbyte를 내장하고 있으며 8채널 ADC와 USART, USB 등의 주변 장치들이 내장되어 있다.
NEWTC SAM7S 개발 모듈/보드 소개
▶ ARM7TDMI 코어 AT91SAM7S64(256) 마이크로 컨트롤러 모듈과 개발보드
▶ 1줄짜리 2.54 Header Pin이 양쪽으로 22PIN씩 배치되어 있음
▶ PA0-PA7, PA8-15, PA24-31, ADC Input이 10핀 Box 커넥터로 연결되어 있음
▶ RS-232 통신 포트(Debug 포트, UART0), UART 포트(UART1)
▶ USB 커넥터, 3.3V 레귤레이터, Reset S/W, 전원 LED 내장
▶ 크기 : 57mm×32mm
H/W 개발환경
(그림1.jpg)
ATMEL에서는 SAM7 개발환경을 위하여 SAM-BA(SAM Boot-Assistant)를 제공하고 있다. SAM-BA를 이용하면 별도의 장비 없이 USB 케이블 또는 시리얼 케이블을 이용하여 프로그램을 다운로드 할 수 있다. 하지만 SAM-BA를 이용할 경우 부트 로더를 올리는 번거로운 작업이 필요하다. JTAG 장비를 이용하면 프로그램 다운로드뿐만 아니라 디버깅까지도 가능하기 때문에 개발하기가 편리하다.
SAM-BA를 이용한 다운로드 방법
장비 : mini USB 케이블 또는 시리얼 케이블(SE-3T9)
(그림2.jpg)
SAM-BA를 사용하려면 내부 ROM에 기록되어 있는 부트 로더를 프로그램 메모리로 복사해야 한다. PA0, PA1, PA2 포트 입력이 High이고 TST 스위치가 ON 상태로 되어있는 상태에서 전원을 인가해야 하며 이 상태로 10초 동안 기다리면 부트 로더가 자동으로 프로그램 메모리로 복사 된다. 그 후에 Reset을 누르거나 전원을 껐다가 다시 인가하면 SAM-BA를 사용할 수 있는 모드로 들어가게 된다.
(그림3.jpg)
USB 케이블 또는 시리얼 케이블을 연결한 후 SAM-BA 프로그램을 통하여 다운로드할 수 있다. 자세한 방법은 'SAM7 강좌2. SAM-BA를 이용한 프로그램 다운로드'를 참고.

(그림4.jpg)
SM-WJTAG 을 이용하여 다운로드 하는 방법
필요한 장비 : SM-WJTAG



(그림5.jpg)
SM-WJTAG 장비는 Wiggler 호환 JTAG 장비로 H-JTAG(http://www.hjtag.com)이라는 프로그램을 이용하여 사용하게 된다.


(그림6.jpg)





(그림7.jpg)
HEX 파일 또는 BIN 파일을 다운로드 할 경우 H-JTAG 프로그램에서 제공하는 H_Flasher라는 프로그램을 이용한다.
SM-WJTAG을 이용하여 디버깅 하는 방법
SM-WJTAG을 이용할 경우 컴파일러에서 지원하는 디버깅 툴을 이용하여 디버깅을 할 수 있다. 이 경우 코드를 따라 가면서 디버깅을 할 수 있기 때문에 개발이 더 편리한 장점이 있다.

(그림8.jpg)

(그림9.jpg)

S/W 개발 환경
마이크로컨트롤러를 개발하기 위해서는 S/W 개발이 필수적이다. ARM의 컴파일러는 IAR 컴파일러와 ADS가 대표적인 컴파일러이며 Win ARM과 같은 무료로 사용할 수 있는 컴파일러가 있다.
본 강좌는 IAR 컴파일러를 이용한 강좌를 제공한다(추후 다른 컴파일러도 지원할 예정). 컴파일러를 이용하여 프로그램을 작성한 후 시리얼 케이블 또는 USB 케이블을 이용하여 다운로드 하거나 JTAG 장비를 이용하여 다운로드 후 디버깅을 할 수 있다.
컴파일러
ARM을 개발하기 위한 통합개발환경(IDE)으로 IAR 컴파일러와 ADS가 있다. IAR 컴파일러로 프로그램을 작성한 것으로 컴파일 그리고 디버깅이 가능하다.
(그림10.jpg)
자세한 컴파일러의 사용법은 'SAM7 강좌1. 개발환경 구축 및 컴파일러 사용법'과 제공되는 예제파일을 참고.
프로그램 설치
본 강좌에서는 SAM7S 컨트롤러를 사용하기 위한 프로그램 설치 및 기본적인 사용방법에 관하여 설명하겠다. 컴파일러는 IAR 5.20 을 기준으로 작성하였으며 디버거는 SM-WJTAG (Wiggler 호환 JTAG 장비)를 기준으로 설명하겠다. SAM-ICE를 사용하시는 경우 차이점을 명시하였으니 참고 바람.
IAR 컴파일러 설치
IAR사(http://www.iar.com/) 에서는 32Kbyte 코드제한을 갖는 ARM 컴파일러를 무료로 쓸 수 있도록 공개하고 있다. NEWTC에서는 IAR 사에서 제공하는 32Kbyte 코드 제한을 갖는 컴파일러를 배포하고 사용할 수 있도록 허가 받아 제공하고 있다. IAR사 홈페이지(http://www.iar.com) 또는 NEWTC 홈페이지(http://www.NewTC.co.kr)의 자료실에서 IAR 컴파일러를 다운 받는다. IAR사 홈페이지에서 다운받을 경우 라이센스를 같이 받으셔야 한다. NEWTC 홈페이지에서 받으실 경우 라이센스를 iar@newtc.co.kr로 요청하면 발송해 줄 것이다. NEWTC 킷트 제품을 구매하시면, IAR의 EwARM 데모컴파일러용  라이센스가 CD안에 텍스트파일로 포함되어 있다.
(그림11.jpg)
Install IAR Embedded Workbench 를 선택하여 설치한다. 설치 중에 라이센스 번호와 KEY는 EwARM_License.txt 파일에 저장되어 있다. 홈페이지에서 라이센스를 받으실 경우 다운받는 과정에서 확인할 수 있다. 
 H-JTAG 프로그램 설치
SM-WJTAG (Wiggler 호환 JTAG 장비)를 사용할 경우 H-JTAG을 설치해야 한다. H-JTAG 홈페이지(http://www.hjtag.com/)를 방문하면 프로그램을 다운받을 수 있다. SM-WJTAG 장비를 사용하지 않을 경우 설치할 필요가 없다. H-JTAG 프로그램은 IAR이나 ADS에서 SM-WJTAG 을 사용할 수 있도록 지원하며 자체적으로 H-Flasher라는 프로그램을 가지고 내부 프로그램 메모리에 프로그램을 쓸 수 있다.
(그림12.jpg)
※ S※ SAM-ICE를 사용할 경우 SAM-ICE 전용 프로그램을 설치한다.
예제 파일 불러오기 & 컴파일 & 디버깅하기
IAR 5.20을 설치하면 설치 폴더에 기본적인 예제 파일이 들어 있다.
NEWTC에서는 NEWTC 개발보드에 맞게 예제 파일을 제공하고 있다.
NEWTC 홈페이지 자료실에 SM-SAM7S 관련 자료에서 다운을 받을 수 있다. 예제파일을 다운 받은 후 압축을 풀어 하드디스크에 저장한다. 폴더 명에는 한글 또는 공백 문자가 들어가지 않게 하는 것이 좋다.
예제파일은 아래와 같은 구조로 되어 있다.
(그림13.jpg)
'at91lib' 폴더는 SAM7 을 사용하는데 필요한 라이브러리가 저장되어 있다.
'at91sam7s-ek' 폴더는 프로젝트를 저장하는 폴더다. 새로운 프로젝트를 생성할 경우 본 폴더에 생성하길 바란다. 제공되는 예제 프로젝트는 'getting-startedproject'다. 프로젝트 생성은 복잡하기 때문에 제공되는 예제 파일을 복사하여 응용하길 권장한다.
Step 1. IAR 컴파일러를 실행하시면 아래와 같이 창이 뜬다.
(그림14.jpg)
Step 2.  File > Open > Workspace 를 클릭하여 'getting-started-project' 폴더에 들어있는 'getting-started-project.eww' 를 선택..
Step 3. 프로젝트를 열면 아래와 같은 창이 나타나게 된다. 프로그램은 크게 3부분으로 구성되어 있다. 좌측의 Workspace와 우측의 Editor 화면 아래쪽에 Output Message로 나눠져 있다.
(그림15.jpg)
Step 4. Workspace 의 위쪽에 보면 at91sam7sXX_XXX를 볼 수 있다. 사용하는SAM7의 종류에 따라 선택을 하면 된다.
(마지막의 sram 과 flash 는 프로그램을 sram에 저장시킬 것인지 flash 메모리에 저장시킬 것인지 선택하는 것. 디버깅을 하는 과정에서는 sram을 선택하여 사용하고 최종적으로 칩에 구울 때 flash를 선택하여 컴파일 하면 된다. SM-WJTAG의 경우 flash를 사용할 경우 디버거 모드로 들어갈 때 에러가 발생한다.)
Step 5. 처음 컴파일 하는 경우 Project > Rebuild All 을 선택하여 전체 프로젝트를 컴파일 한다. 에러가 발생했다면 컴파일러 버전과 프로젝트 경로를 확인할 것.
 프로젝트 폴더와 라이브러리 경로가 앞서 설명한 것처럼 되어 있어야 한다.
※ 디버거를 사용하지 않을 경우 다음 강좌를 참고 하시기 바란다.
Step 6. 컴파일이 정상적으로 되었다면 디버거를 실행해야 한다. 먼저 디버거를 설정 하겠다. Workspace 창에서 최상위에 있는 'at91sam7s-ek'를 선택하고 Project > Option 을 선택한다. Workspace에서 다른 폴더를 선택하고 실행할 경우 설정이 안될 수 있다.
Step 7. Option 창이 뜨면 Category에서 Debugger를 선택한다.
기본 설정으로 J-Link/JTracer가 되어 있는데 SAM-ICE를 사용할 경우 이 설정을 그대로 사용하면 된다. SM-WJTAG을 사용하는 경우 아래와 같이 RDI를 선택한다. 
(그림16.jpg)
Step 8. 다음으로 Category에서 RDI를 선택한다. RDI에서 드라이버를 H-JTAG으로 RDI 드라이버를 설정해야 한다. 찾기를 선택하여 'H-JTAG.dll' 파일의 경로를 찾고 OK 버튼을 클릭한다. 일반적인 경우 'C:Program FilesH-JTAGHJTAG.dll'이다.

(그림17.jpg)
Step 9. 하드웨어를 연결하여 디버깅 할 수 있도록 한다. SM-WJTAG 장비를 PC 프린터 포트에 연결하고 보드의 JTAG 커넥터에 연결한다. SAM7보드에 전원을 공급하고 H-JTAG 프로그램을 실행 시킨다. 'Detect Target' 을 실행하여 아래 그림과 같이 뜬다면 하드웨어가 정상적으로 연결된 것이다.
(그림18.jpg)
※ 하드웨어가 정상적으로 연결되지 않았거나 문제가 있을 경우 UNKNOWN으로 뜨게 된다.

Step 10. 다음으로 Project > Download and Debug를 선택하여 디버거를 실행 시킨다. 단축키 Ctrl+D 로 실행할 수 있다.
Step 11. 디버거 창이 뜨면 다운로드가 정상적으로 되어 디버깅 모드로 들어간 것이다. 앞 그림에 표시되어 있는 'GO' 버튼을 클릭하면 프로그램이 실행되는 것을 볼 수 있다.
브레이크 포인트와 Step into, Step out을 이용하여 디버깅 하시면 된다.
예제파일의 경우 실행시키면 메인보드의 LED가 번갈아 가면서 깜빡이고 모듈의 LED도 깜빡이게 된다. 또한 디버그 포트로 시리얼 케이블을 연결하면 시리얼을 이용하여 메시지가 나타나는 것을 확인할 수 있다.
Step 12. 시리얼 포트를 이용하여 메시지를 확인하려면 하이퍼터미널과 같은 시리얼 통신 프로그램을 이용해야 한다. 하이퍼터미널은 '윈도우즈 시작 > 보조프로그램 > 통신' 에 있다. 본인의 컴퓨터 설정에 따라 COM 포트를 잡고 통신 속도를 '115200 BPS'와 흐름제어 '없음'을 선택한다.

(그림19.jpg)
Step 13. 시리얼 케이블을 모듈의 디버그 포트에 연결하고 반대쪽은 PC에 연결한다.


(그림20.jpg)
Step 14. 설정을 완료하고 디버깅을 시작하면 아래와 같은 메시지를 볼 수 있다. 보드의 스위치를 누를 경우 [SWx] 메시지가 나타나게 된다.

(그림21.jpg)
디버거 사용하기
디버거를 사용하여 디버깅 할 경우 Break point 와 watch 기능을 이용하면 편리하게 디버깅을 할 수 있다.
Break Point
Break Point는 프로그램을 실행한 후 사용자가 지정한 특정 지점에서 멈추기를 원할 때 사용 한다.
Break Point를 원하는 위치로 커서를 이동시키고 Toggle BreakPoint를 클릭하면 Break Point로 지정된다. 특정 위치에서 Break Point가 걸리면 실행이 멈추고 사용자가 명령할 때까지 대기하게 된다. 이때 Step over를 이용하시면 코드가 한 줄씩 실행되게 된다. 이때 Watch 기능을 이용하여 변수가 예상대로 값을 가지고 있는지 확인할 수 있다.
Watch
Watch 기능을 이용하여 코드에서 사용한 변수가 예상대로 값을 가지고 있는지 확인할 수 있다.
1. 디버그 모드에서 View > Watch를 클릭하여 Watch 창을 연다.
2. Watch 창의 Expresstion 항목에 필요한 변수 이름을 입력한다.
Break Point 와 Watch 기능을 이용하여 디버깅 하는 그림
아래 그림과 같이 프로그램을 실행시키면서 변수의 변화를 체크하면서 디버깅을 할 수 있다.
특정 함수에서 선언된 변수들의 값을 확인하면서 디버깅을 할 수 있다.
BIN 파일(다운로드 할 파일) 만들기
(그림22.jpg)
IAR 컴파일러를 이용하여 BIN 파일 만들기
'강좌 2. 컴파일러, 디버거 사용법'에서 컴파일까지 완료한 다음 아래 단계를 진행하면 된다.
Step 1. Workspace의 위쪽에 보면 at91sam7sXX_XXX를 볼 수 있다. 사용하는 SAM7의 종류에 따라 선택을 하시면 된다. BIN 파일을 만들기 위해서는 at91sam7sXX_flash를 선택한다.

(그림23.jpg)
Project > Make 또는 F7을 눌러 컴파일을 한다.
에러 없이 컴파일이 완료 되었다면 BIN 파일이 생성 된다.
BIN 파일의 위치는 [프로젝트 폴더 ewp 'Workspce 이름']에 Workspace 이름.bin 파일로 저장되어 있다. Workspace 는 꼭 at91sam7sXX_flash로 해야 한다. sram으로 할 경우 다운로드를 하더라도 동작하지 않는다.
SAM-BA를 이용한 다운로드
SAM-BA 설치
ATMEL 사(http://www.atmel.com)에서는 SAM7 시리즈의 개발환경으로 SAM-BA (SAM Boot Assistant)를 지원한다.
SAM-BA를 이용하면 별도의 프로그래머 장비 없이 USB케이블 또는 시리얼 케이블로 사용자가 작성한 프로그램을 다운로드 할 수 있다.
ATMEL 홈페이지(http://www.atmel.com) 또는 NEWTC 홈페이지(http://www.NewTC.co.kr) 자료실에서 최신 SAM-BA 프로그램(Install AT91-ISP v1.xx.exe)을 다운로드 받는다.
SAM-BA를 이용하여 다운로드 하기
Step 1. SAM-BA를 위한 부트로더를 프로그램 메모리로 복사한다. TST 스위치가 ON 상태로 되어 있는 상태에서 전원을 인가하거나 리셋을 하고 10초 동안 기다리면 부트로더가 자동으로 프로그램 메모리로 복사 된다. 이때 PA0, PA1, PA2 포트입력이 High인 상태여야 한다. 10초 후에 Reset을 누르거나 전원을 껐다가 다시 인가하면 SAM-BA를 사용할 수 있는 모드로 들어가게 된다.
Step 2. USB 케이블을 연결하거나 시리얼 케이블을 디버그 포트에 연결한다. USB 케이블을 연결할 경우 아래와 같이 USB 장치로 잡히게 된다. 처음 연결한 경우 드라이버를 잡게 되는데 SAM-BA 프로그램을 설치하였다면 드라이버는 설치되어 있다.
(그림24.jpg)
Step 3. SAM-BA 프로그램을 실행한다. SAM-BA 프로그램을 실행하면 아래와 같은 창New Technology Company가 뜨게 된다.
USB로 연결되어 있다면 usbARM0를 선택하면 되고 시리얼포트에 연결되어 있다면 COM 포트를 잡아 주면 된다. 또한 사용하는 칩을 정확하게 선택해야 한다. AT91SAM7S64 / 256을 선택하고 Connect을 누르면 연결을 시도한다.
 (그림25.jpg)
Step 4. 모듈과 연결이 정상적으로 되었다면 다음과 같이 다운로드를 할 수 있는 창이 뜬다.


(그림26.jpg)
※ 정상적으로 연결되지 않았다면 아래와 같이 에러 메시지가 나타난다.

(그림27.jpg)
Step 5. BIN 파일을 선택하여 다운로드 한다. 아래 그림의 1번을 클릭하여 2장에서 만든 BIN 파일을 선택하고 2번 버튼을 클릭하여 다운로드를 한다. 다운로드 후 Unlock 관련 창이 뜨는데 Yes를 클릭한다.


(그림28.jpg)
Step 6. 이제 다운로드가 완료 되었다. 모듈의 Reset 버튼을 누르면 프로그램이 실행되게 된다.
H-JTAG을 이용한 다운로드
H-JTAG 프로그램 설치
SM-WJTAG (Wiggler 호환 JTAG 장비)를 사용하실 경우 H-JTAG을 설치해야 한다. H-JTAG 홈페이지(http://www.hjtag.com/)를 방문하시면 프로그램을 다운받을 수 있다. SM-WJTAG 장비를 사용하지 않을 경우 설치할 필요가 없다. H-JTAG 프로그램은 IAR 이나 ADS에서 SM-WJTAG을 사용할 수 있도록 지원하며 자체적으로 H-Flasher 라는 프로그램을 가지고 내부 프로그램 메모리에 프로그램을 쓸 수 있다.
H-JTAG을 이용한 다운로드
Step 1. SM-WJTAG 장비를 PC 프린터 포트에 연결하고 보드의 JTAG 커넥터에 연결한다. SAM7 보드에 전원을 공급하고 H-JTAG 프로그램을 실행 시킨다. 'Detect Target' 을 실행하여 아래 그림과 같이 뜬다면 하드웨어가 정상적으로 연결된 것이다.
(그림29.jpg)
※ 하드웨어가 정상적으로 연결되지 않았거나 문제가 있을 경우 UNKNOWN으로 뜨게 된다.
Step 2. H-JTAG Server 프로그램 메뉴에서 Settings > LPT JTAG Setting 메뉴를 선택하고 아래 그림과 같이 설정한다.


(그림30.jpg)
Step 3. Flasher 메뉴에서 Start H-Flasher를 선택하면 플래시 프로그램을 다운로드 할 수 있는 프로그램이 실행된다.



(그림31.jpg)
Step 4. '1 Flash Selection'에서 사용할 디바이스를 선택한다. SAM7 시리즈는 AT91SAM 에서 찾을 수 있다.


(그림32.jpg)
Step 5. 프로그램 다운로드 후 자동 리셋을 원하실 경우 '4 Pgm Option'에서 RESET 부분을 체크한다.
Step 6. '5 Programming'에서 롬 파일의 타입, 저장할 메모리 주소를 설정하고 2장에서 만든 BIN 파일을 찾아서 주소를 입력한다. 설정을 완료한 후 'Program'을 클릭하면 칩에 프로그램 한다.

(그림33.jpg)
Step 7. 프로그램 다운로드 완료 후 'Programmed and Verified x1 successfully.' 화면이 나오면 다운로드가 완료된 것이다.
 
회원가입 후 이용바랍니다.
개의 댓글
0 / 400
댓글 정렬
BEST댓글
BEST 댓글 답글과 추천수를 합산하여 자동으로 노출됩니다.
댓글삭제
삭제한 댓글은 다시 복구할 수 없습니다.
그래도 삭제하시겠습니까?
댓글수정
댓글 수정은 작성 후 1분내에만 가능합니다.
/ 400
내 댓글 모음
저작권자 © 테크월드뉴스 무단전재 및 재배포 금지