ARM / WM8505 / u-boot scriptcmd

27/06/2010 - 14:52 von Hubert Seidel | Report spam
Hi NG,

ich hab mir zum Experimentieren mit ARM das kleine
Mini-Notebook (JAY-Tech 9901) gekauft.
Hab nun etwas recherchiert, bin aber noch nicht ganz
durchgestiegen wie man komplett eigene Software
_booten_ kann. Evtl. hat das ja schon jemand gemacht?
(Soll ja Linux oder so für das Ding geben: Mir zu groß)

Hier meine bisherigen "noch wackeligen" Recherchen:

Zumm Booten von SD-Card bin ich auf "u-boot" gestoßen.
Eine Datei /script/scriptcmd ist wohl Dreh- und Angelpunkt.
Leider habe ich noch nicht heraus bekommen in welchem
Format dieses vorliegen soll bzw. erstellt werden muss.
In einem PDF (aber zum VT8500)
http://tails92.sepwich.com/files/ea..._1.2.1.pdf
habe ich bzgl. scriptcmd folgendes gefunden:
9. "bootcmd", "scriptcmd" and "gocmd"
The u-boot would run "bootcmd", if user doesn't kick
any key to stop entering user mode when counting.
The u-boot from version 0.12.10 supports other two
auto run mechanism. Those are "scriptcmd" and "gocmd".
When user doesn't kick any key to stop entering user
mode, the u-boot will first check if environment
variable "scriptcmd" is set, if it is, the u-boot
will first init SD card, if initialization successes,
it will load file "script/scriptcmd" in SD card to
address 0 in memory, and run "script/scriptcmd" as a
script file image. If user wants to use this
mechanism, please ensure SD card is plug-in, SD card
is in FAT file system (FAT-12/ FAT-16/ FAT-32) and
file "script/scriptcmd" is a valid script file image,
which means user should use the followed command to
compile a script file:

mkimage -A arm -O linux -T script -n "upgrade kernel env"
-d kernel_env zImage_upgrade_env.img

Wie kann ich nun unter Windows mit minimalem Aufwand ein
eigenes Assembler-Programm für ARM erstellen und booten?

Evtl. kann man Komponenten/Programme von Lazarus nutzen?
Habe mit Lazarus bereits erste Programme geschrieben
welche auf dem Mini-Notebook so liefen wie erwartet :-)
Im Ordner \bin\i386-win32\ findet man u.A: arm-wince-as.exe.
Das Programm mkimage und deren Parameter sagen mir nichts.
Bin diesbezüglich aber auch noch am rechercheiren.

Zufàllig jemand hier mit Ideen, Hinweise Tips oder Tricks?

mfg.
Herby

http://www.hubert-seidel.de
 

Lesen sie die antworten

#1 Jan Seiffert
28/06/2010 - 00:46 | Warnen spam
Hubert Seidel schrieb:
Hi NG,

ich hab mir zum Experimentieren mit ARM das kleine
Mini-Notebook (JAY-Tech 9901) gekauft.



Hmmm, Beagle Board ist ein Begriff? Die haben zumindest ne grosse Community =viele HOWTOs usw.

Oder einfach qemu?
Vielleicht kann man den auch so schoen single steppen wie bochs, oder hatte der
nicht ne gdb Schnittstelle?

Hab nun etwas recherchiert, bin aber noch nicht ganz
durchgestiegen wie man komplett eigene Software
_booten_ kann. Evtl. hat das ja schon jemand gemacht?
(Soll ja Linux oder so für das Ding geben: Mir zu groß)

Hier meine bisherigen "noch wackeligen" Recherchen:

Zumm Booten von SD-Card bin ich auf "u-boot" gestoßen.



