Forum: Mikrocontroller und Digitale Elektronik Projektidee: Programm auf SD Karte wird in PIC18F ausgeführt


von Karlos (Gast)


Lesenswert?

Hallo Leute,

Ich habe folgende Idee:
Ein Programm von einer SD Karte wird in einem PIC18F ausgeführt.
Dies hätte den Vorteil, bei einem Firmwareupdate, den Kunden nur eine 
neu SD Karte zu schicken.

Wie sollte es funktionieren:
SD Karte hängt am SPI bei einem PIC18 mit externem Memory 
Bus(zb.PIC18F85J50).
Am Memory Bus wird ein SRAM angeschlossen.
Beim Starten prüft der PIC18F, ob sich ein Programm im externen Speicher 
befindet.
Wenn nein, wird das Programm von der SD Karte in den Ram kopiert.
Der PIC startet neu. Es wird wider geprüft.
Es wird ein Programm gefunden.
Das Programm wird vom SRAM ausgeführt.

Ist dies realisierbar, oder bietet der Bootblock dafür zuwenig Speicher?
Am Anfang müsste es nicht umbedingt eine FAT32 / FAT16 Implementierung 
geben.

von Linüx (Gast)


Lesenswert?

So macht man das nicht. Man verwendet einen Bootloader und überprüft 
nach dem Reset, ob auf der SD-Karte/USB-Schnittstelle/... ein neues 
Programm da ist. Wenn ja lässt man den PIC sich selbst flashen. Alles 
andere ist Murks hoch 25.-

von Karlos (Gast)


Lesenswert?

Der Gedanke ist der , das das Programm während des Laufens auch geändert 
werden könnte, und der Flash geschont wird.
Ausserdem währe eine SD Karten <-> PIC Codierung denkbar zwecks 
Verschlüsslung der Firmware

von Karl H. (kbuchegg)


Lesenswert?

Karlos schrieb:
> Der Gedanke ist der , das das Programm während des Laufens auch geändert
> werden könnte, und der Flash geschont wird.

Wie oft kann das Flash #garantiert# neu beschrieben werden. (Und immer 
daran denken, das ist kein Ablaufzähler. Auch wenn du 'nur' eine 
Garantie für 10000 Schreibzyklen hast, bedeutet das nicht das mit dem 
10001-ten Schreibversuch alles vorbei ist).
Also: wie oft kann das Flash bei deinem PIC beschrieben werden? Wie oft, 
geschätzt, benötigst du den Fall, die Firmware upzudaten. Wie viele 
Jahrhunderte hält daher das Flash?


Edit: oder meinst du selbstmodifizierenden Code.
Da kann ich nur sagen: Finger weg!

von Karl H. (kbuchegg)


Lesenswert?

Karlos schrieb:

> Ausserdem währe eine SD Karten <-> PIC Codierung denkbar zwecks
> Verschlüsslung der Firmware

Wenn du sowieso kein FAT hast, also ein normales Dateisystem, dann 
beschreib die Karte einfach in einer wilden Sektorreihenfolge und lies 
die Einzelteile auch wieder in dieser Reihenfolge. Schon alleine diese 
einfache Massnahme sorgt dafür, dass es fast unmöglich ist, ohne die 
korrekte Reihenfolge das Programm zu entschlüsseln. Dazu noch ein XOR 
mit einer Konstanten über alle Bytes drüber und das wars.
Aber wahrscheinlich interessiert sich sowieso keiner für das Programm, 
noch nicht mal die Chinesen - vegebene Liebesmühe, viel Aufwand für 
nichts.

von Davis (Gast)


Lesenswert?

> Dazu noch ein XOR mit einer Konstanten über alle Bytes drüber und das
> wars.

Für jedes Byte die gleiche Konstante ist zu wenig. Sollte schon ein 
wenig länger sein (z. B. 256 Byte) plus Sektor verwürfeln (siehe oben).

> ... noch nicht mal die Chinesen ...

Die sind i. d. R. nicht das Problem. Die eigenen Kunden könnten das 
Problem sein.

von Der Rächer der Transistormorde (Gast)


Lesenswert?

Karlos schrieb:
> Wie sollte es funktionieren:
> SD Karte hängt am SPI bei einem PIC18 mit externem Memory
> Bus(zb.PIC18F85J50).

Was jede Menge Hardware braucht nur um ein Programm zu starten / zu 
flashen.

Wo ist der Vorteil zum Bootloader der ja auch noch USB kann?

von Michael H. (morph1)


Lesenswert?

und schnarchlangsam ist das ganze auch noch.

wenn du programme von einem externen medium ohne flashen ausführen 
willst sieh dir die pic32 an, die können program-execution-from-ram.

alles andere schreit nach einem bootloader, der dann immernoch 
verschlüsselte files laden könnte.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.