PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Ist nach dem Einbinden eines neuen Dateisystemtreibers mehr als 'mount' notwendig?



Seiten : [1] 2

D@rk-Soul
07.02.06, 14:26
Hallo Leute!

Weiss jemand, ob es zum Einbinden eines neuen Dateisystems (in meinem Fall "YAFFS bzw. YAFSS2") ausreicht den Treiber in den Kernel zu kompilieren und ein/das betreffende(s) device mittels 'mount' zu mounten ODER müssen noch Einstellungen (=Konfiguration) vorgenommen werden?

Via http://www.aleph1.co.uk/yaffs/ habe ich keine Erkenntnisse bekommen können. :(



Danke im voraus!

Torsten

quinte17
07.02.06, 14:41
es reicht aus es in den kernel zu compilen, oder es als modul zu backen...
dann musst du das filesystem nur noch erstellen und dann kansnt es per mount einhängen (wenn modul geladen, oder fest im kernel)

greetz

D@rk-Soul
07.02.06, 17:08
Wie kann ich "das filesystem erstellen"? :rolleyes:

MiGo
07.02.06, 18:11
Mit der passenden Software. Wahrscheinlich wirst du nach mkfs.YAFFS suchen müssen.

Stephanw
08.02.06, 07:30
Wo willst du yaffs denn einsetzen? Das soll wahrscheinlich nicht auf deine Festplatte, richtig?

Gruß Stephan

derguteweka
08.02.06, 07:55
Moin,


Wie kann ich "das filesystem erstellen"? :rolleyes:

Das geht mit mkyaffsimg, sollte bei dem ganzen yaffs-krempel mit dabei sein; dabei faellt dann eine Datei raus, die schon in lauter 528ByteBloecken strukturiert ist, d.h. diese Datei muss dann 1:1 in das Flash deines Zielsystems geschrieben werden. Die Software, mit der du das yaffsimage in das Flash schreibst, heisst entweder bootloader oder so, wie du sie nennst, nachdem du sie geschrieben hast :)

Gruss
WK

D@rk-Soul
08.02.06, 09:30
@Stephanw:

Richtig! Wir haben hier ein sogen. ARM-Board (180MHz-ARM-CPU) auf welches 64MB-NAND-Flash aufgelötet worden sind.

Die Mitarbeiter des Labor konnten diesen zusätzlichen Speicher auf low-level-Bereich bereits ansprechen; wir (2 Studies) sollen nun ein geeignetes Dateisystem (wir haben uns YAFFS2 herausgesucht).



@derguteweka:

Wir haben eine "mkyaffs2image.c" und eine "mkyaffsimage.c" vorliegen und konnten diese mittels der vorhandenen Makefile kompilieren. Es wurden Object-Dateien und eine ausführbare Datei erzeugt - ist das der Bootloader? Leider gibt es noch anderweitig Probleme, sodass ich wir diese ausführbare Datei auf dem ARM-Board noch nicht testen/ausführen können.



Gruß Torsten

Stephanw
08.02.06, 10:40
Nein, mkyaffsimage ist ein Programm, das dir ein Image des Dateisystems erstellt. Es ist quasi nur ein Grundgerüst, das der spätere Dateisystemtreiber benötigt, um Daten auf diesem Dateisystem zu verwalten.

Generell ist es so, das ihr sämtliche Software, die ihr verwenden wollt, für den ARM-Prozessor kompilieren müsst. Ich gehe jetzt mal davon aus, das ihr auf einem normalen x86-kompatiblen PC arbeitet, ihr benötigt also einen crosscompiler. Für weiteres bitte googeln.

Ich weiss jetzt nicht, wie ihr die Sachen auf das Board bekommt da ich auch das Bord nicht kenne. Ich weiss auch nicht von wo aus das Teil bootet und ob es nicht vielleicht schon eine Firmware gibt, die die Hardware initialisiert. Jedenfalls wird der in irgendeinen bestimmten Bereich geschrieben werden müssen. Diesen Bootloader müsst ihr euch auch noch erstellen. Ich kann für solche Zwecke z.B. U-Boot empfehlen. Häufig kann man auch Bootloader und Kernel zu einer Datei zusammenfassen, die dann vom System in den Speicher eingelesen und ausgeführt wird.

Und jetzt kommt die Imagedatei von mkyaffsimage ins spiel. Diese Imagedatei gehört in den Datenbereich des Flash-Speicher, vergleichbar mit einer Festplattenpartition. Der Kernel, der jetzt schon Einsatzbereit im Arbeitsspeicher liegt, wird nachdem er fertig gestartet ist versuchen, das YAFFS-Dateisystem mit Hilfe des von dir in den Kernel eingebauten Dateisystemtreibers zu mounten. Anschließend wird die Datei "init" gesucht und ausgeführt und den Rest kennt man ja.

Wenn du mir ein paar Infos Projekt und zum System gibts und vielleicht die Bezeichnung des Flash-ICs kann ich vielleicht noch etwas konkreter helfen.

Gruß Stephan

EDIT: Was ich vielleicht noch ergänzen kann: Du solltest auf dem Entwicklungsrechner auch einen Kernel mit dem Yaffs-Treiber verwenden. Du kannst die Imagedatei nämlich wie ein "virtuelles Laufwerk" mounten und dort die vom System benötigten Dateien in die Imagedatei kopieren. Siehe hierzu "loopback-device"...

D@rk-Soul
08.02.06, 15:43
Hi!


Wir haben ein ARM-Board mit dem Prozessor AT91RM9200, einer Netzwerkschnittstelle und einem 64MB-NAND-Flashspeicher, den wir mittels YAFFS ansprechen wollen.
Wir haben noch 8MB "normales" Flash auf dem Board, der derzeit alleinig verwendet wird (bis auf die neu aufgelöteten 64MB-NAND-Flash läuft das Board ja).
Für unsere Aufgabe müssen wir das zu ladende Image in die bestehende Verzeichnisstruktur, welche auf einem anderen PC liegt (und via NFS gemountet ist), laden.


Wir haben den Kernel, inkl. YAFFS-Treiber, per Crosscompiler kompiliert. Wir haben ein Kernel-Image mittels U-Boot 1.1.2 erzeugt.