u-boot ist ein bootloader.
Auf PCs wuerde man das BIOS nennen. Das Ding ist wie das BIOS dafuer
verantwortlich die HW aufzusetzen (Takt einstellen, RAM-Interface anmachen,
timing einstellen, etc.) und einen Kernel ins RAM zu verfrachten, danach in
anzuspringen.
Im gegensatz zu einem BIOS bietet das Ding aber keine Services an (nix int
0x13), es ist eben nur ein Bootloader.
Das u-boot muss passend zu deinem board programmiert/compiliert und ins Flash
verfrachtet werden.
u-boot stellt dem Kernel dann eine "Standard umgebung" bereit, halt sowas wie:
- Dein Code liegt an Adresse x
- Rn ist ein Pointer zum Parameter Block
- usw.
Das nennt man das Boot-Protokoll (Das dein Kernel auch etwas beitragen muss
(Fielformat, Magic Number) ist der andere Teil)

Eine Datei /script/scriptcmd ist wohl Dreh- und Angelpunkt.
Leider habe ich noch nicht heraus bekommen in welchem
Format dieses vorliegen soll bzw. erstellt werden muss.
In einem PDF (aber zum VT8500)
http://tails92.sepwich.com/files/ea..._1.2.1.pdf
habe ich bzgl. scriptcmd folgendes gefunden:
> 9. "bootcmd", "scriptcmd" and "gocmd"
The u-boot would run "bootcmd", if user doesn't kick
any key to stop entering user mode when counting.
The u-boot from version 0.12.10 supports other two
auto run mechanism. Those are "scriptcmd" and "gocmd".
When user doesn't kick any key to stop entering user
mode, the u-boot will first check if environment
variable "scriptcmd" is set, if it is, the u-boot
will first init SD card, if initialization successes,
it will load file "script/scriptcmd" in SD card to
address 0 in memory, and run "script/scriptcmd" as a
script file image. If user wants to use this
mechanism, please ensure SD card is plug-in, SD card
is in FAT file system (FAT-12/ FAT-16/ FAT-32) and
file "script/scriptcmd" is a valid script file image,
which means user should use the followed command to
compile a script file:

mkimage -A arm -O linux -T script -n "upgrade kernel env"
-d kernel_env zImage_upgrade_env.img



Das sieht sehr nach einer Linux init-ramfs aus, ein misch aus Kernel, Filesystem
image, alles zusammen ge-zlib'ed

>
Wie kann ich nun unter Windows mit minimalem Aufwand ein
eigenes Assembler-Programm für ARM erstellen



Mit einem ARM-assambler :D

und booten?




Unter Windows? Mit einem Emulator :D


Evtl. kann man Komponenten/Programme von Lazarus nutzen?
Habe mit Lazarus bereits erste Programme geschrieben
welche auf dem Mini-Notebook so liefen wie erwartet :-)
Im Ordner \bin\i386-win32\ findet man u.A: arm-wince-as.exe.
Das Programm mkimage und deren Parameter sagen mir nichts.
Bin diesbezüglich aber auch noch am rechercheiren.

Zufàllig jemand hier mit Ideen, Hinweise Tips oder Tricks?




Du musst dich ans boot-protokoll von u-boot halten, also wie u-boot die
kontrolle an den Kernel abgibt. Du darfst dich nicht vom begriff Kernel
einschuechtern lassen, auch ein Kernel faengt ganz klein an, ob er da nun voll
die Action macht oder du eben dein kleines Proggie startest, ist egal.

Es muss dann nur verpackt werden das es u-boot versteht, das macht wohl dieses
mkimage, und das erwartet als eingabe Format ein Linux zImage.
Es sei denn mit script meinen die da noch etwas mehr Kontrolle und/oder dieses
mkimage kann/hat da noch ein paar mehr optionen, aber da wuerde ich mal bei
u-boot schauen.
http://www.denx.de/wiki/U-Boot
Es kommt halt drauf an was die wie wo mit wem wie verschachtelt wird.

Und ich denke, du wirst da mit deinem Windows nicht weit kommen. Cygwin ist da
das mindeste...

mfg.
Herby




Gruss
Jan

Hifi-Strom:
"Hunderte Jungfrauen robben den ganzen Tag über einen Teppich der vom
Papst persönlich in Vollmondnàchen aus dem Fell gesegneter Làmmer und
mit Gold verwoben wurde. Die statischen Aufladungen werden in
Rosenquarzakkumulatoren gesammelt und an die Kunden geliefert."

Ähnliche fragen