Program för att redigera avr-fuses.

Elektronik- och mekanikrelaterad mjukvara/litteratur. (T.ex schema-CAD, simulering, böcker, manualer mm. OS-problem hör inte hit!)
Användarvisningsbild
tlvb
Inlägg: 132
Blev medlem: 13 januari 2009, 00:40:17
Ort: Lund
Kontakt:

Program för att redigera avr-fuses.

Inlägg av tlvb »

Detta kanske hör hemma i mikroprocessordelen, men eftersom det är ett datorprogram så lägger jag det här.

Eftersom min kontakt med avr-programmering har handlat om kodning i gedit, makefiles gcc och avrdude, så har jag saknat ett program som ger enkel tillgång till fusebitarna på mikrokontrollern (bör nämnas att jag inte har letat så noga eller alls eftersom det bara är en sak man tänker på när man väl behöver den).
Det är möjligt att jag uppfinner hjulet på nytt men har nu skrivit ett konsolprogram som ordnar läsning, redigering och skrivning.

Systemkrav:
  • python
  • avrdude

Innehåll:
  • fusili_core.py - här är de grundläggande funktionerna
  • fusili_cli.py - terminalinterface till core
  • m16.py, m32.py - definitonsfiler för olika verisioner, dessa är de jag har gjort men det är lätt att skapa egna.


Programmet används på egen risk, men jag anser det vara tillräckligt stabilt för mina egna projekt. Eftersom jag är linuxanvändare är det linux jag fokuserat på, men det bör med eventuella modifikationer fungera på windows med (t.ex. ändra "/tmp" på rad 13 i fusili_core.py till något annat)
http://users.student.lth.se/et06lb2/fusili.tar.gz

kommentarer? frågor? önskemål?
Användarvisningsbild
manw
Inlägg: 207
Blev medlem: 16 november 2005, 11:16:17
Ort: Södermalm

Re: Program för att redigera avr-fuses.

Inlägg av manw »

Men vilken hårdrvara använder du? Det stora problemet är om man lyckats få fusebitarna på ett sådant sätt att det inte går att accessa kretsen via serieprogrammeraren. Man måste i så fall gå över på "High Voltage Parallel programming".

Jag började skriva program för detta, med att använda en AVR för detta. Har inte orkat slutföra ännu. Började med en ATtiny2313, för att reparera en likadan, men brist på GPIO fick mig att gå vidare med en ATmega88. Även där blev det för roddigt med GPIO grejen, så om jag "börjar om" en tredje gång så kommer jag nog gå på en ATmega32.

Min tråd finns i "Projekt", "AVR-Fuses restore"

http://elektronikforumet.com/forum/view ... =3&t=31929
sodjan
EF Sponsor
Inlägg: 43249
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Program för att redigera avr-fuses.

Inlägg av sodjan »

Fuse biterna är väl något man ställer in *före* programmeringen.
Blir det fel ställer man om dom och programmerar om kretsen (om det går).
I vilket läge (förrutom verifieringen i samband med programmeringen) vill man
läsa tillbaka fuse bitarna och ändra dom ? Kan man ändra fuse bitarna utan
att redera hela kretsen ? OK, det kanske man kan...
Användarvisningsbild
tlvb
Inlägg: 132
Blev medlem: 13 januari 2009, 00:40:17
Ort: Lund
Kontakt:

Re: Program för att redigera avr-fuses.

Inlägg av tlvb »

Hmm, höll inte så noga koll på denna tåden, ursäkta tidsskillnaden.

Manw: Det där med en hårdvarukonstruktion som kan programmera in default-fusarna låter som en bra idé, har fungerat lite på det själv men aldrig kommit till skott. När det gäller mitt program så är den riktad till vanlig programmeringshårdvara och vilken programmerare som används borde vara mer eller mindre egalt så länge avrdude stödjer den. Med andra ord, lyckas man låsa sin krets så behöver man alltså en avrdude-kompatibel högspänningsprogrammerare men iannat fall duger en vanlig. Programmet förutsätter att man skickar parametrar till den, som sedan skickas vidare till avrdude. -p -c -P -parametrarna fungerar likadant som för avrdude, förutom att om du specificerar -p m32 så letar den efter en m32.py med instruktion om vilka fuses som heter vad.

Sodjan: Min tanke med möjligheten att läsa fuse-bitar är väl i princip att man t.ex. ska kunna gå in och ändra enstaka bitar utan att behöva ha en lista på exakt vilka bitar man satte hur vid förra breadboard-projektet. Så vitt jag vet kan man skriva fuses utan att behöva göra något med programminnet.

Det är sent, inlägget kanske är lite svårläst på grund av detta.
sodjan
EF Sponsor
Inlägg: 43249
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Program för att redigera avr-fuses.

Inlägg av sodjan »

> utan att behöva ha en lista på exakt vilka bitar man satte hur vid förra breadboard-projektet.

Varje projekt har väl dessa i källkoden, så jag förstår inte problemet alls.
Eller har man inte det ?
eqlazer
Inlägg: 923
Blev medlem: 22 september 2007, 13:53:45
Ort: Göteborg

Re: Program för att redigera avr-fuses.

Inlägg av eqlazer »

Nej fuse-registerna kan inte hanteras i källkoden (inte mer än clkdiv-biten om jag minns rätt). Det är via programmeraren som dessa register läses och skrivs.
För jag antar att du med "i källkoden" inte menar dokumentation och kommentarer.

Har man ett projekt som använder sig utav en makefile så skriver man lämpligen dit alla fuses i makefilen som parametrar vilka i sin tur kan användas vid anrop utav tex avrdude.
sodjan
EF Sponsor
Inlägg: 43249
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Program för att redigera avr-fuses.

Inlägg av sodjan »

Med "i källkoden" menar jag just exakt det, "i källkoden".

Jag menar så klart i något direktiv som sätter "fuses" i hex-filen när
man bygger om projektet. Typ "__CONFIG" direktivet i PIC assembler.
Programmeraren tar sedan dessa från HEX filen vid "flashningen".
Att hålla på och manipulera fuses direkt i programmerarens programvara
manuellt kan nog lätt ge upphov till diverse intressanta "problem"...

Jag menade inte dokumentationen eller kommentarer, även om det
ju i alla fall är bättre än att inte hålla reda på det alls. Och jag menade
självklart inte att man hanterar fuses i run-time koden.
Användarvisningsbild
tlvb
Inlägg: 132
Blev medlem: 13 januari 2009, 00:40:17
Ort: Lund
Kontakt:

Re: Program för att redigera avr-fuses.

Inlägg av tlvb »

Rent tekniskt sett så är fuseminne och programminne skilda på en avr och programmeras med olika parametrar (och filer), men det finns inget som hindrar att man gör en makefile som även skriver filer som man fyller med respektive fuse. När jag påbörjade detta program så var jag ganska oklar på om avr-fuses var baserade på positiv eller negativ logik, hur msb/lsb var numrerade och så vidare, så jag gjorde programmet, såg till att det blev rätt och slapp förvirringen. Dessutom är make-filen som jag använder (inte skriven av mig) såpass komplex att jag skulle ha svårt att lägga till skrivning av fusebits, med mina ytterst begränsade kunskaper inom make.
Skriv svar