Das ARM-Board hat eine serielle Schnittstelle; über Hyperterminal bringen wir das Board dazu beim Booten das Kernel-Image über TFTP von einem anderen Rechner zu laden; der YAFFS-Treiber wird dabei auch mitgeladen (wird aufgelistet - keine Fehlermeldung).


Der nächste Schritt wäre das YAFFS-Dateisystem zu mounten. Wie können wir dafür das YAFFS-Image einsetzen?



Gruß Torsten

quinte17
08.02.06, 16:18
stephanw hatte ja vorgeschlagen es über das loopdevice erstmal zu machen,
dh dass euer normaler rechner des macht :D

also hier mal eine evtl anleitung wie des prinzipiell geht:


#imagedatei erstellen (60MB)
dd if=/dev/zero of=test.img bs=1M count=60
#datei als loopdevice zur verfügung stellen
losetup /dev/loop0 test.img
#dateisystem auf loopdevice erstellen
mke2fs /dev/loop0
#loop-device mounten
mount /dev/loop0 /mnt/sonstwo

ich weiß, ihr benötigt kein ext2, aber mit yaffs habe ich sonst so keine erfahrungen... vielleicht hilft es ja auf euren fall zu übertragen.

diese image-datei müsstet ihr dann 1:1 auf euren speicher knallen, da dort ja das dateisystem direkt drin ist.

greetz

D@rk-Soul
08.02.06, 18:02
Ich glaube "mke2fs" ist halt nur für ext2. Wir bräuchten dann schon yaffs-pendant - dieses haben wir aber dummerweise nicht.


Schönen Abend!

/Torsten

Stephanw
08.02.06, 18:58
Die Imagedatei erstellst du doch mit mkyaffsimage...

derguteweka
08.02.06, 20:22
Moin,

Seh' ich das richtig: auf eurem ARM-Board bootet schon ein Linux (aus dem NOR-Flash) und ihr wollt jetzt das NAND-Flash als 2. Partition verwenden?
Wenn dem so ist, muesste es eigentlich reichen, die erste Page des NAND-Flashs zu initialisieren und dann alles, was an Dateien in das NAND-Flash soll, mittels cp via NFS dahin zu kopieren.
Also auf dem Hostrechner:

mkdir leer
mkyaffsimage leer/ leeres.yaffs.img
Auf dem ARM-Board sollte das NAND-Flash geloescht sein, dann mittels irgendwelcher lowlevel-tools (selbstgeschrieben, bootloader, etc.) die oben erzeugte Datei leeres.yaffs.img in die erste Page des NAND-Flashes laden, dann linux auf dem Board booten.
Dann sollte sich das NAND-Flash eigentlich mounten lassen und per cp auch recht simpel "programmieren".

Gruss
WK

D@rk-Soul
08.02.06, 21:15
Ja, der NAND-Flash soll nur als "Storage"/Massenspeicher (insofern man bei 64MB davon reden kann) benutzt werden.

Stephanw
09.02.06, 06:50
Wenn das so ist und das Board bereits bootet, ist das mit dem Bootloader natürlich unnötig.

Welche Flash-Treiber kommen zum Einsatz? Das MTD-Subsystem? Der müsste dir
dann ein Blockdevice unter /dev zur Verfügung stellen. Dann könnte man das Dateisystemimage einfach mit "dd" auf den Flash schreiben und ihn anschließend Mounten...

Gruß Stephan

D@rk-Soul
09.02.06, 09:22
Ja, das mtd kommt zum Einsatz. Aber woher wissen wir, welches Device dem yaffs-Treiber zugewiesen wird?

Stephanw
09.02.06, 12:09
Also nochmal vorab für mich:

-Das Board startet bereits ein Linux von einem anderen Speicher? Wenn ja, wer hat dieses System entwickelt? Welche C-lib kommt zum Einsatz; wird Busybox verwendet? Könnt ihr dieses Linux problemlos modifizieren (andere Versionen aufspielen)?

Zu deiner Frage:

Du musst zwischen Gerätetreiber und Dateisystemtreiber unterscheiden. Der Gerätetreiber greift über das Bus-System auf das Fash-IC zu und stellt unter /dev eine Device-Node zur Verfügung. Bei dieser Device-Node handelt es sich im Prinzip um eine virtuelle Datei, die den gesamten, zugänglichen Speicherbereich des ICs wiederspiegelt (z.B. /dev/nftla). Des weiteres werden automatisch im Falle eines partitionierten Speichers einzelne Partitionen zugänglich gemacht (z.B. /dev/nftla1, /dev/nftla2). Bei euch heissen die Teile möglicherweise /dev/mtdblock<irgendwas>.

Wenn ihr den Inhalt des Flash-ICs, welcher über das YAFFS-Dateisystem verwaltet wird, mounten möchtet, so passiert folgendes: Beim mount-Befehl werden VFS die Daten auf dem Flash-IC mithilfe des Dateisystemtreibers zugänglich gemacht. Dieser greift auf die Datei unter /dev zu, die ja vom Gerätetreiber (->MTD) zur Verfügung gestellt wird...

Noch ein Tip: Wenn ich das Prozessdateisystem gemountet habt (/proc), so könnt ihr die Datei /proc/mtd auslesen, um zu schauen, welche Devices vom MTD-Subsystem erkannt wurden...

Gruß Stephan

D@rk-Soul
09.02.06, 13:53
Hallo,

ja, es wird ein Linux von einer anderer Workstation geladen, mit Kernel 2.6.14, der von kernel.org kommt. Wir haben ihn auch selber konfiguriert, wir wollen bzw. sollen keinen anderen Kernel verwenden. Wir haben ihn mit arm-linux-gcc 3.3.5 kompiliert.

Die Datei /proc/mtd existiert übrigens nicht.

Stephanw
10.02.06, 07:32
Halten wir fest:

-Das Board startet nicht von dem kleinen Flash, sondern über das Netzwerk?!?
-/proc ist eingehangen (da ist ein "mount -t proc none /proc" erforderlich!)
-mtd ist richtig konfiguriert

Sollte das Ding nicht direkt vom flash starten? Wäre gut wenn du mal beschreiben könntest, was das am Ende werden soll.

Wenn /proc wirklich da ist, könntest du mal die Ausgabe von /proc/kmsg in eine Textdatei packen und hier online stellen.

