Lite undringar kring det här med bootloaders

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 46878
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Lite undringar kring det här med bootloaders

Inlägg av TomasL »

Har lite funderingar till det här med bootloaders.
Tanken är naturligtvis att kunna programmera om systemet med en serielina istället för vanliga programmerare.
En fundering är då, normalt produceras en ELF-fil och en IntelHex fil, ingen av dem är väl direkt lämpliga för att ladda över till en bootloader, eller.
Vad är lämpliga filformat och lämplig teknik för att skapa detta.
Gissar att jag naturligtvis måste tillverka ett PC-program som pratar med bootloadern och skickar över data till den.
För att vidareutveckla det hela så tänkte jag också att man kan ha en dekrypterande bootloader som on-the-fly dekrypterar binärfilen innan den programmeras.
Tanken är då att använda XTEA eller nått liknande.
Nerre
Inlägg: 27168
Blev medlem: 19 maj 2008, 07:51:04
Ort: Upplands väsby

Re: Lite undringar kring det här med bootloaders

Inlägg av Nerre »

Det är väl egentligen ingen skillnad mellan att skriva en bootladdare och skriva annan kod som körs vid boot. Bootladdaren är ju helt enkelt en kod som körs vid boot och om inget annat händer så lämnar den sen över till "nyttokoden" så att säga.
Erik M
Inlägg: 1380
Blev medlem: 23 februari 2012, 18:34:39
Ort: Göteborg

Re: Lite undringar kring det här med bootloaders

Inlägg av Erik M »

Allt det där finns väl beskrivet hos MicroChip.

8-bit Bootloader
...och...
A FLASH Bootloader for PIC16 and PIC18 Devices

Så det känns lite som att gå över vatten att ge sig på.

Fast det är klart, du säger inget om i vilken miljö du befinner dig med detta...
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 46878
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: Lite undringar kring det här med bootloaders

Inlägg av TomasL »

Det vet jag, dock det intressanta är vilka tekniker/filformat/handskakning etc för att skicka över den nya programvaran så säkert som möjligt, vilken bootloadern skall programmera i processorns flashminne.
Jag vet att microchip har en hel del exempel, men allt är ju numera baserat på härket Harmony, vilket inte är roligt alls.
Erik M
Inlägg: 1380
Blev medlem: 23 februari 2012, 18:34:39
Ort: Göteborg

Re: Lite undringar kring det här med bootloaders

Inlägg av Erik M »

Du kan ju kolla hur Arduino löser det. Där går ju allt via bootloader. :vissla:

Att köra [av]kryptering lär du inte klara dig utan, inte om du önskar se andra använda var du hittar på och fram till.
Senast redigerad av Erik M 10 oktober 2016, 19:47:08, redigerad totalt 1 gång.
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 46878
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: Lite undringar kring det här med bootloaders

Inlägg av TomasL »

Nu är väl tanken den att filöverföringen bör vara tämligen robust, sas.
Nerre
Inlägg: 27168
Blev medlem: 19 maj 2008, 07:51:04
Ort: Upplands väsby

Re: Lite undringar kring det här med bootloaders

Inlägg av Nerre »

Det finns ju en uppsjö av olika filöverföringsprotokoll, på modem-tiden använde man ju de olika xmodem, zmodem och vad de nu hette.

Det är väl bara att välja och vraka i listan här
https://en.wikipedia.org/wiki/List_of_f ... onnections

Jag tror ju att krypteringbiten är betydligt värre att lösa.
Användarvisningsbild
rvl
Inlägg: 6878
Blev medlem: 5 april 2016, 14:58:53
Ort: Helsingfors

Re: Lite undringar kring det här med bootloaders

Inlägg av rvl »

Över 10 år gammal appnote för AVR: AVR230: DES Bootloader
Användarvisningsbild
lillahuset
Gått bort
Inlägg: 13969
Blev medlem: 3 juli 2008, 08:13:14
Ort: Norrköping

Re: Lite undringar kring det här med bootloaders

Inlägg av lillahuset »

Vi använder i våra projekt en "imagefil" som i verkligheten är en tarfil som är gzippad och innehåller ett bashscript som exekveras och vet vad det ska göra med alla ingående delar. Fördelen är att man kan skapa filer som ändrar nästan vad som helst i systemet. Vilket naturligtvis kan bli en nackdel om någon skapar en "imagefil" som installerar skadlig kod. 8)

