2014-04-12 4 views
0

현재 Arduino Uno (rev3) 보드를 사용하는 프로젝트를 진행 중입니다. 결국 Arduino에서 독립 실행 형으로 돌릴 수 있으며 프로그래밍 및 부트 로더 전체가 어떻게 작동하는지 생각하게되었습니다. 여기 Arduino 프로그래밍 모드, 부트 로더, ISP로서 Arduino

내가 아는 것입니다/지금까지 가정

  1. 보드는 두 개의 칩이 다음 ATmega328 (주 칩)와 (A USB 직렬 bidge으로 사용)를 ATmega16u2합니다.

  2. ATmega16u2의 펌웨어는 DFU- 모드를 활성화하고 예를 들어를 사용하여 변경할 수 있습니다. DFU-Programmer. Arduino는 HDI/Midi 장치로 인식 될 수 있지만 더 이상 프로그래밍 할 수 없습니다.

  3. ATmega328을 프로그래밍 할 때 칩이 재설정되고 다시 시작될 때 부트 로더는 직렬 연결과 ATmega16u2 브리지를 통해 새 프로그램을로드하고 씁니다. 칩의 ISP 인터페이스는 새 프로그램을 업로드하는 데 사용되지 않습니다. 누가 처음부터 재설정을 시작합니까?

  4. Arduino는 다른 외부 칩을 프로그래밍하는 ISP- 프로그래머로 사용할 수 있습니다. 이를 위해 일부 펌웨어는 AATmega328에로드되며 프로그래밍 할 칩의 ISP 핀은 Arduino 보드의 핀에 연결됩니다. 그런 다음 Arduino-IDE는 Atmega328을 다시 프로그래밍하지 않고 프로그래머로 사용하도록 구성됩니다.

적어도 제가 작성한 내용 중 대부분은 정확합니다. 내 질문은 다음과 같습니다.

새 보드/빈 AVR을 보드에 올려 놓으면 부트 로더가 어떻게 칩에 도착합니까? "Burn Bootloader"명령은 어떻게 작동합니까?

부트 로더를 먼저 업로드하지 않고 16 진수 파일을 ATmega328에 업로드 할 수 있습니까? ATmega16u2에서 특정 펌웨어를 사용하여이 작업을 수행 할 수 있습니까?

감사합니다.

요하네스

답변

1

ISP 프로그래머 (ArduinoISP 또는 USBASP 같은 이산 프로그래머 중)은 기존 로더 없이도 AVR의 플래시, EEPROM, 퓨즈 비트와 록 비트를 프로그램하기 위해 사용될 수있다. 장치의 SPI 핀을 사용하여 장치에 명령을 전송하여 비 휘발성 저장 장치 내용을 조작합니다.

ATmega16U2는 '328; '328에서 부트 로더없이 UART를 사용하여 프로그램 할 방법이 없습니다.