2009-07-09 1 views
1

Ich habe ein CE 6.0-Projekt auf einem PXA310, wo ich OS-Updates (nk.bin) über Wi-Fi herunterladen und das neue Betriebssystem sicher auf meinem Gerät flashen kann. Ich bin offen für andere Vorschläge, wie das geht, aber ich überlege, die nk.bin in meinem Dateisystem im NAND-Flash zu speichern, dann neu zu starten und den Bootloader die Datei im Dateisystem suchen zu lassen und sie auf BINFS zu flashen Partition. Ist das möglich, und wenn ja, können Sie mir einen Überblick darüber geben, was ich tun müsste?Kann ich ein Dateisystem erstellen, auf das von CE 6.0 und meinem Bootloader aus zugegriffen werden kann?

Ein Nachteil ist, dass dies sehr robust sein muss, da die Geräte im Feld eingesetzt werden und nicht vor Ort gewartet werden können. Ich muss sicher sein, dass, wenn der Betriebssystem-Flash (aufgrund eines Stromausfalls usw.) fehlschlägt, der Bootloader nach einem Neustart es erneut versuchen kann. Aus diesem Grund möchte ich das heruntergeladene Bild im permanenten Flash speichern und es vermeiden, das Bild erneut herunterladen zu müssen.

Antwort

0

Technisch ist fast alles möglich. Für diese Strategie benötigen Sie Code, damit Ihr Bootloader den NAND-Flash als Laufwerk bereitstellt und über einen FAT-Treiber verfügt, damit er dieses Dateisystem durchlaufen und das Image finden kann. Das ist eine Menge Arbeit, wenn Sie es nicht schon haben.

Die andere Möglichkeit besteht darin, sie einfach in Flash außerhalb des Dateisystems an einer bekannten Adresse zu speichern. Das ist aus der Sicht des Bootloaders viel einfacher, da Sie nur die Adresse kopieren und kopieren müssen. Natürlich macht es das Schreiben schwieriger, weil Sie es dann vom Betriebssystem aus tun und Sie müssen alle anderen Flash-Zugriffe vollständig deaktivieren, während Sie schreiben, um eine Beschädigung durch zwei Threads zu verhindern, die gleichzeitig Flash-Befehle an den Chip senden.

In beiden Fällen ist es eine gute Idee, ein "bekannt gutes" Image auch an anderer Stelle zu speichern, wenn das neue Image ein Problem hat (eine Prüfsumme fehlschlägt oder x Anzahl der Ladeversuche fehlschlägt) Dann haben Sie ein funktionierendes Betriebssystem, auf das der Bootloader zurückgreifen kann.

+0

Danke für die schnelle Antwort, Chris! Für unser PXA270/NOR-basiertes Produkt, ich heruntergefahren MSFLASH und dann RFD verwenden, um das neue Betriebssystem auf eine sekundäre Partition zu flashen, dann der Bootloader blinkt das in die echte Betriebssystempartition. Das funktioniert großartig, aber es kostet viel Flash. Deshalb möchte ich, dass eine FATFS doppelt Pflicht ist. Können Sie mich auf Informationen darüber, wie Sie den NAND-Flash als Laufwerk im Bootloader mounten? Ich wollte mit der SD/MMC-Download-Option aus dem Zylonite BSP starten, da dies ein FATFS ist. Ist das sinnvoll? – rjones54

+0

Der SD-Treiber oder ein USB-Flash-Treiber wäre sinnvoll, da beide über FAT verfügen.Sie werden immer noch die Low-Level-Flash-Access-Stücke extrahieren müssen, aber das sollte schon da sein, wenn es bereits Flash liest und schreibt. – ctacke

0

Natürlich hängt viel von Ihrer Hardware-Installation ab, aber wir haben dies getan, ohne dass der Bootloader das Flash-Dateisystem unterstützt.

In unserem Produkt wird das Betriebssystem-Image aus Flash geladen, um es aus dem RAM auszuführen - ich denke, die meisten WinCE-Geräte funktionieren heutzutage so. Um das Betriebssystem zu aktualisieren, verwenden wir einen speziellen Flash-Treiber, der eine Anwendung, die unter WinCE läuft, die OS-Blöcke im Flash aktualisiert - dann brauchen Sie nur einen harten Neustart und der Bootloader lädt das neue Flash-Image in den RAM Führ es aus. Wir haben festgestellt, dass dies in diesem Bereich ziemlich zuverlässig ist (mit einigen nicht sehr technischen Endbenutzern!).

Ein spezieller Flash-Treiber wurde benötigt, da die MS-Flash-Dateisystem-Treiber keinen Zugriff auf die BS-Bildsektoren des Flash haben, um das versehentliche Abstürzen des Betriebssystems zu verhindern.

Sie müssen die NK.BIN in einem gewissen Speicher laden, die die OS-Programmierung Anwendung lesen kann, in der Regel des NAND-Flash, aber wenn Sie es genug RAM mußten einfach in die Wurzel des Dateispeichers gehen könnte. Wie auch immer Sie es löschen können, wenn Sie die Betriebssystemsektoren vor dem Neustart programmiert haben, es ist nur eine vorübergehende Anforderung.

+0

Für diese Lösung müssen Sie sicherstellen, dass das Updater-Image RAM-basiert ist, sodass beim Zugriff auf die Flash-Medien keine Registrierungsspülung erfolgt – Shaihi

Verwandte Themen