我使用Boarduino和 30 排面包板对我的 ATtiny 进行编程。我加载了一个名为ArduinoISP的不太复杂的草图(现在默认包含在 Arduino IDE 中),突然间我有了一个工作程序员。Atmel 以30 到 40 美元的价格出售一个不错的编程器,并且有很多工具包可以制作更便宜的工具包。
一旦我找到了我的工作程序员并让微小的闪烁变成了一些 LED,我感到非常高兴。然而,现在我可怜的 boarduino 被困在程序员的职责上。
据我所知,这个程序员按住复位按钮,然后在 MOSI 和 MISO 引脚上发送和接收。 我认为 SCK 未使用或至少不需要。 (根据 ATtiny 数据表需要 SCK,我的程序员没有它就无法工作,而且我找不到我认为不需要的地方。)
为什么我需要一个硬件编程器来传输串口?我的意思是,假设我愿意用手指按住复位按钮而不是使用 IC。剩下的就是串行发送和接收,所以我只需要三根线 GND、RXD 和 TXD。哎呀,如果我有“DTR”线或其他什么,你甚至可以用串行电缆按住重置按钮。
为什么所有这些硬件解决方案也需要花哨的软件(如 AVRdude 或 AVR studio 或其他)?
我的意思是我可以理解将微控制器呈现为大容量存储设备并让您将二进制文件拖过来进行编程的小型 USB 电缆(例如这个 ARM 开发板)。仅硬件,使用标准软件驱动程序。
我还可以理解一个纯软件的解决方案(从 USB 到芯片的模数挂钩,使用类似 FTDI 芯片的东西来简化电线的连接)。所有花哨的编程协议都将由计算机上的软件处理,而硬件只是一些电线。
为什么我们同时涉及(复杂的)软件和硬件?我的意思是,据我所知,对微控制器进行编程非常容易,但是当我刚开始学习时,我真的很担心我将如何从 mouser 或 digikey 购买芯片,而无需支付一些专家来编程引导加载程序为了我。
我确信有一个很好的理由(这不像我已经编写了软件或开始制造拖放式 USB 编程器),但作为一个新手,我不知道它是什么。