为什么我们需要硬件程序员?


22

我使用Boarduino和30行面包板为ATtiny编程。我加载了一个不太复杂的草图,称为ArduinoISP(现在默认包含在Arduino IDE中),突然我有了一个正在工作的程序员。Atmel出售一款不错的编程器,价格在30到40美元之间,并且有很多工具包可以使价格更便宜。

一旦找到了工作的程序员,并做了些指示灯,我就感到非常高兴。但是,现在我可怜的boarduino被卡在程序员的职责上。

据我所知,程序员按住复位按钮,然后在MOSI和MISO引脚上进行发送和接收。 我认为SCK未使用或至少不需要。 (根据ATtiny数据表,需要SCK,如果没有它,我的程序员将无法工作,而且我找不到我认为不需要的地方。)

为什么我需要硬件编程器才能传输串行信号?我的意思是,让我们假设我愿意用手指按住复位按钮,而不是使用IC。剩下的就是串行发送和接收,所以我只需要三根线GND,RXD和TXD。哎呀,如果我有“ DTR”线或其他任何东西,您甚至可以使用串行电缆按住复位按钮。

为什么所有这些硬件解决方案需要精美的软件(例如AVRdude或AVR Studio或其他)?

我的意思是我可以理解一条USB电缆,该电缆将微控制器作为大容量存储设备呈现出来,并允许您拖动二进制文件进行编程(例如此ARM开发板)。仅硬件,使用标准软件驱动程序。

我也可以理解纯软件的解决方案(使用FTDI芯片之类的东西简化从USB到芯片的连接线)。所有精美的编程协议都将由计算机上的软件处理,而硬件将只是一些电线。

为什么我们同时涉及(复杂的)软件和硬件?我的意思是,据我所知,对微控制器进行编程非常容易,但是当我刚接触它时,我真的很担心自己如何从mouser或digikey购买芯片而无需花一些专家来编写引导加载程序为了我。

我敢肯定有一个很好的理由(这不是我编写软件或开始制造拖放式USB编程器),但是作为一个新手,我不知道它是什么。


您的自制硬件编程器是否允许调试?您可能只是一个很好的编程人员,但是如果您想进行片上调试(在代码中设置断点并在到达该点时停止执行),则可能需要硬件程序员,因为该操作可能会对复位线产生影响。
Joel B 2010年

1
您可能会被逗乐的事情, hackaday.com/2013/05/10/...
binarysmacker

Answers:


18

没错,对AVR进行编程非常简单。这只是在SPI之上实现的自定义协议,以低电压运行。需要SCK。

但是,对较旧的PIC编程(以及非ISP AVR编程)需要高压和不同的自定义协议。这需要一个特殊的硬件编程器。

其他设备更复杂。大多数ARM微控制器必须通过JTAG进行编程,此处直接写入内存,并指示处理器写入闪存。同样,每个设备都是不同的。


有什么想法为什么要这么复杂吗?AVR方式(低压,标准协议)似乎比要求自定义程序员要明智得多(例如,这个有8051/8052程序员需要的人-需要帮助,可以提供代表!electronics.stackexchange.com/questions/4104
Kevin威猛(Vermeer)2010年

2
PIC编程器确实没有什么特别的或昂贵的。在线有许多设计可用,并且大多数新的PIC都可以进行低压编程。
akohlsmith 2010年

4
IC制造商并不真正在乎爱好者使用的复杂性。只要它可以用于大批量生产,否则一切都与成本有关。
endlith 2010年

2
首先是高压编程,它是80年代对紫外线可擦除EPROM进行编程的方法(以及包含此类EPROM的微控制器)。
starblue 2010年

修复了SCK索赔。我喜欢只需要SPI的想法,但是由于计算机没有SPI端口(而FTDI电缆中已经有4美元的芯片了!),我们不妨花2美元购买微控制器。一般而言,JTAG上传和调试的论点使我受益于开发板的好处,我认为endolith有一个好处,那就是没人在乎我花20美元买什么。制造商关心真正的工程师(及其雇主)将在预算上花费什么。
Jack Schmidt

5

我做了很多研究,并准备开始使用AVR,但是我从未真正使用过AVR,因此这可能是错误的,但是:

最便宜的编程器将不支持AVR高压编程。如果使用熔丝位将控制器设置为不可编程,或者您以某种方式犯了一些严重的错误并且需要将其重置为默认值,则需要此操作。


2
诸如AVRISP mkII [1]或USBtinyISP [2]之类的低压编程器可用于与avrdude或其他编程器设置熔断器,但它们无法保存已制成无法启动或将其复位线转换为AVR的AVR芯片。 GPIO。您确实需要高压编程器。[1] mouser.com/search/… [2] ladyada.net/make/usbtinyisp
blalor

@blalor根据此信息,我将编辑答案。
AndrejaKo 2010年

我确实看到了一些有关制作高压编程器的说明(并且该芯片的数据表似乎对设计一种高压编程器有非常详细的说明),但是我一直等到我将其中一块芯片砌好后再尝试。我的振荡器明天就到了,所以我要烧保险丝,并尽快诱使这名砖仙子!
Jack Schmidt

值得注意的是,avrdude会仔细检查您的保险丝,以防止出现此问题。一个较常见的问题是将芯片设置为外部时钟。
Yann Vernier

4

最便宜的AVR程序员只是将串行接口与复位线同步。您可以使用FT232来串行输出串行外围设备接口(SPI)。FT232专为异步串行而不是同步而设计,因此全部由软件完成。

您可以只上传一个类似arduino的引导程序,它可以让您在正常模式下使用ft232通过异步串行接口上​​传代码,或者在需要时使用电平转换器通过任何异步串行接口上​​传代码。只是不要忘记为时钟速度使用正确的引导程序,并正确设置保险丝字节。


1

从历史上看,许多可编程设备要求使用相对精确的定时信号序列对其进行编程。在许多情况下,如果只想对一种特定类型的设备进行编程,则所需的硬件将非常简单,但是由于不同的设备具有不同的要求,因此构建更通用的编程器会​​更加困难。

如今,仅使用USB I / O电缆和PC软件就可以对50%以上的可编程设备进行编程,但是“硬件”程序员仍然具有相当大的速度优势。为了使PC对USB设备接收的信号做出反应并发送响应,通常至少需要1-2毫秒。如果编程序列要求反复询问设备何时准备好接收下一个数据块,然后再发送数据,则使用简单的I / O电缆将使处理每个数据块所需的时间增加一到两个毫秒。与所讨论的设备相比,根据所讨论设备的性质,这可能会使编程所需的总时间增加一个数量级。在等待设备准备就绪时,程序员会被告知设备一旦完成就应该做什么。

就个人而言,我喜欢这样的方法:配备闪存的设备出厂时在内存中带有引导加载程序,可以与最少的编程硬件一起使用。如果设备支持在软件控制下进行闪存编程,则这种方法可以简化生产,而不会在完成其他所有操作后将工厂测试夹具程序放入引导加载程序中所需的非常短的边际时间内,不增加任何硅成本。 。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.