För nivån "under", dvs "löven" eller underordnade enheter, nöjer vi oss med hexfiler som innehåller en CRC32.
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 46878
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: Lite undringar kring det här med bootloaders

Inlägg av TomasL »

Jo, naturligtvis finns det en uppsjö av filöverföringsprotokoll, men boot-rom är i regel inte så stort.
Gissar att ett vettigt sätt är att skicka en rad med programdata och någon form av vettig checksumma till processorn.

Krypteringen eller snarare dekrypteringen är nog den lättaste biten XTEA till exempel är tämligen enkel, funktionen ser ut så här:

Kod: Markera allt

void decipher(unsigned int num_rounds, uint32_t v[2], uint32_t const key[4]) {
    unsigned int i;
    uint32_t v0=v[0], v1=v[1], delta=0x9E3779B9, sum=delta*num_rounds;
    for (i=0; i < num_rounds; i++) {
        v1 -= (((v0 << 4) ^ (v0 >> 5)) + v0) ^ (sum + key[(sum>>11) & 3]);
        sum -= delta;
        v0 -= (((v1 << 4) ^ (v1 >> 5)) + v1) ^ (sum + key[sum & 3]);
    }
    v[0]=v0; v[1]=v1;
}
Det är allt.

Troligen får man skriva ett PC-program som plockar upp antingen ELF-Filen eller IntelHex-filen, avkodar denna, till en ren programavbild, krypterar den.
Ett annat PC-program ansluter till bootloadern, skickar det antal paket som behövs för en programmerings-rad samt checksumma.
För att förenkla det hela så kan man då använda fasta paketlängder, då man i förväg vet hur lång en rad är.
PC programmet måste ju också räkna ut adresser gissar jag så att bootloadern kan generera rätt interna adresser för sid-radering och rad-skrivning, alternativt så bakar man in dem i den befintliga program-binären redan när man skapar den.
Nerre
Inlägg: 27168
Blev medlem: 19 maj 2008, 07:51:04
Ort: Upplands väsby

Re: Lite undringar kring det här med bootloaders

Inlägg av Nerre »

Filöverföringsprotokollen som användes på modem-tiden var ju inga monster, på den tiden var de flesta program små.
bearing
Inlägg: 11666
Blev medlem: 2 mars 2006, 01:01:45
Ort: Ängelholm

Re: Lite undringar kring det här med bootloaders

Inlägg av bearing »

Slutet av varje rad i en intel hexfil är ju en checksumma. Tycker du inte att det är säkert nog?
Jag kan förstå din oro, för checksummor är ju inte helt säkra. Men har du varit med om att den flashade datan varit korrupt?

En CRC är säkrare, och ganska enkel att ordna.
Användarvisningsbild
Icecap
Inlägg: 26622
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Re: Lite undringar kring det här med bootloaders

Inlägg av Icecap »

Om säkerheten är som i "dataöverföringen är felfri" är den säkraste metod ju att spara ett block i RAM och sedan ha en "riktig" checksum för det block. Är det OK kan det brännas in och nästa block kan tas emot. Då använder man en checksum som är mer avancerat än rad-checksummen men gärna båda samtidig, då borde säkerheten vara bra.

Om säkerheten är kryptering osv. kan det lösas på olika sätt, ett är att man ska logga in med ett serienummer som är behandlat på något vis. Misslyckas man 3 gg kan man enbart logga in med master-lösenord och då bara radera programminnet osv.
sodjan
EF Sponsor
Inlägg: 43241
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Lite undringar kring det här med bootloaders

Inlägg av sodjan »

Hela lösningen beror ju väldigt mycket på vad det är för pryl.
Många "embedded" prylar, speciellt om de är tänka att användas
av någon utan speciell teknisk kompetens, har både nerladdning
och uppdatering inbyggda. Så de kan hämta och uppdatera helt
självständigt. De flesta "TV-boxar" fungerar så, ibland tar det
bara lite längre tid att start p.g.a. någon ny uppdatering...
opatagio
Inlägg: 236
Blev medlem: 24 maj 2005, 20:19:21

Re: Lite undringar kring det här med bootloaders

Inlägg av opatagio »

Xmodem med CRC?
Skriv svar