레이블이 flash writing인 게시물을 표시합니다. 모든 게시물 표시
레이블이 flash writing인 게시물을 표시합니다. 모든 게시물 표시

2016년 2월 16일 화요일

Atmel Studio 7.0으로 아두이노 메가/우노 사용하기 (Programming Arduino Mega/Uno using Atmel Studio 7.0)

아두이노 IDE를 사용하면 아두이노 보드들을 쉽게 프로그래밍 할 수 있지만 레지스터를 직접 조작해 다양한 peripheral들을 세부적으로 조작하려면 Atmel studio를 사용할 수 밖에 없는 경우가 생긴다.

먼저 arduino ide를 설치해 준다. 아두이노 메가의 플래쉬에 프로그램을 집어 넣기 위해 avrdude라는 툴을 사용하는데 아두이노 IDE에 포함되어 있기 때문이다. avrdude의 위치는 c:\Program files\Arduino\hardware\tools\avr\bin 폴더에 들어 있다. 사용하기 쉽게 하기 위해 저 폴더에 있는 avrdude.exe 파일과 c:\Program files\Arduino\hardware\tools\avr\etc 폴더에 있는 avrdude.conf 파일을 사용하기 편한 위치의같은 폴더에 집어 넣어 준다.



여기서는 C:\Utils 폴더에 avrdude.exe와 avrdude.conf 파일을 넣어 주었다.

이제 Atmel studio 7.0을 실행한 후 상단의 메뉴 항목에서 Tools->External Tools 를 선택한다.

창이 열리면 우측의 'Add' 버튼을 누른 후 아래쪽 4개의 칸을 다음과 같이 입력해 준다.



Title: MEGA writing  <- 임의의 이름을 지정
Command: C:\Utils\avrdude.exe <- avrdude.exe 파일의 위치를 지정
Arguments: -v -v -patmega2560 -cwiring -PCOM9 -D -Uflash:w:$(TargetDir)\$(TargetName).hex:i <- avrdude를 호출할 때 사용할 파라미터들. 여기서 COM9는 자신의 환경(아두이노 메가의 시리얼 포트)에 맞게 변경해 줘야 함
Initial directory: $(TargetDir) <- 이대로 지정

그리고 Use Output window 항목을 체크해 주고 'OK' 버튼을 눌러주면 된다.



다시 메뉴에서 Tools를 선택하면 MEGA writing 이라는 항목이 생긴걸 볼 수 있다.

이제 프로젝트를 만들어 프로그램을 빌드한 후 'MEGA writing' 을 선택하면 빌드 된 hex 파일이 아두이노 메가의 플래쉬에 기록되어 실행되게 된다.

프로젝트를 만드는 방법은 이전 포스트(Atmel Studio에서 아두이노 듀에 사용하기)를 참고하면 된다. 다만 프로세서는 아두이노 메가에 맞는 것으로 선택해 줘야 한다.



프로그램을 완성해서 빌드한 후 방금 추가한 'MEGA writing' 을 선택하면 아두이노에서보다 훨씬 빨리 hex 파일이 플래쉬에 기록되는걸 확인할 수 있다.

----

그리고 프로그램을 만들어 컴파일 하다 보면 _delay_ms() 함수등에서 F_CPU가 선언되어 있지 않다고 에러가 나는 경우가 있다. 이런 경우 상단 메뉴바에서 Project 항목을 누른 후 맨 아래쪽에 프로젝트 Properties... 항목을 선택한다. (여기서는 megatest라는 이름의 프로젝트이므로 megatest Properties...라고 나왔지만 실제 megatest 대신 각자 프로젝트 이름이 나온다)



 Properties 탭이 열리면 Toolchain -> AVR/GNU C Compiler -> Symbols를 선택한다.
 기본적으로 Defined symbols 항목에 'DEBUG' 하나만 들어 있다.



Defined Symbols 오른쪽 끝의 + 버튼을 누르면 'Add Defined Symbols'라는 창이 열린다.


여기에 위와 같이 'F_CPU=16000000UL' 이라고 넣어주고 'OK' 버튼을 눌러주면 된다. 이제 다시 빌드 해 보면 에러가 없어졌을 것이다.

또한 printf() 함수로 출력되는 내용을 시리얼 포트로 보내주려고 하는 경우 '-Wl,-u,vfprintf -lprintf_flt -lm' 같은 내용의 링커 옵션을 추가해 줘야 하는 경우도 있다.

이 때는 Toolchain -> AVR/GNU Linker -> Miscellaneous 를 선택한 후 'Other Linker Flags'에 원하는 옵션을 추가해 주면 된다.

 


---
아두이노 우노를 사용하는 경우도 위와 동일하다. 다만 차이점은

Arguments: -v -v -patmega328p -carduino -PCOM9 -D -Uflash:w:$(TargetDir)\$(TargetName).hex:i

저기서 atmega2560 대신 atmega328p로, wiring을 arduino로 바꿔주는것 뿐이다. 그 이후는 프로젝트를 만들 때 프로세서만 atmega2560 대신 아두이노 우노의 프로세서인 atmega328p를 선택해 주면 된다.

2016년 2월 3일 수요일

Atmel Studio에서 아두이노 듀에(arduino due) 사용하기