Gruß Stephan

derguteweka
10.02.06, 09:34
Moin,


ja, es wird ein Linux von einer anderer Workstation geladen, mit Kernel 2.6.14, der von kernel.org kommt. Wir haben ihn auch selber konfiguriert, wir wollen bzw. sollen keinen anderen Kernel verwenden. Wir haben ihn mit arm-linux-gcc 3.3.5 kompiliert.

Aeeehm - ja und sonst? Ausser dem Kernel? Mounted der sich dann sein rootfs via nfs von nem Server oder aus dem NOR-Flash? Und was passiert dann? Busybox? oder Kernelpanic: Unable to mount rootfs?
Irgendwie kommt mir das doch arg nebuloes vor. Gibts denn zu dem Board nix an SW oder Beispielen dazu? Habt ihr soviel Plan, das NAND-Flash via bootloader oder sonstwie mal testweise anzusprechen, obs ueberhaupt tut, wenns selbst draufgeloetet ist?
Kannst du mal die Ausgaben des Kernels beim booten hier an posten?
Und auch mich interessiert natuerlich, was das alles wird, wenns fertig ist - ist das n Schulprojekt oder was hobbymaessiges oder so?

Fragen ueber Fragen :)

Gruss
WK

Stephanw
10.02.06, 10:51
Ich bekomme irgendwie auch wieder Lust was vergleichbares zu machen. Ich werde mir bei Gelegenheit mal einen von den guten iPaq´s bei ebay schiessen müssen... da gibts ja auch schon ganz interessante Projekte...

Gruß Stephan

D@rk-Soul
10.02.06, 11:34
Hallo,

ja, das ist ein FH-Projekt. Das root-fs wird via nfs gemountet und das funktioniert.

Beim mounten von yaffs kommt jetzt folgende Fehlermeldung:

~ # mount -t yaffs /dev/mtd0 /mnt/y
mount: Couldn't setup loop device
~ #




Hier die Ausgabe beim booten:

U-Boot 1.1.0 (Jan 5 2006 - 12:18:11)

U-Boot code: 21F00000 -> 21F1C1D8 BSS: -> 21F20738
RAM Configuration:
Bank #0: 20000000 32 MB
Flash: 0 kB
DataFlash:AT45DB642
Nb pages: 8192
Page Size: 1056
Size= 8650752 bytes
Logical address: 0xC0000000
Area 0: C0000000 to C0007FFF (RO)
Area 1: C0008000 to C001FFFF (RO)
Area 2: C0020000 to C0027FFF
Area 3: C0028000 to C083FFFF
In: serial
Out: serial
Err: serial
Initializing fpga
setting ethernet address
Hit any key to stop autoboot: 0
Uboot> run dlinux
BOOTP broadcast 1
DHCP client bound to address 10.20.0.5
TFTP from server 10.3.1.1; our IP address is 10.20.0.5
Filename 'linux-2.6.uImage'.
Load address: 0x20f00000
Loading: ################################################## ###############
################################################## ###############
################################################## ###############
################################################## ###############
################################################## ###############
################################################## ###############
################################################## ###############
################################################## ###############
################################################## ###############
################################
done
Bytes transferred = 3153952 (302020 hex)
## Booting image at 20f00000 ...
Image Name: 2.6.14
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 3153888 Bytes = 3 MB
Load Address: 20008000
Entry Point: 20008000
Verifying Checksum ... OK
OK

Starting kernel ...

