• Feed
  • Explore
  • Ranking
/
/
    ATmega128A

    AVR의 ISP, In-System Programming

    ISP로 뭔가 하기 전 마지막 정리
    박
    박형진
    2025.03.20
    ·
    4 min read

    정의

    • 이미 시스템이 구성된 하드웨어에 프로그래밍하는 것.

      • 여기에서 '구성되었다'는 말은 하기 의미이다.

        • 이미 EEPROM, Flash, Processor, SRAM 등이 회로, 보드에 실장되어 있다.

        • 전원을 공급하고 적절한 프로그램을 Upload하기만 하면 된다.

      • 이 Upload 과정을 In-System Programming이라 한다.

    AVR의 ISP

    • AVR의 ISP는 기본적으로 SPI를 기반으로 한다.

      • ISP라는 것에 관한 표준은 없다.

      • 즉, 거의 모든 MCU 제조 업체가 ISP를 지원하지만 회사에 따라 규격이 다 다르다.

    • ATmega128A의 경우 Datasheet에 아래와 같이 쓰여 있다.

      • "The On-chip ISP Flash allows the program memory to be reprogrammed in-system through an SPI serial interface, by a conventional nonvolatile memory programmer, or by an On-chip Boot program running on the AVR core."

      • "On-chip ISP Flash는 통상적인 비-휘발성 메모리 프로그래머나 AVR 코어에서 동작하는 On-chip 부트 프로그램에 의한 SPI를 통해 재프로그래밍을 지원한다."

        • 그러니까, 프로그램 코드가 들어가는 Flash를 SPI 이용해서 Reprogramming하는 활동을 ISP라고 칭한다.

    필요 장비

    • 방구석에서 ROM Writer를 쓸 수 있는 것도 아니고...

    • PC에 연결해서 프로그래밍하게 될 것이다.

      • 그럼 AVR용 USBISP가 필요하다!

    AVR ISP의 기능

    • 당연히 프로그램 Upload를 지원하고,

    • 필요 시, 전원 공급도 ISP 핀을 통해 가능하다.

      • 하지만 나는... 전력 문제로 칩을 날려먹고 싶지 않아서, 별도의 전원 공급을 사용하기로 했다.

        • 학부생 수준에서 사용하기에 AVR의 칩들은 전력 문제에 관해 '자비롭다'고는 하지만, 나는 돈이 없고, 위험을 감수하고 싶지 않다.

    • 코드의 실행으로서 EEPROM도 쓸 수 있다!

    JTAG 쓰면 안 되나요?

    • 당연히 된다. 오히려 편할 것 같다.

      • JTAG는 자그마치 표준이 존재하는 좋은 장비, 인터페이스다!

        • 런타임 디버깅이 가능하고,

        • ISP로 Programmable한 건 다 Programming 할 수 있다.

    • 그렇지만 '다운로딩' 목적이라기보단 '디버깅' 목적에 편중된 장비인 것 같다.

      • 뭐든 하라고 하면 할 수 있고, 더 편하지만, 나는 소 잡는 데는 소 잡는 칼을 쓰고 싶었다.

    • 표준이 있기는 하지만, 다양한 장비를 지원하는 JTAG 장비일 수록 비싸다.

      • 나중에 제대로 된 장비 장만하려구...

    • 많은 핀을 잡아먹는다.

      • ISP는 6핀.

      • JTAG는 8, 10, 20핀.

        • 내가 뭘 하고 싶고, 뭘 할 수 있는지도 모르는데 핀 낭비... 하고 싶지 않았다.







    - 컬렉션 아티클