Probleme beim Programmieren des LPC1343-Mikrocontrollers in Ubuntu

7

Wenn ich eine Binärdatei, die auf einem lpc1343 funktioniert, auf das gemountete USB-Gerät kopiere, das den lpc1343-Flash darstellt, wird die Binärdatei geändert und funktioniert nicht. Dasselbe mit dem über USB gemounteten Flash unter Windows oder Mac OS zu tun, hat nicht das gleiche Problem. Was könnte das Problem sein und wie kann es behoben werden?

Bearbeiten: Das Problem scheint die vfat-Implementierung unter Linux zu sein, die vor der zu übertragenden Datei 0s vorangestellt zu haben scheint.

txwikinger
quelle
Sind Sie zu 100% sicher, dass es sich um dieselbe Binärdatei handelt? Wie genau kopieren Sie die Datei unter Ubuntu? Haben Sie verschiedene Kopiermethoden ausprobiert?
Igor Skochinsky
Ja, ich bin sicher. Ich habe das Problem gefunden. Es scheint die Art zu sein, wie Linux mit vfat umgeht. Es scheint vor dem Senden der Datei Nullen voranzustellen, die von vielen USB-Geräten ignoriert werden, aber immer noch nicht mit dem Standard kompatibel sind.
txwikinger
Wenn Sie sagen, dass vor dem Senden der Datei 0s vorangestellt werden, was meinen Sie damit? Woher weißt du das? Kopieren Sie eine funktionierende Binärdatei (die Sie auf einem Windows / Mac verwenden können) oder kopieren Sie eine auf Ihrem Ubuntu-Computer erstellte Binärdatei? Welche Schritte durchlaufen Sie, um die Binärdatei zu kopieren? Welche Einstellungen haben Sie in fstab für das USB-Gerät? Tun Sie dies als Root oder als nicht privilegierter Benutzer? Klicken und ziehen Sie oder kopieren Sie in der Befehlszeile? Wenn es ein Problem mit Ubuntu, ausführbaren Dateien und vfat-Geräten gibt, warum ist es nicht allgemein bekannt? Sie denken, es gibt einen veröffentlichten Standard für vfat?
Amos
Wir haben die gleiche Binärdatei von einem Windows-, einem Mac-Betriebssystem und mehreren Linux-Maschinen gesendet. Wir haben von der Kommandozeile aus kopiert, kopiert und im Dateibrowser eingefügt sowie per Drag & Drop. Der Grund, warum es nicht allgemein bekannt ist, ist, dass die meisten USB-Geräte diese Nullen tolerieren (ich denke, lassen Sie sie einfach fallen), das auf dem lpc1343 implementierte vfat jedoch nicht (was dem Standard entspricht). Wenn Sie mcopy von mtools unter Unix auf dem Blockgerät verwenden, wird die Datei korrekt übertragen, anstatt das vfat zu mounten.
Txwikinger
1
Meinen Sie damit, dass die Binärdatei zu Beginn mit einer nicht angegebenen Anzahl von 0 s aufgefüllt wird? Sie scheinen eine funktionierende Lösung für dieses Problem zu haben. Warum nicht unten eine detailliertere Antwort veröffentlichen, damit andere dieses Wissen leichter teilen können? Wenn Sie dem Link in Ihrem Profil folgen, sehen Sie, dass Sie über 10.000 Wiederholungspunkte von verschiedenen SE-Sites haben, sodass Sie den Drill jetzt kennen.
Amos

Antworten:

3

Sie können dies lösen, indem Sie mtools(Userspace Fat Utilities) verwenden:

mdel -i /dev/sdf ::/firmware.bin
mcopy -i /dev/sdf new_firmware.bin ::/
max taldykin
quelle
So habe ich es immer gemacht. Es ist eine gute Lösung für einen schlecht geschriebenen Bootloader.
Jim Paris
Was machen die Option -i und das ::?
JulienFr
"Der Laufwerksbuchstabe: (Doppelpunkt) hat eine besondere Bedeutung. Er wird verwendet, um mit den Optionen -i auf Bilddateien zuzugreifen, die direkt in der Befehlszeile angegeben sind." Sie können hier im Handbuch darüber lesen .
Max Taldykin
2

Eine andere Lösung besteht darin, das Simpleflash-Python-Skript aus dem Git-Repository r0ket [1] zu verwenden. Es schreibt direkt auf das Gerät, anstatt "cp" zu verwenden. Ich musste die Größe in Zeile 20 von 32 auf 64 ändern, um mit einem LPC1347-Testboard zu arbeiten ...

Das Skript finden Sie hier .

[1] LPC1343-Karte

Jens
quelle