티스토리 뷰
Bootloader 프로젝트에서 별도의 장비없이 UART를 통해서 application 프로그램을 AVR의 Flash memory에 프로그램하는 방법에 대해서 설명하였다.
하지만 bootloader 프로그램 자체는 ISP 장치를 이용하여 프로그램하였다.
이처럼 임베디드 시스템을 처음 만들었을때의 시점에는 이 장치에서 돌아가는 프로그램은 아무것도 없는 상태이다. 즉, bootloader 프로그램조차도 없는 완전한 백지 상태인 것이다. 이러한 백지상태의 시스템에서 동작되어야 하는 첫번째 실행파일을 넣어주기 위해서는 어떠한 형태이든지 장비를 이용할 수 밖에 없게 된다.
대량의 양산 단계에서는 ROM writer 장비를 이용하여 Flash 메모리에 image 파일을 프로그램하겠지만, 임베디드 시스템의 개발 단계에서나 소량의 임베디드 시스템을 만드는 경우에는 주로 JTAG 에뮬레이터를 사용한다.
하지만 JTAG 에뮬레이터는 상당히 고가인 경우가 많다. 심지어 천만원이 넘어가는 경우도 있다. 중소기업이나 개인이 이러한 장비를 구비하기가 만만치 않다.
그러나, 다행히 Micro controller의 경우 JTAG 에뮬레이터를 사용하지 않고 다른 방식을 이용해서 flash 메모리를 프로그램하는 방법을 제공하는 경우가 있다.
AVR의 경우 ISP(In System Programming)이라는 이름의 SPI 통신을 이용한 방법을 제공하므로, 이 방법을 적용하여 ISP 장비를 사용하지 않고도 flash 메모리를 프로그램 할 수 있게 된다.
위의 그림에서 보는바와 같이 왼쪽의 박스는 PC를 의미한다. 가운데에 있는 박스는 ISP 프로그램이 동작되는 AVR CPU라고 보면 된다. 이들 두개의 시스템은 UART로 연결되어 필요한 데이터를 주고받는다. 마지막, 오른쪽에 보이는 박스는 Target AVR CPU이다. ISP가 동작되는 AVR과 SPI를 이용하여 연결되는것을 알 수 있다.
ISP CPU가 SPI master로 동작하고, target AVR CPU가 SPI slave로 동작된다.
위의 연결 방법은 이미 입문 과정중에 SPI 글에서 설명하였다.
전체적인 ISP 동작은 bootloader 프로그램과 비슷하므로 bootloader를 참조하면 된다.
ISP를 자세히 설명하는 문서를 ATMEL에서 제공하므로 한번 읽어 보기 바란다.
제목은 'AVR910: In-System Programming'이다. 문서뿐 아니라 소스코드도 제공하므로 분석해가며 그 과정을 이해하면 된다.
'프로젝트 > ISP' 카테고리의 다른 글
ISP - Flash memory write (0) | 2016.08.28 |
---|---|
ISP - Flash memory read (0) | 2016.08.28 |
ISP - Device 정보 조회 (0) | 2016.08.27 |
ISP - 회로 구성 (0) | 2016.08.27 |