Neden donanım programcılarına ihtiyacımız var?


22

ATtiny'mi programlamak için Boarduino ve 30 sıra ekmek tahtası kullanıyorum. ArduinoISP (artık varsayılan olarak Arduino IDE'ye dahil edildi) adı verilen çok karmaşık olmayan bir eskiz yüklüyorum ve aniden çalışan bir programcım var. Atmel 30 ile 40 dolar arasında güzel bir programcı satıyor ve daha ucuz olanları yapmak için birçok kit var.

Çalışan programcımı aldığımda ve minik yanıp sönen bazı ledleri yaktığımda çok mutlu oldum. Ancak, şimdi benim fakir boarduino programcı görevinde sıkışıp kaldı.

Bu programcının söyleyebileceğim kadarıyla sıfırlama düğmesini basılı tutup, MOSI ve MISO pinlerini iletiyor ve alıyor. Bence SCK kullanılmamış ya da en azından gereksiz. (ATtiny veri sayfasına göre SCK gereklidir, programcım onsuz çalışmıyor ve okumaya ihtiyacım olmadığını düşündüğüm yeri bulamıyorum.)

Seri yayınlamak için neden bir donanım programcısına ihtiyacım var? Diyelim ki bir IC kullanmak yerine sıfırlama düğmesini parmağımla basılı tutmaya istekli olduğumu varsayalım. Geriye kalan tek şey seri gönderme ve alma, bu yüzden tek ihtiyacım olan üç kablo GND, RXD ve TXD. Heck, eğer "DTR" hattım varsa ya da her neyse, sıfırlama düğmesini seri kabloyla bile basılı tutabilirsiniz.

Neden bütün bu donanım çözümleri vardır da fantezi yazılımı gerektiren (AVRdude gibi, veya AVR stüdyo, ya da her neyse)?

Demek istediğim, mikrodenetleyiciyi bir yığın depolama aygıtı olarak sunan küçük bir USB kablosunu anlayabilir ve programlama için ikili dosyaları sürüklemenize izin verebilirim ( bu ARM geliştirme kartı gibi ). Yalnızca donanım, standart yazılım sürücülerini kullanarak.

Yalnızca bir yazılım çözümünü de anlayabiliyordum (USB'den çipe giden telleri modüle eden, tellerin aşağı doğru gidenleri basitleştirmek için FTDI çipi gibi bir şey kullanarak). Tüm fantezi programlama protokolü bilgisayardaki bir yazılım tarafından ele alınacak ve donanım sadece bazı kablolar olacaktır.

Neden her iki (karmaşık) yazılım ve donanıma sahibiz? Demek istediğim, söyleyebileceğim kadarıyla, mikrodenetleyicileri programlamak oldukça kolaydır, ancak bu konuya girdiğimde, bir yükleyiciyi programlamak için biraz guru ödemeden mouser veya digikey'den nasıl bir çip alacağım konusunda gerçekten endişelendim. benim için.

Bunun iyi bir nedeni olduğuna eminim (yazılımı yazdım ya da sürükle bırak USB programcısını üretmeye başladım gibi değil), fakat yeni gelen biri olarak ne olduğu hakkında hiçbir fikrim yok.


Ev yapımı donanım programcınız hata ayıklamaya izin veriyor mu? Tek başına iyi bir programlama yapabilirsiniz, ancak çip üzerinde hata ayıklama yapmak istiyorsanız (koddaki kesme noktalarını ayarlama ve bu noktaya ulaştığınızda yürütmeyi durdurma), çünkü bu işlem sıfırlama çizgisiyle komik şeyler yapabilir.
Joel B,

Yanıtlar:


18

Haklısınız, AVR'lerin programlanması oldukça kolaydır. Sadece düşük voltajla çalışan SPI'nin üstüne uygulanan özel bir protokol. SCK gerekli.

Ancak, eski PIC'lerin programlanması (ve ISP olmayan AVR programlaması) yüksek voltajlar ve farklı bir özel protokol gerektirir. Bu özel bir donanım programcısı gerektirir.

Diğer cihazlar daha karmaşık. ARM mikrodenetleyicilerinin çoğu, JTAG üzerinden programlanmalıdır, burada bellek doğrudan yazılır ve işlemciye flaşa yazması talimatı verilir. Yine, her cihaz farklı.


Bunların neden bu kadar karmaşık olduğu hakkında fikrin var mı? AVR yolu (Alçak gerilim, standart protokolü) çok daha mantıklı bir özel programcı gerektiren daha görünüyor (bir 8051/8052 programcı ihtiyacı olan bu adam gibi - yardım istedi rep kullanılabilir! Electronics.stackexchange.com/questions/4104 )
Kevin Vermeer

2
PIC programcıları hakkında gerçekten özel veya pahalı bir şey yok; çevrimiçi olarak birçok tasarım mevcuttur ve çoğu yeni PIC düşük voltaj programlanabilir.
akohlsmith 30.09.2010

4
IC üreticileri, hobilerin kullanması için bir şeyin ne kadar karmaşık olduğunu umursamıyor. Büyük miktarda üretimde kullanılabildiği sürece, hepsi maliyetle ilgilidir.
Endolit

2
İlk önce yüksek voltajlı programlama yapıldı, seksenli yıllarda UV ile silinebilen EPROM'ları (ve bu EPROM'ları içeren mikrodenetleyicileri) programlamanın yoluydu.
starblue 18

