왜 우리는 하드웨어 프로그래머가 필요합니까?


22

저는 ATtiny를 프로그래밍 하기 위해 Boarduino 와 30 행 브레드 보드를 사용합니다. ArduinoISP (아두 이노 IDE에 기본적으로 포함되어 있음) 라는 너무 복잡한 스케치를로드 하고 갑자기 작업중 인 프로그래머가 있습니다. Atmel 은 $ 30에서 $ 40 사이 의 멋진 프로그래머 를 팔고 있으며 , 더 싼 것을 만들기위한 키트가 많이 있습니다.

나는 일하는 프로그래머를 얻었을 때 매우 기뻤고 약간의 LED를 깜박였습니다. 그러나 이제 내 빈곤층은 프로그래머의 의무에 갇혀 있습니다.

내가 알 수있는 한이 프로그래머는 재설정 버튼을 누른 다음 MOSI 및 MISO 핀을 송수신합니다. 나는 SCK가 사용되지 않았거나 적어도 불필요한 것으로 생각합니다. (ATtiny 데이터 시트에 따르면 SCK가 필요하며 프로그래머가 작동하지 않고 프로그래머가 필요하지 않다고 생각한 장소를 찾을 수 없습니다.)

직렬을 전송하기 위해 하드웨어 프로그래머가 필요한 이유는 무엇입니까? 내 말은, IC 대신 손가락으로 리셋 버튼을 누르고 있다고 가정하자. 남은 것은 직렬 전송 및 수신뿐이므로 세 개의 전선 GND, RXD 및 TXD 만 있으면됩니다. "DTR"라인 등이 있으면 직렬 케이블로 리셋 버튼을 누르고있을 수도 있습니다.

왜 모든 하드웨어 솔루션은있다 또한 멋진 소프트웨어를 필요로 (AVRdude처럼, 또는 AVR 스튜디오, 또는 무엇이든)은?

마이크로 컨트롤러를 대용량 저장 장치로 제공하는 작은 USB 케이블을 이해하고 프로그래밍을 위해 바이너리 파일을 드래그 할 수있게되었습니다 ( 이 ARM 개발 보드 와 같이). ). 표준 소프트웨어 드라이버를 사용하는 하드웨어 전용.

또한 소프트웨어 전용 솔루션 (USB에서 칩으로 모듈로 후킹 와이어, FTDI 칩과 같은 것을 사용하여 와이어로 떨어지는 것을 단순화)을 이해할 수 있습니다. 모든 멋진 프로그래밍 프로토콜은 컴퓨터의 소프트웨어에 의해 처리되며 하드웨어는 일부 전선 일뿐입니다.

왜 우리는 (복잡한) 소프트웨어와 하드웨어를 모두 가지고 있습니까? 내가 말할 수있는 한, 마이크로 컨트롤러 프로그래밍은 매우 쉽지만, 이것에 들어가면 부트 로더를 프로그래밍하기 위해 전문가에게 돈을 지불하지 않고 마우스 또는 digikey에서 칩을 구입할 방법에 대해 정말로 걱정했습니다. 나를 위해.

나는 좋은 이유가 있다고 확신합니다 (소프트웨어를 작성하거나 드래그 앤 드롭 USB 프로그래머를 제조하기 시작한 것과는 다릅니다).


가정용 하드웨어 프로그래머가 디버깅을 허용합니까? 프로그래밍만으로는 괜찮을 수도 있지만, 온칩 디버깅 (코드에서 중단 점 설정 및 해당 지점에 도달하면 실행 중지)을 수행하려는 경우 하드웨어 프로그래머가 필요합니다. 해당 작업은 재설정 라인으로 재미있는 작업을 수행 할 수 있습니다.
Joel B

답변:


18

AVR 프로그래밍은 매우 쉽습니다. 저전압에서 실행되는 SPI 위에 구현 된 사용자 지정 프로토콜 일뿐입니다. SCK가 필요합니다.

그러나 구형 PIC (및 ISP AVR 이외의 프로그래밍)를 프로그래밍하려면 고전압과 다른 사용자 지정 프로토콜이 필요합니다. 이를 위해서는 특별한 하드웨어 프로그래머가 필요합니다.

다른 장치는 더 복잡합니다. 대부분의 ARM 마이크로 컨트롤러는 JTAG를 통해 프로그래밍해야합니다. 여기서 메모리는 직접 작성되고 프로세서는 플래시에 쓰도록 지시됩니다. 다시 말하지만 모든 장치는 다릅니다.


