앞에서 설명한 내용처럼 bootloader 프로그램이 실행되는 CPU의 종류와 상세정보를 획득하였으면, 그 CPU에 맞게 만들어진 실행파일을 UART를 통하여 전달하는 단계를 수행하는 것이 다음 순서이다.이때 사용되는 파일이 intel사에서 만든 규격인 hex 파일 포맷이다.Hex 파일은 다음과 같은 모양으로 만들어져 있다. :100000000C9434000C943E000C943E000C943E0082 :100010000C943E000C943E000C943E000C943E0068 :100020000C943E000C943E000C943E000C943E0058 :100030000C943E000C943E000C943E000C943E0048 :100040000C943E000C943E000C943E000C943E..
이제 본격적으로 Bootloader 기능을 하나씩 하나씩 만들어 가보도록 하겠다. 가장 먼저 할 일은 bootloader가 동작하는 AVR이 어떤 종류의 CPU인지 정확한 정보를 컴퓨터에서 알아오는 것이다. 입문과정 블로그 글 중에서 SPI를 설명할 때 SPI를 통해서 Slave AVR의 Signature byte(Device ID) 정보를 읽어 오는것을 실습하였다. Bootloader 프로그램에서도 boot_signature_byte_get() 함수를 이용하면 Signature 정보를 얻어 올 수 있다. 이 signature 정보를 가지고 해당 디바이스가 어떤 구조를 가지고 있는지 bootloader 기능을 구현하는데 필요한 내용을 읽어올 수가 있다. AVR bootloader 프로그램과 커넥션이 연결..
앞의 글에서 AVR이 시작될 때 조건에 따라 bootloader 모드로 진입하는지, 아니면 normal(application) 모드로 진입할 것인지 결정하는 프로그램을 만들어 보았다. 이 프로그램은 지금은 application flash section에서 동작된다. 이번 글에서는 이 프로그램이 bootloader flash section에서 바로 실행이 되도록 하는 방법에 대해서 설명하도록 하겠다. 위의 그림은 AVR data sheet 문서에 나오는 그림이다. Fuse register에 있는 BOOTSZ의 값에 따라 Bootloader flash section의 크기를 조정할 수 있다는 것을 설명하고 있다. 위의 표에서 BOOTSZ값에 따른 bootloader flash section의 크기와 주소 범..