Linux version 2.6.14 (miknoppik@S117r1p1) (gcc version 3.3.5) #17 Wed Feb 8 11:1
2:59 CET 2006
CPU: ARM920Tid(wb) [41129200] revision 0 (ARMv4T)
Machine: Atmel AT91RM9200-DK
Memory policy: ECC disabled, Data cache writeback
Clocks: CPU 179 MHz, master 59 MHz, main 18.432 MHz
CPU0: D VIVT write-back cache
CPU0: I cache: 16384 bytes, associativity 64, 32 byte lines, 8 sets
CPU0: D cache: 16384 bytes, associativity 64, 32 byte lines, 8 sets
Built 1 zonelists
Kernel command line: mem=64M console=ttyS0,115200n8 noinitrd init=/sbin/init pan
ic=15 root=/dev/nfs rw mtdparts=AT45DB642.spi0:270336(u-boot)ro,1081344(jffs2),-
(cramfs) nfsroot=10.3.1.1:/nfsroot_hss_central ip=10.20.0.5::10.0.0.3
AT91: 128 gpio irqs in 4 banks
PID hash table entries: 512 (order: 9, 8192 bytes)
Console: colour dummy device 80x30
Dentry cache hash table entries: 16384 (order: 4, 65536 bytes)
Inode-cache hash table entries: 8192 (order: 3, 32768 bytes)
Memory: 64MB = 64MB total
Memory: 61568KB available (2621K code, 511K data, 100K init)
Mount-cache hash table entries: 512
CPU: Testing write buffer coherency: ok
NET: Registered protocol family 16
SCSI subsystem initialized
usbcore: registered new driver usbfs
usbcore: registered new driver hub
NetWinder Floating Point Emulator V0.97 (double precision)
Installing knfsd (copyright (C) 1996 okir@monad.swb.de).
JFFS version 1.0, (C) 1999, 2000 Axis Communications AB
JFFS2 version 2.2. (NAND) (C) 2001-2003 Red Hat, Inc.
fuse init (API version 7.2)
yaffs Feb 8 2006 11:08:59 Installing.
Initializing Cryptographic API
AT91 Real Time Clock driver.
AT91 SPI driver loaded
AT91 Watchdog Timer enabled (5 seconds)
ttyS0 at MMIO 0xfefff200 (irq = 1) is a AT91_SERIAL
ttyS1 at MMIO 0xfefc4000 (irq = 7) is a AT91_SERIAL
io scheduler noop registered
io scheduler deadline registered
RAMDISK driver initialized: 16 RAM disks of 4096K size 1024 blocksize
loop: loaded (max 8 devices)
usbcore: registered new driver ub
eth0: Link now 100-FullDuplex
eth0: AT91 ethernet at 0xfefbc000 int=24 100-FullDuplex (00:50:c2:37:20:65)
eth0: Davicom 9196 PHY (Copper)
slram: not enough parameters.
blkmtd: version $Revision: 1.24 $
blkmtd: error: missing `device' name

block2mtd: version $Revision: 1.28 $
at91_dataflash: AT45DB642 detected [spi0] (8650752 bytes)
3 cmdlinepart partitions found on MTD device AT45DB642.spi0
Creating 3 MTD partitions on "AT45DB642.spi0":
0x00000000-0x00042000 : "u-boot"
0x00042000-0x0014a000 : "jffs2"
0x0014a000-0x00840000 : "cramfs"
No SmartMedia card inserted.
NAND device: Manufacturer ID: 0xec, Chip ID: 0x76 (Samsung NAND 64MiB 3,3V 8-bit
)
Scanning device for bad blocks
Creating 3 MTD partitions on "NAND 64MiB 3,3V 8-bit":
0x00000000-0x00100000 : "AT91 NAND partition 1, kernel"
0x00100000-0x01100000 : "AT91 NAND partition 2, filesystem"
0x01100000-0x04000000 : "AT91 NAND partition 3, storage"
at91rm9200-ohci at91rm9200-ohci: AT91RM9200 OHCI
at91rm9200-ohci at91rm9200-ohci: new USB bus registered, assigned bus number 1
at91rm9200-ohci at91rm9200-ohci: irq 23, io mem 0x00300000
usb usb1: Product: AT91RM9200 OHCI
usb usb1: Manufacturer: Linux 2.6.14 ohci_hcd
usb usb1: SerialNumber: at91rm9200
hub 1-0:1.0: USB hub found
hub 1-0:1.0: 2 ports detected
Initializing USB Mass Storage driver...
usb 1-1: new full speed USB device using at91rm9200-ohci and address 2
usb 1-1: Product: USB2.0 Hub
hub 1-1:1.0: USB hub found
hub 1-1:1.0: 4 ports detected
usbcore: registered new driver usb-storage
USB Mass Storage support registered.
mice: PS/2 mouse device common for all mice
NET: Registered protocol family 2
IP route cache hash table entries: 1024 (order: 0, 4096 bytes)
TCP established hash table entries: 4096 (order: 2, 16384 bytes)
TCP bind hash table entries: 4096 (order: 2, 16384 bytes)
TCP: Hash tables configured (established 4096 bind 4096)
TCP reno registered
TCP bic registered
NET: Registered protocol family 1
NET: Registered protocol family 17
usb 1-1.4: new full speed USB device using at91rm9200-ohci and address 3
usb 1-1.4: Product: USB2.0 Hub
hub 1-1.4:1.0: USB hub found
hub 1-1.4:1.0: 4 ports detected
eth0: Link now 100-FullDuplex
IP-Config: Guessing netmask 255.0.0.0
IP-Config: Complete:
device=eth0, addr=10.20.0.5, mask=255.0.0.0, gw=10.0.0.3,
host=10.20.0.5, domain=, nis-domain=(none),
bootserver=255.255.255.255, rootserver=10.3.1.1, rootpath=
Looking up port of RPC 100003/2 on 10.3.1.1
Looking up port of RPC 100005/1 on 10.3.1.1
VFS: Mounted root (nfs filesystem).
Freeing init memory: 100K
start start_udev
mount: Mounting sysfs on /sys failed: No such file or directory
mounten von sysfs schlug fehl
start rc
boot version vorhanden
Starting syslog with options -b 2
udhcpc (v0.9.9-pre) started
script /bin/dhcp.script failed: No such file or directory
Sending discover...
Sending select for 10.20.0.5...
Lease of 10.20.0.5 obtained, lease time 600
script /bin/dhcp.script failed: No such file or directory
mounte Ossi2 Export /pub/mdarmroot...mount: Mounting 10.0.0.1:/pub/mdarmroot on
/ossi failed: Invalid argument
done

Entwicklungsboard HSS-Projekt
FH Oldenburg/Ostfriesland/Wilhelmshaven, Standort Emden
Labor Parallele Prozesse


SG000 login:





Hier die Ausgabe von /proc/kmsg:

~ # cat /proc/kmsg
<5>Linux version 2.6.14 (miknoppik@S117r1p1) (gcc version 3.3.5) #17 Wed Feb 8 1
1:12:59 CET 2006
<4>CPU: ARM920Tid(wb) [41129200] revision 0 (ARMv4T)
<4>Machine: Atmel AT91RM9200-DK
<4>Memory policy: ECC disabled, Data cache writeback
<4>Clocks: CPU 179 MHz, master 59 MHz, main 18.432 MHz
<7>On node 0 totalpages: 16384
<7> DMA zone: 16384 pages, LIFO batch:7
<7> Normal zone: 0 pages, LIFO batch:1
<7> HighMem zone: 0 pages, LIFO batch:1
<4>CPU0: D VIVT write-back cache
<4>CPU0: I cache: 16384 bytes, associativity 64, 32 byte lines, 8 sets
<4>CPU0: D cache: 16384 bytes, associativity 64, 32 byte lines, 8 sets
<4>Built 1 zonelists
<5>Kernel command line: mem=64M console=ttyS0,115200n8 noinitrd init=/sbin/init
panic=15 root=/dev/nfs rw mtdparts=AT45DB642.spi0:270336(u-boot)ro,1081344(jffs2
),-(cramfs) nfsroot=10.3.1.1:/nfsroot_hss_central ip=10.20.0.5::10.0.0.3
<6>AT91: 128 gpio irqs in 4 banks
<4>PID hash table entries: 512 (order: 9, 8192 bytes)
<4>Console: colour dummy device 80x30
<4>Dentry cache hash table entries: 16384 (order: 4, 65536 bytes)
<4>Inode-cache hash table entries: 8192 (order: 3, 32768 bytes)
<6>Memory: 64MB = 64MB total
<5>Memory: 61568KB available (2621K code, 511K data, 100K init)
<7>Calibrating delay loop... 89.70 BogoMIPS (lpj=448512)
<4>Mount-cache hash table entries: 512
<6>CPU: Testing write buffer coherency: ok
<6>NET: Registered protocol family 16
<5>SCSI subsystem initialized
<6>usbcore: registered new driver usbfs
<6>usbcore: registered new driver hub
<4>NetWinder Floating Point Emulator V0.97 (double precision)
<6>Installing knfsd (copyright (C) 1996 okir@monad.swb.de).
<6>JFFS version 1.0, (C) 1999, 2000 Axis Communications AB
<6>JFFS2 version 2.2. (NAND) (C) 2001-2003 Red Hat, Inc.
<4>fuse init (API version 7.2)
<4>yaffs Feb 8 2006 11:08:59 Installing.
<6>Initializing Cryptographic API
<6>AT91 Real Time Clock driver.
<6>AT91 SPI driver loaded
<4>AT91 Watchdog Timer enabled (5 seconds)
<6>ttyS0 at MMIO 0xfefff200 (irq = 1) is a AT91_SERIAL
<6>ttyS1 at MMIO 0xfefc4000 (irq = 7) is a AT91_SERIAL
<6>io scheduler noop registered
<6>io scheduler deadline registered
<4>RAMDISK driver initialized: 16 RAM disks of 4096K size 1024 blocksize
<6>loop: loaded (max 8 devices)
<6>usbcore: registered new driver ub
<6>eth0: Link now 100-FullDuplex
<6>eth0: AT91 ethernet at 0xfefbc000 int=24 100-FullDuplex (00:50:c2:37:20:65)
<6>eth0: Davicom 9196 PHY (Copper)
<5>slram: not enough parameters.
<6>blkmtd: version $Revision: 1.24 $
<3>blkmtd: error: missing `device' name
<4>
<6>block2mtd: version $Revision: 1.28 $
<4>at91_dataflash: AT45DB642 detected [spi0] (8650752 bytes)
<5>3 cmdlinepart partitions found on MTD device AT45DB642.spi0
<5>Creating 3 MTD partitions on "AT45DB642.spi0":
<5>0x00000000-0x00042000 : "u-boot"
<5>0x00042000-0x0014a000 : "jffs2"
<5>0x0014a000-0x00840000 : "cramfs"
<4>No SmartMedia card inserted.
<6>NAND device: Manufacturer ID: 0xec, Chip ID: 0x76 (Samsung NAND 64MiB 3,3V 8-
bit)
<6>Scanning device for bad blocks
<5>Creating 3 MTD partitions on "NAND 64MiB 3,3V 8-bit":
<5>0x00000000-0x00100000 : "AT91 NAND partition 1, kernel"
<5>0x00100000-0x01100000 : "AT91 NAND partition 2, filesystem"
<5>0x01100000-0x04000000 : "AT91 NAND partition 3, storage"
<7>at91rm9200-ohci at91rm9200-ohci: starting AT91RM9200 OHCI USB Controller
<6>at91rm9200-ohci at91rm9200-ohci: AT91RM9200 OHCI
<6>at91rm9200-ohci at91rm9200-ohci: new USB bus registered, assigned bus number
1
<6>at91rm9200-ohci at91rm9200-ohci: irq 23, io mem 0x00300000
<7>at91rm9200-ohci at91rm9200-ohci: resetting from state 'reset', control = 0x0
<7>at91rm9200-ohci at91rm9200-ohci: OHCI controller state
<7>at91rm9200-ohci at91rm9200-ohci: OHCI 1.0, NO legacy support registers
<7>at91rm9200-ohci at91rm9200-ohci: control 0x083 HCFS=operational CBSR=3
<7>at91rm9200-ohci at91rm9200-ohci: cmdstatus 0x00000 SOC=0
<7>at91rm9200-ohci at91rm9200-ohci: intrstatus 0x00000044 RHSC SF
<7>at91rm9200-ohci at91rm9200-ohci: intrenable 0x8000001a MIE UE RD WDH
<7>at91rm9200-ohci at91rm9200-ohci: fminterval a7782edf
<7>at91rm9200-ohci at91rm9200-ohci: hcca frame #0005
<7>at91rm9200-ohci at91rm9200-ohci: roothub.a 02000202 POTPGT=2 NPS NDP=2(2)
<7>at91rm9200-ohci at91rm9200-ohci: roothub.b 00000000 PPCM=0000 DR=0000
<7>at91rm9200-ohci at91rm9200-ohci: roothub.status 00008000 DRWE
<7>at91rm9200-ohci at91rm9200-ohci: roothub.portstatus [0] 0x00010101 CSC PPS CC
S
<7>at91rm9200-ohci at91rm9200-ohci: roothub.portstatus [1] 0x00000100 PPS
<7>at91rm9200-ohci at91rm9200-ohci: created debug files
<7>usb usb1: default language 0x0409
<7>usb usb1: new device strings: Mfr=3, Product=2, SerialNumber=1
<6>usb usb1: Product: AT91RM9200 OHCI
<6>usb usb1: Manufacturer: Linux 2.6.14 ohci_hcd
<6>usb usb1: SerialNumber: at91rm9200
<7>usb usb1: hotplug
<7>usb usb1: adding 1-0:1.0 (config #1, interface 0)
<7>usb 1-0:1.0: hotplug
<7>hub 1-0:1.0: usb_probe_interface
<7>hub 1-0:1.0: usb_probe_interface - got id
<6>hub 1-0:1.0: USB hub found
<6>hub 1-0:1.0: 2 ports detected
<7>hub 1-0:1.0: standalone hub
<7>hub 1-0:1.0: no power switching (usb 1.0)
<7>hub 1-0:1.0: global over-current protection
<7>hub 1-0:1.0: power on to power good time: 4ms
<7>hub 1-0:1.0: local power source is good
<7>hub 1-0:1.0: no over-current condition exists
<7>hub 1-0:1.0: state 5 ports 2 chg 0000 evt 0000
<6>Initializing USB Mass Storage driver...
<7>at91rm9200-ohci at91rm9200-ohci: GetStatus roothub.portstatus [0] = 0x0001010
1 CSC PPS CCS
<7>hub 1-0:1.0: port 1, status 0101, change 0001, 12 Mb/s
<7>hub 1-0:1.0: debounce: port 1: total 100ms stable 100ms status 0x101
<7>at91rm9200-ohci at91rm9200-ohci: GetStatus roothub.portstatus [0] = 0x0010010
3 PRSC PPS PES CCS
<6>usb 1-1: new full speed USB device using at91rm9200-ohci and address 2
<7>at91rm9200-ohci at91rm9200-ohci: GetStatus roothub.portstatus [0] = 0x0010010
3 PRSC PPS PES CCS
<7>usb 1-1: default language 0x0409
<7>usb 1-1: new device strings: Mfr=0, Product=1, SerialNumber=0
<6>usb 1-1: Product: USB2.0 Hub
<7>usb 1-1: hotplug
<7>usb 1-1: adding 1-1:1.0 (config #1, interface 0)
<7>usb 1-1:1.0: hotplug
<7>hub 1-1:1.0: usb_probe_interface
<7>hub 1-1:1.0: usb_probe_interface - got id
<6>hub 1-1:1.0: USB hub found
<6>hub 1-1:1.0: 4 ports detected
<7>hub 1-1:1.0: standalone hub
<7>hub 1-1:1.0: ganged power switching
<7>hub 1-1:1.0: global over-current protection
<7>hub 1-1:1.0: TT requires at most 32 FS bit times (2664 ns)
<7>hub 1-1:1.0: Port indicators are supported
<7>hub 1-1:1.0: power on to power good time: 100ms
<7>hub 1-1:1.0: local power source is good
<7>hub 1-1:1.0: no over-current condition exists
<7>hub 1-1:1.0: enabling power on all ports
<7>hub 1-0:1.0: state 5 ports 2 chg 0000 evt 0002
<6>usbcore: registered new driver usb-storage
<6>USB Mass Storage support registered.
<7>hub 1-1:1.0: state 5 ports 4 chg 0000 evt 0000
<6>mice: PS/2 mouse device common for all mice
<6>NET: Registered protocol family 2
<7>hub 1-1:1.0: port 4, status 0101, change 0001, 12 Mb/s
<4>IP route cache hash table entries: 1024 (order: 0, 4096 bytes)
<4>TCP established hash table entries: 4096 (order: 2, 16384 bytes)
<4>TCP bind hash table entries: 4096 (order: 2, 16384 bytes)
<6>TCP: Hash tables configured (established 4096 bind 4096)
<6>TCP reno registered
<6>TCP bic registered
<6>NET: Registered protocol family 1
<6>NET: Registered protocol family 17
<7>hub 1-1:1.0: debounce: port 4: total 100ms stable 100ms status 0x101
<6>usb 1-1.4: new full speed USB device using at91rm9200-ohci and address 3
<7>usb 1-1.4: default language 0x0409
<7>usb 1-1.4: new device strings: Mfr=0, Product=1, SerialNumber=0
<6>usb 1-1.4: Product: USB2.0 Hub
<7>usb 1-1.4: hotplug
<7>usb 1-1.4: adding 1-1.4:1.0 (config #1, interface 0)
<7>usb 1-1.4:1.0: hotplug
<7>hub 1-1.4:1.0: usb_probe_interface
<7>hub 1-1.4:1.0: usb_probe_interface - got id
<6>hub 1-1.4:1.0: USB hub found
<6>hub 1-1.4:1.0: 4 ports detected
<7>hub 1-1.4:1.0: standalone hub
<7>hub 1-1.4:1.0: ganged power switching
<7>hub 1-1.4:1.0: global over-current protection
<7>hub 1-1.4:1.0: TT requires at most 32 FS bit times (2664 ns)
<7>hub 1-1.4:1.0: Port indicators are supported
<7>hub 1-1.4:1.0: power on to power good time: 100ms
<7>hub 1-1.4:1.0: local power source is good
<7>hub 1-1.4:1.0: no over-current condition exists
<7>hub 1-1.4:1.0: enabling power on all ports
<7>hub 1-1:1.0: state 5 ports 4 chg 0000 evt 0010
<7>hub 1-1.4:1.0: state 5 ports 4 chg 0000 evt 0000
<6>eth0: Link now 100-FullDuplex
<4>IP-Config: Guessing netmask 255.0.0.0
<4>IP-Config: Complete:
<4> device=eth0, addr=10.20.0.5, mask=255.0.0.0, gw=10.0.0.3,
<4> host=10.20.0.5, domain=, nis-domain=(none),
<4> bootserver=255.255.255.255, rootserver=10.3.1.1, rootpath=
<5>Looking up port of RPC 100003/2 on 10.3.1.1
<5>Looking up port of RPC 100005/1 on 10.3.1.1
<4>VFS: Mounted root (nfs filesystem).
<6>Freeing init memory: 100K






Schon mal besten Dank!:)

derguteweka
10.02.06, 12:10
Moin,


mount: Mounting sysfs on /sys failed: No such file or directory
mounten von sysfs schlug fehl
Wuerd' mal mutmassen, dass das evtl. des Uebels Wurzel sein koennte.
Existiert denn ein /sys Verzeichnis in / ?
Wenn nicht, dann leg' doch mal pronto eines an (ganz normal mit mkdir).
Um nachzugucken, ob sysfs im Kernel aktiviert ist, kannst du dir mal den Inhalt von /proc/filesystems angucken, da musses stehen.

NAND-Flashtechnisch schauts ja eigentlich garnicht so uebel aus auf den ersten Blick - die Partitionierung wirste wahrscheinlich nicht brauchen, aber fuer den Anfang isses erstmal wurscht. Der Baustein scheint ja schonmal hw-maessig angesprochen werden zu koennen.

Gruss
WK

Stephanw
10.02.06, 12:22
Hi,

ich hab gerade keine Linuxkiste zur Hand, aber ich glaube /proc/devices könnte noch was interessantes liefern.

Ansonsten melde ich mich später nochmal wenn ich zu Hause bin dann kann ich nochmal genau nachsehen. Normalerwese müssten diese Flash-Teile über /dev/mtdblock<irgendwas> ansprechbar sein... aber wie gesagt später genaueres...

Gruß Stephan

D@rk-Soul
10.02.06, 12:37
Hi,

schon die Eingabe von "mount /dev/mtdblock0 y/" liefert folgende Meldung:
mount: Couldn't setup loop device


Hier dies Ausgabe von /proc/devices:

Character devices:
1 mem
2 pty
3 ttyp
4 /dev/vc/0
4 tty
4 ttyS
5 /dev/tty
5 /dev/console
5 /dev/ptmx
7 vcs
10 misc
13 input
90 mtd
128 ptm
136 pts
153 spi
180 usb
189 usb_device

Block devices:
1 ramdisk
7 loop
8 sd
31 mtdblock
65 sd
66 sd
67 sd
68 sd
69 sd
70 sd
71 sd
128 sd
129 sd
130 sd
131 sd
132 sd
133 sd
134 sd
135 sd
180 ub

Hier die Ausgabe von /proc/filesystems:

nodev sysfs
nodev rootfs
nodev bdev
nodev proc
nodev sockfs
nodev binfmt_misc
nodev usbfs
nodev pipefs
nodev futexfs
nodev tmpfs
nodev eventpollfs
nodev devpts
ext3
ext2
cramfs
nodev ramfs
minix
nodev nfs
nodev nfs4
nodev nfsd
sysv
v7
nodev smbfs
ufs
jffs
nodev jffs2
romfs
nodev autofs
nodev fuse
yaffs
yaffs2
nodev rpc_pipefs


Nach Erstellen des Verzeichnisses /sys macht er beim booten nicht weiter. Aber das mounten vom sysfs scheint zu funktionieren. Hier die Bootmeldung:

U-Boot 1.1.0 (Jan 5 2006 - 12:18:11)

U-Boot code: 21F00000 -> 21F1C1D8 BSS: -> 21F20738
RAM Configuration:
Bank #0: 20000000 32 MB
Flash: 0 kB
DataFlash:AT45DB642
Nb pages: 8192
Page Size: 1056
Size= 8650752 bytes
Logical address: 0xC0000000
Area 0: C0000000 to C0007FFF (RO)
Area 1: C0008000 to C001FFFF (RO)
Area 2: C0020000 to C0027FFF
Area 3: C0028000 to C083FFFF
In: serial
Out: serial
Err: serial
Initializing fpga
setting ethernet address
Hit any key to stop autoboot: 0
Uboot> run dlinux
BOOTP broadcast 1
DHCP client bound to address 10.20.0.5
TFTP from server 10.3.1.1; our IP address is 10.20.0.5
Filename 'linux-2.6.uImage'.
Load address: 0x20f00000
Loading: ################################################## ###############
################################################## ###############
################################################## ###############
################################################## ###############
################################################## ###############
################################################## ###############
################################################## ###############
################################################## ###############
################################################## ###############
################################
done
Bytes transferred = 3153952 (302020 hex)
## Booting image at 20f00000 ...
Image Name: 2.6.14
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 3153888 Bytes = 3 MB
Load Address: 20008000
Entry Point: 20008000
Verifying Checksum ... OK
OK

Starting kernel ...

Linux version 2.6.14 (miknoppik@S117r1p1) (gcc version 3.3.5) #17 Wed Feb 8 11:1
2:59 CET 2006
CPU: ARM920Tid(wb) [41129200] revision 0 (ARMv4T)
Machine: Atmel AT91RM9200-DK
Memory policy: ECC disabled, Data cache writeback
Clocks: CPU 179 MHz, master 59 MHz, main 18.432 MHz
CPU0: D VIVT write-back cache
CPU0: I cache: 16384 bytes, associativity 64, 32 byte lines, 8 sets
CPU0: D cache: 16384 bytes, associativity 64, 32 byte lines, 8 sets
Built 1 zonelists
Kernel command line: mem=64M console=ttyS0,115200n8 noinitrd init=/sbin/init pan
ic=15 root=/dev/nfs rw mtdparts=AT45DB642.spi0:270336(u-boot)ro,1081344(jffs2),-
(cramfs) nfsroot=10.3.1.1:/nfsroot_hss_central ip=10.20.0.5::10.0.0.3
AT91: 128 gpio irqs in 4 banks
PID hash table entries: 512 (order: 9, 8192 bytes)
Console: colour dummy device 80x30
Dentry cache hash table entries: 16384 (order: 4, 65536 bytes)
Inode-cache hash table entries: 8192 (order: 3, 32768 bytes)
Memory: 64MB = 64MB total
Memory: 61568KB available (2621K code, 511K data, 100K init)
Mount-cache hash table entries: 512
CPU: Testing write buffer coherency: ok
NET: Registered protocol family 16
SCSI subsystem initialized
usbcore: registered new driver usbfs
usbcore: registered new driver hub
NetWinder Floating Point Emulator V0.97 (double precision)
Installing knfsd (copyright (C) 1996 okir@monad.swb.de).
JFFS version 1.0, (C) 1999, 2000 Axis Communications AB
JFFS2 version 2.2. (NAND) (C) 2001-2003 Red Hat, Inc.
fuse init (API version 7.2)
yaffs Feb 8 2006 11:08:59 Installing.
Initializing Cryptographic API
AT91 Real Time Clock driver.
AT91 SPI driver loaded
AT91 Watchdog Timer enabled (5 seconds)
ttyS0 at MMIO 0xfefff200 (irq = 1) is a AT91_SERIAL
ttyS1 at MMIO 0xfefc4000 (irq = 7) is a AT91_SERIAL
io scheduler noop registered
io scheduler deadline registered
RAMDISK driver initialized: 16 RAM disks of 4096K size 1024 blocksize
loop: loaded (max 8 devices)
usbcore: registered new driver ub
eth0: Link now 100-FullDuplex
eth0: AT91 ethernet at 0xfefbc000 int=24 100-FullDuplex (00:50:c2:37:20:65)
eth0: Davicom 9196 PHY (Copper)
slram: not enough parameters.
blkmtd: version $Revision: 1.24 $
blkmtd: error: missing `device' name

block2mtd: version $Revision: 1.28 $
at91_dataflash: AT45DB642 detected [spi0] (8650752 bytes)
3 cmdlinepart partitions found on MTD device AT45DB642.spi0
Creating 3 MTD partitions on "AT45DB642.spi0":
0x00000000-0x00042000 : "u-boot"
0x00042000-0x0014a000 : "jffs2"
0x0014a000-0x00840000 : "cramfs"
No SmartMedia card inserted.
NAND device: Manufacturer ID: 0xec, Chip ID: 0x76 (Samsung NAND 64MiB 3,3V 8-bit
)
Scanning device for bad blocks
Creating 3 MTD partitions on "NAND 64MiB 3,3V 8-bit":
0x00000000-0x00100000 : "AT91 NAND partition 1, kernel"
0x00100000-0x01100000 : "AT91 NAND partition 2, filesystem"
0x01100000-0x04000000 : "AT91 NAND partition 3, storage"
at91rm9200-ohci at91rm9200-ohci: AT91RM9200 OHCI
at91rm9200-ohci at91rm9200-ohci: new USB bus registered, assigned bus number 1
at91rm9200-ohci at91rm9200-ohci: irq 23, io mem 0x00300000
usb usb1: Product: AT91RM9200 OHCI
usb usb1: Manufacturer: Linux 2.6.14 ohci_hcd
usb usb1: SerialNumber: at91rm9200
hub 1-0:1.0: USB hub found
hub 1-0:1.0: 2 ports detected
Initializing USB Mass Storage driver...
usb 1-1: new full speed USB device using at91rm9200-ohci and address 2
usb 1-1: Product: USB2.0 Hub
hub 1-1:1.0: USB hub found
hub 1-1:1.0: 4 ports detected
usbcore: registered new driver usb-storage
USB Mass Storage support registered.
mice: PS/2 mouse device common for all mice
NET: Registered protocol family 2
IP route cache hash table entries: 1024 (order: 0, 4096 bytes)
TCP established hash table entries: 4096 (order: 2, 16384 bytes)
TCP bind hash table entries: 4096 (order: 2, 16384 bytes)
TCP: Hash tables configured (established 4096 bind 4096)
TCP reno registered
TCP bic registered
NET: Registered protocol family 1
NET: Registered protocol family 17
usb 1-1.4: new full speed USB device using at91rm9200-ohci and address 3
usb 1-1.4: Product: USB2.0 Hub
hub 1-1.4:1.0: USB hub found
hub 1-1.4:1.0: 4 ports detected
eth0: Link now 100-FullDuplex
IP-Config: Guessing netmask 255.0.0.0
IP-Config: Complete:
device=eth0, addr=10.20.0.5, mask=255.0.0.0, gw=10.0.0.3,
host=10.20.0.5, domain=, nis-domain=(none),
bootserver=255.255.255.255, rootserver=10.3.1.1, rootpath=
Looking up port of RPC 100003/2 on 10.3.1.1
Looking up port of RPC 100005/1 on 10.3.1.1
VFS: Mounted root (nfs filesystem).
Freeing init memory: 100K
start start_udev
mounting... ramfs at /dev
Creating initial udev device nodes:
/sbin/start_udev: /sbin/start_udev: 100: /sbin/udevstart: not found
making extra nodes
udev startup is finished!



Danke + Gruß
Torsten & Michael

D@rk-Soul
10.02.06, 13:05
Hallo,

noch ne Frage: Was ist überhaupt n loopdevice? In der Busybox vom ARM-Board ist auch leider kein "losetup" drin. :(

Hier mal die Ausgabe von /proc/mtd:

dev: size erasesize name
mtd0: 00400000 00020000 "mtdram test device"
mtd1: 00042000 00000420 "u-boot"
mtd2: 00108000 00000420 "jffs2"
mtd3: 006f6000 00000420 "cramfs"
mtd4: 00100000 00004000 "AT91 NAND partition 1, kernel"
mtd5: 01000000 00004000 "AT91 NAND partition 2, filesystem"
mtd6: 02f00000 00004000 "AT91 NAND partition 3, storage"

Müsste da nicht irgendwo yaffs2 auftauchen?? Oder sollen wir das selber irgendwie reinbasteln?

Gruß
Torsten & Michael

Stephanw
11.02.06, 17:45
Hi,

wer hat eigentlich schon diese Partitionen erstellt? Jedenfalls solltet ihr die Nodes /dev/mtd(x) und /dev/mtdblock(x) erstellen, sofern sie noch nicht vorhanden sind. Über mtd müsstet ihr die Partitionen zeichenorientiert und über mtdblock blockorientiert ansprechen können. Da bin ich mir aber nicht ganz sicher, weil ich im embedded-Bereich bisher selber nur in Projekten mit DiskOnChip-Bausteinen gearbeitet habe (da ist es etwas anders). Also auf jeden Fall die MTD-Lektüre genaustens unter die Lupe nehmen!

Was ihr machen müsst, bevor ihr ne Partition mounten könnt, ist natürlich das Dateisystemimage auf diese Partition kopieren. Dieses Image wird idealerweise wahrscheinlich auf den Byte genau so groß sein wie die Partition, welche mit dem dateisystem formatiert werden soll. Dazu auch bitte nochmal die yaffs-Leküre ansehen.

Eure Aufgabe ist also zu überprüfen, ob die Partitionen so sein sollen wie sie im Moment sind, für diese Partitionen Dateisystemimages erstellen, diese Images auf die Partitionen kopieren und sie dann letztendlich mounten.

Gruß Stephan

D@rk-Soul
13.02.06, 15:25
Hallo,

müssen wir das Image mit mkyaffs auf dem ARM-Board erstellen oder auf unserer Workstation, von der das arm-root-Verzeichnis per nfs gemountet wird? Oder erstellen wir das image mit dd? Wo führen wir losetup aus?

Am besten bitte nochmal eine komplette Anleitung...

Gruß
Torsten und Michael

D@rk-Soul
13.02.06, 21:57
Der Befehl "losetup" ist auf dem ARM-Board nicht bekannt. Wie kann man diesen installieren?

Gruß Torsten

Stephanw
14.02.06, 06:54
Was hast du denn mit losetup? Wofür brauchst du den Befehl?

Wenn er nicht vorhanden ist, musst du gucken, wo du ihn herbekommst. Wenn das Busybox ihn nicht hergibt, musst du halt eine gesonderte Binärdatei aus den Sourcen für das ARM-Board kompilieren. Ich weiss aber auch gar nicht, wofür ihr den Braucht...

Das Yaffs-Image erstellt ihr natürlich am Entwicklungsrechner. Ein Dateisystemimage ist natürlich unabhängig von der CPU, schließlich enthält es ja keinen Maschinencode. Theoretisch könnte man es auch auf dem ARM-Board oder auf dem Handy erstellen, aber wozu?!

dd ist, wie google übrigens auch weiss, ein Programm, das Daten von einer Quelle einließt und in eine andere Quelle hineinschreibt.

Der Rest erklärt sich denke ich von selbst....

Gruß Stephan