왜 그렇게 훨씬 복잡한 아이디어가 있습니까? AVR의 방법 (낮은 전압 표준 프로토콜) 훨씬 더 현명한 사용자 정의 프로그래머 필요 이상의 것 (AN 8,052분의 8,051 프로그래머 필요성이 사람처럼를 - 도움이 원하는, 담당자 가능!의 electronics.stackexchange.com/questions/4104 )
케빈 베르메르

2
PIC 프로그래머에게는 특별한 것이나 비싼 것이 없습니다. 많은 설계가 온라인으로 제공되며 대부분의 새로운 PIC는 저전압 프로그래밍이 가능합니다.
akohlsmith

4
IC manufacturers don't really care about how complex something is for hobbyists to use. As long as it can be used in large quantity production, it's otherwise all about cost.
endolith

2
High-voltage programming was there first, it was the way to program UV-erasable EPROMs in the eighties (and microcontrollers containing such EPROMs).
starblue

SCK 청구를 수정했습니다. 저는 SPI 만 필요하다는 생각이 마음에 들지만 컴퓨터에 SPI 포트가 없기 때문에 (FTDI 케이블에 이미 $ 4 칩이 들어 있습니다 !!) 우리는 $ 2 마이크로 컨트롤러를 과시 할 수도 있습니다. JTAG 업로드 및 디버그 논증은 일반적으로 개발 보드의 이점에 대해 판매했으며, endolith는 내가 20 달러를 소비하는 것에 신경 쓰지 않는 좋은 점이 있다고 생각합니다. 제조업체는 실제 엔지니어 (및 고용주)가 예산을 지출 할 대상을 관리합니다.
잭 슈미트

5

나는 많은 연구를 해왔고 AVR을 가지고 놀기를 준비하고 있지만 실제로는 한 번도 사용하지 않았으므로 이것이 잘못되었을 수도 있습니다.

가장 저렴한 프로그래머는 AVR 고전압 프로그래밍을 지원하지 않습니다. 퓨즈 비트를 사용하여 컨트롤러를 프로그래밍 할 수 없도록 설정했거나 심각한 버그가 발생하여 기본값 등으로 재설정해야하는 경우에 필요합니다.


2
Low-voltage programmers like the AVRISP mkII[1] or USBtinyISP[2] can be used to set fuses with avrdude or other programmers, but they can't save an AVR chip that's been made un-bootable or had its reset line turned into a GPIO. You do need an high-voltage programmer for that sort of thing. [1] mouser.com/search/… [2] ladyada.net/make/usbtinyisp
blalor

@blalor In light of this information, I'll edit my answer.
AndrejaKo

I did see some instructions on making a high voltage programmer (and the datasheet for the chip seems to have pretty detailed instructions on designing one), but I'm waiting until I brick one of my chips until I try it. My oscillators get here tomorrow, so I'll be burning fuses and tempting the brick fairy soon enough!
Jack Schmidt

It's notable that avrdude double-checks your fuse bits to prevent this problem. A slightly more common problem is setting the chip to external clock.
Yann Vernier

4

Most cheap AVR programmers are just sync serial interfaces with a reset line. You can you an FT232 to bitbang out Serial Peripheral Interface(SPI). The FT232 is designed for async serial not sync so its all done in software.

You could just upload a bootloader like arduino which would allow you to upload code via the async serial interface using the ft232 in normal mode or any async serial interface using level converters as needed. Just don't forget to use the right bootloader for your clock speed and to set the fuse bytes correctly.


1

Many programmable devices have historically required that they be programmed using relatively-precisely timed sequences of signals. In many cases, if one only wanted to program one particular type of device, the required hardware would have been quite simple, but since different devices had different requirements, building a more general-purpose programmer was somewhat more difficult.

Today, one could probably program more than 50% of programmable devices using nothing more than a USB I/O cable and PC software, but "hardware" programmers still have a considerable speed advantage. For the PC to react to a signal received by a USB device and send a response generally takes a minimum of 1-2 milliseconds. If a programming sequence requires repeatedly asking a device when it's ready for the next chunk of data and then sending it, using a simple I/O cable would add an extra millisecond or two to the time required to handle each chunk. Depending upon the nature of the device in question, that could increase the overall time required for programming by an order of magnitude compared with a programmer which could be told, while waiting for a device to be ready, what it should do once it is.

Personally, I like the approach of having flash-equipped devices ship from the factory with a boot-loader in memory that can be used with a minimum of programming hardware. If the device supports flash programming under software control, such an approach may simplify production without adding anything to the cost of the silicon beyond the very small marginal time required to have the factory test fixture program in the boot-loader after it has done everything else.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.