AVR 부트로더쉽게사용하기 009.6.7 KCO 리얼시스 www.realsys.co.kr Tel: 03-40-436 Fax:03-40-439 KCO
부트로더란무엇인가? AVR 부트로더를사용하면좋은점은무엇인가? 별도의프로그래머장치를사용하지않고통신포트만으로실행프로그램을플래시롬에써넣을수있다. 멀리떨어진지역에설치된장비의 Firmware 의 upgrade 를편리하게할수도있다. Boot Bootstrap Boot loader 우리가흔히사용하는컴퓨터를부팅한다. 컴퓨터를시작한다. 복잡하고용량이큰프로그램을실행할때, 먼저작은프로그램을시작하여동작시키면서덩치큰운영체제 (OS) 를로딩하여실행하는동작이필요하겠지요. 부츠장화에끈이달려있는데작은끈을잡아당기다보면결국그끝에덩치큰장화가달려오겠지요. AVR 부트로더도작은 boot 프로그램으로메인프로그램을 load 하여플래시롬에안착시켜메인기능을실행하도록합니다. AVR 부트로더를사용하면안좋은점. 프로그래머장치가덜팔린다. ㅎㅎ AVR 부트로더빨리사용하는방법 다른사람이만들어놓은것을집어다가사용한다. ( 능력이좋으면직접만들어서사용하면더욱좋고 ) 컴퓨터는보조기억장치 ( 플로피, 하드디스크 ) 를사용하여부트동작을시작하는데마이크로프로세서를사용하는임베디드장치에서는플래시롬일부영역을사용합니다. boot [buːt] n. (pl.) 미국 장화, 부츠, 영국 목이긴구두 ([cf.] shoe). 영국 ( 마차 자동차의 ) 짐넣는곳 [ 트렁크 ] (( 미국 ) trunk). 3 ( 마부석의 ) 보호용덮개 ; 컨버터블형 (convertible 型 ) 차의덮개수납부 ( 커버 ) 리얼시스 www.realsys.co.kr Tel: 03-40-436 Fax:03-40-439 KCO
AVR Boot loader 관련자료를 WEB 에서찾아보니 ~ 관련링크 : http://www.microsyl.com/ 이곳웹에아주훌륭한자료가보입니다. MegaLoad 를클릭하면 개의프로그램을다운로드하여사용하라고하는군요? 다운로드하여보니 Bootloader.zip : KB 용량 AVR 부트로더소스프로그램인데, ICCAVR 컴파일러로작업되어있으며, 사용자환경에맟추어작업이필요하겠어요. Megaload.zip : 76KB 용량이네요. 윈도우실행프로그램인데, 지원하는 AVR 종류도많고아주짱! 이군요. 소스가필요한사람은 $00 주고사라고하네요. 실행파일에대한제한은없는것같아요 ICCAVR 컴파일러는 www.imagecraft.com 에서 45 일짜리평가판을다운로드하여사용하라고하는군요. 해보니잘됩니다. http://www.microsyl.com/ 웹에여러가지유용한아이디어소스들이많은것같은데나중에시간이있으면한번살펴보면좋을것같군요. 리얼시스 www.realsys.co.kr Tel: 03-40-436 Fax:03-40-4393 KCO 3
AVR Boot loader 관련자료를 WEB 에서찾아보니 ~ 관련링크 : http://cafe.naver.com/ilovemicom 국내 I Love 마이컴카페매니저인뽀로로님께서만드신 megaboot 프로그램도부트로더로사용가능합니다. 아직은지원하는 AVR 종류가좀적은데, 조금더 upgrade 되면좋아지지않을까생각됩니다. 조금신경이쓰이는것은상업용목적으로사용할수없다는문구가보이는군요.( 상업용목적의범위가어디까지?) Megaboot 를다운로드하여보니 megaboot.zip : 578KB 용량압축을풀면 megaboot.exe(.03mb) 와 megaboot_hex 소스파일이있습니다. 소스파일은 WINAVR 로작성된거같습니다. WINAVR 의다운로드는 http://winavr.sourceforge.net/ http://sourceforge.net/projects/winavr/ ( 현재 WinAVR 009033 버전이있습니다 ) WINAVR 은무료컴파일러인데, 계속좋아지고있으며이제는상용프로그램정도 ( 더좋을수도 ) 의성능에가격은무료!!! 이제충분히편리한사용이가능할것같습니다. 시간이되면, 예제를소개해드리겠습니다. 리얼시스 www.realsys.co.kr Tel: 03-40-436 Fax:03-40-4394 KCO 여기를눌러다운로드하세요한글설치도지원합니다. ( 헉! 이거소개하면우리 CodeVisionAVR 잘안팔리겠네 ) 4
RCM8 모듈에부트로더심어보기 http://www.microsyl.com/ 자료이용. ICCAVR 컴파일러평가판을다운로드한후설치합니다.. http://www.microsyl.com/ 에서다운로드한 bootloader.zip 압축을푼후 ICCAVR 컴파일러로프로젝트를 Build해야하는데, 먼저설정상태를확인합니다. 3. Build project 를실행하여 BOOTLOAD.hex 생성 4. 이값을플래시롬에다운로드함 주요설정값확인 : #define MEGATYPE Mega8 ; main.c 파일 #define XTAL 6000000 #define UART 0 #define BAUDRATE 57600 MEGA8 = ; assembly.h 파일 또한 Project / Options 값이오른쪽과같이 Atmega8 로설정 리얼시스 www.realsys.co.kr Tel: 03-40-436 Fax:03-40-4395 KCO 5
RCM8 모듈에부트로더심어보기 CodeVisionAVR 를사용하여 flash ROM 에써넣기 ICCAVR에서생성된 Boot프로그램을 CodeVisionAVR 프로그래머로써넣기설정 : Chip : Atmega8 Fuse 설정 : BOOTRST, BOOTSZ0, CKOPT를체크함 ( 나머지는 No check) 먼저 HEX 파일로드바람.. 소자를지우고. 플래시롬을프로그램하고 부트프로그램을처음써넣기위해서반드시프린터형또는 USB 형 ISP 프로그래머가있어야함 3. Fuse 비트를설정함 리얼시스 www.realsys.co.kr Tel: 03-40-436 Fax:03-40-4396 KCO 6
부트동작실행해보기 Megaload 를설치한후실행함. 실행예제파일불러옴. 연결된통신포트및 bps 설정 3. 전원 ON-OFF 리세트동작을하면자동으로부트동작실행메시지표시 통신포트가연결되어있지않거나 Megaload 프로그램이실행중이아니면이전 FlashROM 내용자동실행 동작프로그램은이전에작성한응용프로그램을사용하시면됩니다. RCM8 모듈 통신신호 (RS3 레벨 ) 연결. TXD. RXD 3. GND 리얼시스 www.realsys.co.kr Tel: 03-40-436 Fax:03-40-4397 KCO 6 핀 ISP 커넥터 USB_COM (TTL 레벨 COM) 모듈로도접속가능 7
RCM8A 모듈에부트로더심어보기 ICCAVR 주요설정값 : #define MEGATYPE Mega8 ; main.c 파일 #define XTAL 4745600 #define UART 0 #define BAUDRATE 57600 MEGA8 = ; assembly.h 파일 Project / Options 값이오른쪽과같이 Atmega8 로설정 설정값변경 : RCM8 설정값과비교하여달라진점은 XTAL 클럭이 6000000 (RCM8) 4745600 (RCM8A) 로변경 (4.7456MHz 클럭은통신 bps 에러가최소가됨 ) 리세트버튼 RCM8A 모듈 4.7456MHz 동작 USB to UART 변환보드 ( 모델명 : USB_COM) 6 핀 ISP 커넥터 : 프로그램다운로드커넥터 ( 통신신호 RXD0,TXD0 가연결되어있음 ) COM 통신신호 (TTL 레벨 ) 요즈음컴퓨터는 RS3 통신포트가없는것이많으므로 USB to COM 변환모듈을사용 5V * TXD * RXD * GND * 3.3V * 참조 : 지그비무선모듈을사용하여부트덩작을해보았는데잘동작하지않는군요. 아마지연시간등이잘맞지않는것같습니다. 리얼시스 www.realsys.co.kr Tel: 03-40-436 Fax:03-40-4398 KCO 8
AVR_COM(Atmega560 사용 ) 보드에부트로더심어보기 ICCAVR 주요설정값 : #define MEGATYPE Mega560 ; main.c 파일 #define XTAL 4745600 #define UART 3 #define BAUDRATE 57600 MEGA560 = ; assembly.h 파일 Project / Options 값이아래와같이 Atmega560 으로설정 설정완료후 Build 를실행하여 HEX 파일생성 AVR_COM 교육용키트 리얼시스 www.realsys.co.kr Tel: 03-40-436 Fax:03-40-4399 KCO 9
AVR_COM(Atmega560 사용 ) 보드에부트로더심어보기 ICCAVR에서생성된 Boot프로그램을 CodeVisionAVR 프로그래머로써넣기설정 : Chip : Atmega560 Fuse 설정 : CKSEL3, BOOTRST, BOOTSZ0를체크함 ( 나머지는 No check) 먼저 HEX 파일로드한뒤에 Erase Chip -> Flash 프로그램 -> Fuse Bit 를순차적으로실행함. 소자를지우고. 플래시롬을프로그램하고 3. Fuse 비트를설정함 AVR_COM 보드에서사용한 Atmega560 에는 4 개의 UART 가있는데그중에서 USB 소자로 UART3(RXD3,TXD3) 이연결되어있고 #define UART 3 로빌드하였으므로 USB 통신포트로부트됩니다. CN 리얼시스 www.realsys.co.kr Tel: 03-40-436 Fax:03-40-4390 KCO VCC D- D+ GND CN-USB 3 4 L C 0.uF JP JP_USB FB C0 + 0uF 5V C4 0.uF 4 0 6 5 8 9 4 7 8 7 U8 VCC-IO VCC USBDM USBDP AGND GND GND GND TEST 5 7 8 6 CN6 3 4 5 USB_TTL TXD RXD RTS# CTS# DTR# DSR# DCD# FT3RL 5V 5 3 9 0 6 NC RI# RESET# 3 NC CBUS0/TXLED# OSCI CBUS/RXLED# 3 OSCO CBUS/TXDEN 4 CBUS3/PWREN# 3V3OUT CBUS4/SLEEP# 3.3V R8 0 RXD3 TXD3 0