SCK iddiası düzeltildi. Sadece SPI'nın gerekli olduğu fikrini seviyorum, ancak bilgisayarların bir SPI bağlantı noktası olmadığından (ve FTDI kablosunun zaten içinde 4 dolarlık bir yonga olduğundan !!) 2 dolarlık bir mikrodenetleyicide bölebiliriz. JTAG yükleme ve hata ayıklama argümanı beni genel olarak bir geliştirme kurulunun yararlarından sattı ve endolitin 20 dolar harcadığım şeyi kimsenin umursamadığı iyi bir nokta olduğunu düşünüyorum; üreticiler, hangi gerçek mühendislerin (ve işverenlerinin) bütçelerini harcayacağına özen gösterir.
Jack Schmidt,

5

Çok fazla araştırma yaptım ve AVR'lerle oynamaya başlamak için hazırlanıyorum, ancak aslında hiç kullanmamıştım, bu yanlış olabilir, ancak:

Çoğu ucuz programcı AVR yüksek voltaj programlamasını desteklemez. Denetleyicinin sigorta uçları kullanılarak programlanamayacak şekilde ayarlanması durumunda veya bir şekilde bazı ciddi hatalar yapmışsanız ve bunu varsayılan ayarlara sıfırlamanız gerekiyorsa gerekir.


2
AVRISP mkII [1] veya USBtinyISP [2] gibi düşük voltajlı programlayıcılar, avrdude veya diğer programlayıcılarla sigortaları ayarlamak için kullanılabilir, ancak önyüklenebilir olmayan veya sıfırlama çizgisine dönüştürülmüş bir AVR yongasını kaydedemezler bir GPIO. Böyle bir şey için yüksek voltajlı bir programlayıcıya ihtiyacınız vardır. [1] mouser.com/search/… [2] ladyada.net/make/usbtinyisp
blalor

@blalor Bu bilgilerin ışığında cevabımı düzenleyeceğim.
AndrejaKo

Yüksek gerilim programcısı yapmayla ilgili bazı talimatlar gördüm (ve çipin veri sayfasının bir tane tasarımı hakkında oldukça ayrıntılı talimatlar var gibi görünüyor), ancak deneyene kadar fişlerimden birini tuğlalatana kadar bekliyorum. Osilatörlerim yarın buraya gelir, bu yüzden sigortaları yakacağım ve yakında tuğla perisini ayarlayacağım!
Jack Schmidt,

Bu sorunu önlemek için avrdude'nin sigorta bitlerini iki kez kontrol etmesi önemlidir. Biraz daha yaygın bir sorun çipi harici saate ayarlamaktır.
Yann Vernier

4

Çoğu ucuz AVR programlayıcı, sadece sıfırlama hattıyla seri arayüzleri senkronize eder. Seri Periferik Arabirimi (SPI) bitbang out için bir FT232 yapabilirsiniz. FT232, asenkron seri için tasarlanmamıştır, bu yüzden hepsi yazılımla yapılır.

Sadece normal modda ft232 kullanarak asenkron seri arayüz üzerinden veya gerektiğinde seviye dönüştürücüler kullanarak asenkron seri arayüz üzerinden kod yüklemenize izin veren arduino gibi bir bootloader yükleyebilirsiniz. Saat hızınız için doğru önyükleyiciyi kullanmayı ve sigorta baytlarını doğru şekilde ayarlamayı unutmayın.


1

Programlanabilir birçok cihaz, tarihsel olarak, göreceli olarak kesin olarak zamanlanmış sinyal dizileri kullanılarak programlanmalarını zorunlu kılmıştır. Çoğu durumda, yalnızca belirli bir tür cihazı programlamak isteniyorsa, gerekli donanım oldukça basit olurdu, ancak farklı cihazların farklı gereksinimleri olduğundan, daha genel amaçlı bir programcı oluşturmak biraz daha zordu.

Bugün, muhtemelen bir USB I / O kablosu ve PC yazılımından başka bir şey kullanarak programlanabilir cihazların% 50'sinden fazlasını programlayabilir, ancak "donanım" programcılarının hala önemli bir hız avantajı vardır. PC'nin bir USB cihazı tarafından alınan bir sinyale tepki vermesi ve bir yanıt göndermesi için genellikle en az 1-2 milisaniye gerekir. Bir programlama dizisi bir cihaza bir sonraki veri yığını için hazır olup olmadığını sormadan tekrar tekrar sormayı ve ardından göndermeyi gerektiriyorsa, basit bir G / Ç kablosu kullanarak her öbek için gereken süreye fazladan bir milisaniye veya iki ekleyecektir. Söz konusu cihazın yapısına bağlı olarak, bir aygıtın hazır olmasını beklerken söylenebilecek olan bir programlayıcıya kıyasla, programlama için gereken toplam süreyi bir büyüklük sırasına göre artırabilir.

Şahsen, flaş donanımlı cihazların fabrikadan en az programlama donanımıyla kullanılabilecek bellekte bir önyükleyici ile birlikte gönderilmesi yaklaşımını seviyorum. Cihaz, yazılım kontrolü altında flaş programlamayı destekliyorsa, böyle bir yaklaşım, her şeyi yaptıktan sonra ön yükleme yükleyicisindeki fabrika test fikstür programının yapılması için gereken çok küçük marjinal sürenin ötesinde silikon maliyetine bir şey eklemeden üretimi basitleştirebilir. .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.