Atmel studio에서 아두이노 듀에에 바이너리 파일을 넣으려면 bossa라는 프로그램이 필요하다. BOSSA(http://www.shumatech.com/web/products/bossa)는 Basic Open-Source Samba Application의 약자로 ATMEL의 ARM 프로세서 플래쉬에 writing을 위한 프로그램이다. 원래 ATMEL에서 SAMBA라는 툴을 제공하나 설정이나 사용이 복잡해 이 SAMBA를 기반으로 사용하기 쉽게 만든 프로그램이 BOSSA이다.

다만 기존의 bossa로는 아두이노 듀에에 사용할 수 없어 아두이노용으로 수정된 bossa가 필요하다. 혹시 자신의 컴퓨터에 bossac (BOSSA command line)이 설치되어 있으면 프롬프트에서 bossac -h 명령으로 버젼을 확인할 수 있다.


이렇게 나오면 아두이노 용으로 수정된 버젼이다. 만일 그렇지 않으면 아두이노용 bossa를 구해야 한다.

가장 쉬운 방법은 먼저 아두이노를 설치해서 실행한다. 실행한 후 화면 상단 메뉴 '툴->보드->보드 매니저'를 선택한다. 아래 스크린샷은 이미 설치가 되어 있지만 아두이노를 처음 설치하면 Arduino Due는 사용할 수 없는 상태이기 때문에 먼저 패키지를 설치해 줘야 한다.


 보드 매니저 윈도우에서 Arduino SAM Boards (32-bits ARM Cortex-M3) 를 선택한다.


 선택하면 오른쪽에 '설치' 버튼이 나타나므로 버튼을 눌러 패키지를 설치한다.


 설치가 끝나면 '닫기'를 눌러 보드매니저 윈도우를 닫고 다시 '툴->보드' 메뉴로 가 보면 이제 보드 목록 아래쪽에 Arduino Due 항목들이 보일 것이다.


 아두이노 듀에를 위한 툴체인이 설치된 것이다. 이제 설치된 툴체인에서 bossac을 찾으면 되는데 아두이노 1.6.5부터 툴체인 설치 위치가 이전 버젼과 달라졌을 뿐 아니라 시스템 숨김 파일로 되어 있어 그냥 찾으려고 하면 컴퓨터를 다 뒤져 봐도 찾을 수가 없다.

먼저 탐색기를 열어 사용자->[자신의ID] 폴더로 간다.


 탐색기의 '구성->폴더 및 검색 옵션' 메뉴을 선택한다.


폴더 옵션 윈도우가 열리면 '보기' 탭을 선택한 다음 '고급설정' 리스트를 아래로 스크롤 해 보면 아래 항목이 보일 것이다. 따로 설정을 변경하지 않았으면 디폴트로는 '보호된 운영 체제 파일 숨기기(권장)'가 체크 되어 있고, '숨김 파일 및 폴더'는 '숨김 파일, 폴더 또는 드라이브 표시 안 함'이 선택되어 있다.


 '보호된 운영 체제 파일 숨기기(권장)'는 체크를 없애고, '숨김 파일 및 폴더'는 '숨김 파일, 폴더 또는 드라이브 표시'를 선택한 다음 '확인' 버튼을 눌러준다.


이제 약간 희미한 폴더 아이콘들이 몇개 더 보이게 되었다. 여기서 'AppData' 폴더를 연다.


그 아래로 계속 쫒아가면 '...\AppData\Local\Arduino15\packages\arduino\tools' 에 bossac 폴더가 보인다. bossac 폴더 안에 폴더가 하나 더 있고 그 안에 bossac.exe 파일이 들어있다. 그냥 그 위치에 두고 사용해도 되지만 매번 찾기 귀찮으니 c 드라이브의 최 상단에 \utils 같은 폴더를 하나 만들어 그곳에 bossac.exe를 복사해 놓고 사용하면 편리하다.


이제 Atmel Studio를 실행한 후 상단 메뉴에서 'Tools->External Tools...'를 선택한다.


External Tools 윈도우가 열리면 초기 상태는 아래와 같다.


내용을 다음과 같이 변경한 후 'OK'버튼을 눌러 준다.

Title: Due writing <- 자신이 원하는 임의의 이름
Command: C:\Utils\bossac.exe   <- 아두이노용 bossac.exe 파일의 위치
Arguments: -e -w -v -b $(TargetDir)\$(TargetName).bin -R  <- 이대로 똑같이 입력
Initial directory: $(TargetDir)       <- 이대로 똑같이 입력

Use Output window는 체크


이제 Tools 메뉴를 보면 자신이 선택한 이름의 항목이 추가된 걸 볼 수 있다.


듀에에 USB 케이블은 Native USB 쪽에 꼽아주면 된다.


이제 SAM3X8E 프로세서용으로 프로젝트를 만들어 Build 한 후 위에서 추가한 메뉴항목(여기서는 Due writing)을 선택하면 bin 파일을 듀에의 플래쉬에 writing 해 준다. 만일 writing 하는데 포트를 찾을 수 없다고 에러가 나오면 먼저 ERASE 버튼을 잠시 눌러 준 후 듀에를 리셋 시키고 writing 을 하면 된다.