SD Karte oder MMC Card über Slot 2 machbar?
-
- Einsteiger
- Beiträge: 369
- Registriert: Samstag 29. Mai 2004, 01:50
Fällt mir gerade ein ich habe "make config" und nicht "make oldconfig" ausgeführt.
Habs mal oben geändert.
Hast du den Kernel vor deinen Änderungen bereits gebaut?
Dann sollte es so gehen:
make config ARCH=ppc << hier alles mit <return> bestätigen bis auf Misc-Devices s.o.
make dep ARCH=ppc
make clean ARCH=ppc
etc. ..
Habs mal oben geändert.
Hast du den Kernel vor deinen Änderungen bereits gebaut?
Dann sollte es so gehen:
make config ARCH=ppc << hier alles mit <return> bestätigen bis auf Misc-Devices s.o.
make dep ARCH=ppc
make clean ARCH=ppc
etc. ..
-
- Tuxboxer
- Beiträge: 5873
- Registriert: Samstag 23. Februar 2002, 22:46
-
- Einsteiger
- Beiträge: 123
- Registriert: Montag 28. November 2005, 11:31
Es wäre Klasse, wenn jemand die Zeit dazu fände, die Low-Level SPI-IO-Routinen, die bislang jeweils nur auf Character Variablen arbeiten, auf Integer Variablen umzusetzen.Geschwindigkeitsmäßig ist dies noch nicht ganz das Ende der Fahnenstange
Für die Inputroutine füge ich jetzt 3 (Edit: 4) konkurrierende Vorschläge an, idealerweise würde ein PowerPC_Assembler_Guru sich den am besten auf den PPC passenden Algorithmus rauspicken und ihn in eine inline Assembler Routine eindampfen!!!
Code: Alles auswählen
/* "loop control is shift mask" version */
static unsigned int mmc_spi_i32(void)
{
volatile cpm8xx_t *cp = (cpm8xx_t *) &immap->im_cpm;
volatile iop8xx_t *cpi = (iop8xx_t *) &immap->im_ioport;
unsigned int i;
unsigned int result = 0;
cp->cp_pbdat |= SD_DI;
for(i=0x80000000; i; i>>=1) {
cp->cp_pbdat |= SD_CLK;
if (cpi->iop_padat & SD_DO)
result |= i;
cp->cp_pbdat &= ~SD_CLK;
}
return result;
}
Code: Alles auswählen
/* "while loop and shifting value" version */
static unsigned int mmc_spi_i32(void)
{
volatile cpm8xx_t *cp = (cpm8xx_t *) &immap->im_cpm;
volatile iop8xx_t *cpi = (iop8xx_t *) &immap->im_ioport;
unsigned int i = 32;
unsigned int result; /* no need to init */
cp->cp_pbdat |= SD_DI;
do{
result <<= 1;
cp->cp_pbdat |= SD_CLK;
if (cpi->iop_padat & SD_DO)
result++; /* better than "result |= 1;" ? */
cp->cp_pbdat &= ~SD_CLK;
} while(--i);
return result;
}
Code: Alles auswählen
/* "bit moving" version.
Note, this one should avoid a branch instruction and give a stable
timing regardless whether ones or zeroes are transmitted
*/
static unsigned int mmc_spi_i32(void)
{
volatile cpm8xx_t *cp = (cpm8xx_t *) &immap->im_cpm;
volatile iop8xx_t *cpi = (iop8xx_t *) &immap->im_ioport;
unsigned int i = 32;
union {
unsigned int r;
unsigned int lsb:1;
} result; /* no need to init */
cp->cp_pbdat |= SD_DI;
do{
result.r <<= 1;
cp->cp_pbdat |= SD_CLK;
result.lsb = (cpi->iop_padat & SD_DO); /* bitfield move instruction generated? */
cp->cp_pbdat &= ~SD_CLK;
} while (--i);
return result.r;
}
Code: Alles auswählen
/* "bit moving, loop invariants (?!) outside loop version",
Note, this one should avoid a branch instruction and give a stable
timing regardless whether ones or zeroes are transmitted
*/
static unsigned int mmc_spi_i32(void)
{
volatile cpm8xx_t *cp = (cpm8xx_t *) &immap->im_cpm;
volatile iop8xx_t *cpi = (iop8xx_t *) &immap->im_ioport;
unsigned int i = 32;
union {
unsigned int r;
unsigned int lsb:1;
} result;
unsigned int pbdat_clk_hi = cp->cp_pbdat | SD_CLK | SD_DI;
unsigned int pbdat_clk_lo = pbdat_clk_hi & ~SD_CLK;
cp->cp_pbdat = pbdat_clk_lo; /* needed? */
do{
result.r <<= 1; /* kept in register? */
cp->cp_pbdat = pbdat_clk_hi;
result.lsb = (cpi->iop_padat & SD_DO); /* bitfield move instruction generated? */
cp->cp_pbdat = pbdat_clk_lo; /* address reused from register? */
} while (--i); /* bdnz instruction generated? */
return result.r;
}
Grüße,
Frieder
(Edit: Fehlende "volatile" keywords und 4.ter Vorschlag ergänzt)
Zuletzt geändert von just_me am Dienstag 4. April 2006, 19:27, insgesamt 1-mal geändert.
-
- Tuxboxer
- Beiträge: 5873
- Registriert: Samstag 23. Februar 2002, 22:46
Habe eben mal das neutrino-jff2[1].img2x von racker geflasht, aber leider wird der mmc.o Treiber dort nicht im log angezeigt und demzufolge auch nicht die Karte erkannt.
In welchem Bereich müsste der denn auftauchen?
Gruß Gorcon
PS: das yadd läuft leider garnicht, es bleibt bei Loading Kernel hängen.
In welchem Bereich müsste der denn auftauchen?
Gruß Gorcon
PS: das yadd läuft leider garnicht, es bleibt bei Loading Kernel hängen.
-
- Erleuchteter
- Beiträge: 682
- Registriert: Samstag 13. Juli 2002, 10:05
Ist das Modul denn überhaupt drin? Mach doch mal ein
Wenns da auftaucht, im lsmod-Output aber nicht kannst Du's ja mal mit insmod laden.
Code: Alles auswählen
find /lib/modules -name mmc*
-
- Tuxboxer
- Beiträge: 5873
- Registriert: Samstag 23. Februar 2002, 22:46
Code: Alles auswählen
Nokia D-BOX2 - Kernel 2.4.32-dbox2 (14:42:22).
dbox login: root
BusyBox v1.01 (2006.03.13-01:20+0000) Built-in shell (ash)
Enter 'help' for a list of built-in commands.
~ # find /lib/modules -name mmc*
/lib/modules/2.4.32-dbox2/misc/mmc.o
~ #
Zu Ismod könntest Du mir das mal etwas näher erklären?
Gruß Gorcon
-
- Tuxboxer
- Beiträge: 2067
- Registriert: Mittwoch 6. März 2002, 15:29
Gorcon hat geschrieben: Zu Ismod könntest Du mir das mal etwas näher erklären?
Code: Alles auswählen
insmod mmc.o
bzw.
insmod /lib/modules/2.4.32-dbox2/misc/mmc.o
Code: Alles auswählen
lsmod
Code: Alles auswählen
rmmod mmc
-
- Tuxboxer
- Beiträge: 5873
- Registriert: Samstag 23. Februar 2002, 22:46
Danke.zexma hat geschrieben:Gorcon hat geschrieben: Zu Ismod könntest Du mir das mal etwas näher erklären?loaded modules-listingCode: Alles auswählen
insmod mmc.o bzw. insmod /lib/modules/2.4.32-dbox2/misc/mmc.o
removeCode: Alles auswählen
lsmod
Code: Alles auswählen
rmmod mmc
Code: Alles auswählen
mmc Hardware init
mmc Card init
mmc Card init *1*
mmc Card init *2*
Size = 501760, hardsectsize = 512, sectors = 1003520
Partition check:
mmca: p1
mounten geht auch
Nachtrag: ab und zu klappt das initialisieren nicht, dann kommt nur
Code: Alles auswählen
[timeThread] time(): 04.04.2006 15:45:48, tim: Tue Apr 4 15:45:48 2006
mmc Hardware init
mmc Card init
mmc Card init
mmc: error in mmc_card_init (1)
mmc: error in mmc_init (-1)
Code: Alles auswählen
rmmod mmc
insmod /lib/modules/2.4.32-dbox2/misc/mmc.o
Dann kann ich das Teil ja erstmal fest einbauen.
Gruß Gorcon
-
- Tuxboxer
- Beiträge: 2331
- Registriert: Donnerstag 24. März 2005, 21:52
-
- Interessierter
- Beiträge: 44
- Registriert: Montag 5. Mai 2003, 08:44
Hi,
wegen der Initialisierung...kann es sein, das es da Probleme bei größeren SD Cards gibt ? Bei meiner 128er klappts immer sofort.
@racker
klappt leider nicht mit mmc Treiber im Kernel. Er wird einfach nicht gebaut..
Ansonsten weil du gerade am der U-boot arbeitest..checkst du die mmc Änderung dann auch mit ein.. ?
Hat jemand anders schon den MMC Treiber mit in den Kernel bekommen ?
cu
Soli
wegen der Initialisierung...kann es sein, das es da Probleme bei größeren SD Cards gibt ? Bei meiner 128er klappts immer sofort.
@racker
klappt leider nicht mit mmc Treiber im Kernel. Er wird einfach nicht gebaut..
Ansonsten weil du gerade am der U-boot arbeitest..checkst du die mmc Änderung dann auch mit ein.. ?
Hat jemand anders schon den MMC Treiber mit in den Kernel bekommen ?
cu
Soli
-
- Einsteiger
- Beiträge: 369
- Registriert: Samstag 29. Mai 2004, 01:50
Die Images und yadds funktionieren alle. Das 1x-Image macht nur Sinn,Gorcon hat geschrieben: PS: das yadd läuft leider garnicht, es bleibt bei Loading Kernel hängen.
wenn du den Sagemtreiber selbst einfügst.
Die Yadd mit Bootmanger und mmc macht Probleme (sehr viele Aussetzer).
Mit so einer Fehlermeldung kann ich da nichts anfangen.
Der Treiber versucht 2x die Karte zu initialisieren.mb405 hat geschrieben:ja, bei mir ist es auch erst beim 2. oder 3. anlauf erfolgreich.
kann man das nicht per schleife so lange laden, bis erfolg da ist ?? und dann erst mounten.
Ansonsten musst du dir z.Z. ein "Ladescript" schreiben.
Ich hatte bisher beim Laden mit einer 128MB und einer 256MB Karte keine Probleme.
-
- Einsteiger
- Beiträge: 369
- Registriert: Samstag 29. Mai 2004, 01:50
sorry!Soli hat geschrieben: @racker
klappt leider nicht mit mmc Treiber im Kernel. Er wird einfach nicht gebaut..
Ansonsten weil du gerade am der U-boot arbeitest..checkst du die mmc Änderung dann auch mit ein.. ?
Hat jemand anders schon den MMC Treiber mit in den Kernel bekommen ?
cu
Soli
Ich gebe zu, die "Anleitung" habe ich aus der Erinnerung geschrieben. Wobei es keine Anleitung ist, es fehlen ja ein paar Details.
Es fehlt noch ein "kleines" diff:
Code: Alles auswählen
--- linux-2.4.32/arch/ppc/config.in.original 2006-04-10 00:43:10.000000000 +0200
+++ linux-2.4.32/arch/ppc/config.in 2006-04-10 01:19:59.000000000 +0200
@@ -399,6 +399,8 @@
source drivers/parport/Config.in
+source drivers/misc/Config.in
+
tristate 'Generic /dev/rtc emulation' CONFIG_GEN_RTC
if [ "$CONFIG_GEN_RTC" = "n" -a "$CONFIG_APUS" != "y" ]; then
tristate 'Support for /dev/rtc' CONFIG_PPC_RTC
Wenn ich das richtig gesehen habe, wird es Probleme geben, wenn ich den
so committe. Das Laden des Kernels aus dem Flash wird nicht mehr gehen.
Generell sollten wir uns überlegen wie es weitergehen soll.
Solange die Philips noch nicht mit im Boot ist, würde ich noch keinen 1-4-all-Treiber bauen. (*mit dem Zaunpfahl wink*).
Vlt. können die Hardwaregurus ein paar Hinweise geben,
wie man einen nicht benutzten GPIO-Pin herausfindet?
Es spricht auch nichts dagegen einen eigenen mmc-branch während der Testphase anzulegen.
Mehr dann im Laufe der Woche.
-
- Interessierter
- Beiträge: 30
- Registriert: Montag 14. Februar 2005, 11:58
racker hat geschrieben: Vlt. können die Hardwaregurus ein paar Hinweise geben,
wie man einen nicht benutzten GPIO-Pin herausfindet?
Es spricht auch nichts dagegen einen eigenen mmc-branch während der Testphase anzulegen.
Mehr dann im Laufe der Woche.
Für die, dies interessiert bzw. sich zutrauen die Kabel direkt auf die PCB der Sagem zu löten. Damit kann der Nokia Treiber verwendet werden
-
- Tuxboxer
- Beiträge: 2473
- Registriert: Dienstag 8. Oktober 2002, 21:06
-
- Einsteiger
- Beiträge: 369
- Registriert: Samstag 29. Mai 2004, 01:50
Weiß man schon ob das überhaupt funktioniert?gurgel hat geschrieben:der PB23 wird übrigens bei IDE später noch für DMA gebraucht...
Wie bereits geschrieben, ich glaube nicht, dass jemand IDE und GPIO-SD
in einer Box einbaut.
Das Problem ist eher die gleichzeitige Unterstützung der HW in den Distributionen (Images).
@mgerald21
Klasse! Habe schon überlegt ob ich die Treiber nicht doch merge ...
Noch die Zuordnung (bitte prüfen und ggf. Fehler melden):
Code: Alles auswählen
Pins für Nokia-Layout u. Treiber:
PA7 = SD_DO = 0x0100 = SD_Card Pin 7
PB19 = SD_DI = 0x1000 = SD_Card Pin 2
PB22 = SD_CLK= 0x0200 = SD_Card Pin 5
PB23 = SD_CS = 0x0100 = SD_Card Pin 1
Pins für Sagem-Layout u. Treiber:
PA9 = SD_DO = 0x0040 = SD_Card Pin 7
PA8 = SD_DI = 0x0080 = SD_Card Pin 2
PB17 = SD_CLK= 0x4000 = SD_Card Pin 5
PB16 = SD_CS = 0x8000 = SD_Card Pin 1
not used:
PB18 = nc = 0x2000
-
- Interessierter
- Beiträge: 30
- Registriert: Montag 14. Februar 2005, 11:58
Aus meiner Sicht korrekt ...racker hat geschrieben: Noch die Zuordnung (bitte prüfen und ggf. Fehler melden):Code: Alles auswählen
Pins für Nokia-Layout u. Treiber: PA7 = SD_DO = 0x0100 = SD_Card Pin 7 PB19 = SD_DI = 0x1000 = SD_Card Pin 2 PB22 = SD_CLK= 0x0200 = SD_Card Pin 5 PB23 = SD_CS = 0x0100 = SD_Card Pin 1 Pins für Sagem-Layout u. Treiber: PA9 = SD_DO = 0x0040 = SD_Card Pin 7 PA8 = SD_DI = 0x0080 = SD_Card Pin 2 PB17 = SD_CLK= 0x4000 = SD_Card Pin 5 PB16 = SD_CS = 0x8000 = SD_Card Pin 1 not used: PB18 = nc = 0x2000
-
- Tuxboxer
- Beiträge: 2331
- Registriert: Donnerstag 24. März 2005, 21:52
ich hab das problem gelöst, das es bei mir erst beim 2-3.versuch klappt, den treiber zu laden. in der start_neutrino
die maximale anzahl von 5 reicht bei mir. kann aber angepasst werden.
evtl.könnte man das noch in abhängigkeit einer getouchten datei laden. so wie das mit tuxmail/tuxcal gemacht wird.
Code: Alles auswählen
insmod mmc.o
i=5
while expr $i != 0 > /dev/null
do
if [ ! -e /dev/mmc ]; then
rmmod mmc
sleep 2
insmod mmc.o
fi
i=`expr $i - 1`
sleep 1
done
if [ -e /dev/mmc ]; then
mount /dev/mmc/disc0/part1 /mnt/mmc
fi
evtl.könnte man das noch in abhängigkeit einer getouchten datei laden. so wie das mit tuxmail/tuxcal gemacht wird.
-
- Tuxboxer
- Beiträge: 5873
- Registriert: Samstag 23. Februar 2002, 22:46
-
- Einsteiger
- Beiträge: 369
- Registriert: Samstag 29. Mai 2004, 01:50
-
- Tuxboxer
- Beiträge: 5873
- Registriert: Samstag 23. Februar 2002, 22:46
Würde es ohne "Spezail Kernel" gehen wenn man ein Linux Format auf der MMC formatiert und hat das jemand schon geschafft eine MMC unter Linux so zu ändern? (Ich habe mit der Live DVD von Suse es noch nicht geschaft die MMC (mit Original FAT Formatierung) zu erkennen.)racker hat geschrieben:In anderen Images brauchst du einen Kernel mit FAT/VFAT- Support (siehe 2.Seite).Gorcon hat geschrieben:Welche Datei ausser der mmc.o ist denn noch nötig damit man mounten kann?
Gruß Gorcon
Gruß Gorcon
-
- Interessierter
- Beiträge: 30
- Registriert: Montag 14. Februar 2005, 11:58
Ich hab meine SD mit Ext2 formatiert, damit ich mal ein fertiges Image draufspielen kann. (FAT/VFAT unterstützt keine Links ...)Gorcon hat geschrieben: Würde es ohne "Spezail Kernel" gehen wenn man ein Linux Format auf der MMC formatiert und hat das jemand schon geschafft eine MMC unter Linux so zu ändern? (Ich habe mit der Live DVD von Suse es noch nicht geschaft die MMC (mit Original FAT Formatierung) zu erkennen.)
Gruß Gorcon
Dazu einfach mal die busybox-1.1.1 mit den ganzen disk-tools und ext2 konfiguriert, kompiliert und gut is.
PS: Mir ist aufgefallen, dass wenn man das mmc.o Modul mit insmod nachlädt der Pfad zB. /dev/mmc/disc0/part1 lautet. Wenn das Modul direkt in den Kernel integriert wird der Pfad /dev/mmc/disc bzw. /dev/mmc/part1 lautet!!! Feature oder Bug???
-
- Tuxboxer
- Beiträge: 5873
- Registriert: Samstag 23. Februar 2002, 22:46
Gut zu wissen, denn das brauche ich zwingendmgerald21 hat geschrieben: Ich hab meine SD mit Ext2 formatiert, damit ich mal ein fertiges Image draufspielen kann. (FAT/VFAT unterstützt keine Links ...)
Das fällt dann schon wieder aus
Dazu einfach mal die busybox-1.1.1 mit den ganzen disk-tools und ext2 konfiguriert, kompiliert und gut is.
Gruß Gorcon
-
- Interessierter
- Beiträge: 44
- Registriert: Montag 5. Mai 2003, 08:44
@racker
Danke daran lags..jetzt wirds auch fürn Kernel kompiliert.
Ansonsten wollte ich auch meine SD Card mit ext2 Formatieren. Habe die Busybox und den Kernel angepasst. Leider Probleme
Das Formatieren klappt..denke ich
~ # mkfs.ext2 /dev/mmc/disc0/part1
mke2fs 1.37 (21-Mar-2005)
mkfs.ext2: Could not determine if /dev/mmc/disc0/part1 is mounted
Warning: 75 blocks unused
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
30840 inodes, 122881 blocks
6147 blocks (5.00%) reserved for the super user
First data block=1
15 block groups
8192 blocks per group, 8192 fragments per group
2056 inodes per group
Superblock backups stored on blocks:
8193, 24577, 40961, 57345, 73729
Writing inode tables:
Writing superblocks and filesystem accounting information:
This filesystem will be automatically checked every 33 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
Mounten aber nicht
VFS: Can't find ext2 filesystem on dev mmc(121,1).
mount: Mounting /dev/mmc/disc0/part1 on /mnt/mmc failed: Invalid argument
Mit Vfat ging ja vorher noch alles. Leider kann ich die Karte nicht woanders mal schnell formatieren .
Jemand einen Tip für mich. Oder habe ich was vergessen ?
Danke daran lags..jetzt wirds auch fürn Kernel kompiliert.
Ansonsten wollte ich auch meine SD Card mit ext2 Formatieren. Habe die Busybox und den Kernel angepasst. Leider Probleme
Das Formatieren klappt..denke ich
~ # mkfs.ext2 /dev/mmc/disc0/part1
mke2fs 1.37 (21-Mar-2005)
mkfs.ext2: Could not determine if /dev/mmc/disc0/part1 is mounted
Warning: 75 blocks unused
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
30840 inodes, 122881 blocks
6147 blocks (5.00%) reserved for the super user
First data block=1
15 block groups
8192 blocks per group, 8192 fragments per group
2056 inodes per group
Superblock backups stored on blocks:
8193, 24577, 40961, 57345, 73729
Writing inode tables:
Writing superblocks and filesystem accounting information:
This filesystem will be automatically checked every 33 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
Mounten aber nicht
VFS: Can't find ext2 filesystem on dev mmc(121,1).
mount: Mounting /dev/mmc/disc0/part1 on /mnt/mmc failed: Invalid argument
Mit Vfat ging ja vorher noch alles. Leider kann ich die Karte nicht woanders mal schnell formatieren .
Jemand einen Tip für mich. Oder habe ich was vergessen ?
-
- Tuxboxer
- Beiträge: 2331
- Registriert: Donnerstag 24. März 2005, 21:52
zwecks busybox und den ganzen sachen ?
muss ich den abschnitt aktivieren ?
muss ich den abschnitt aktivieren ?
#
# Linux Ext2 FS Progs
#
# CONFIG_CHATTR is not set
# CONFIG_E2FSCK is not set
# CONFIG_FSCK is not set
# CONFIG_LSATTR is not set
# CONFIG_MKE2FS is not set
# CONFIG_TUNE2FS is not set
# CONFIG_E2LABEL is not set
# CONFIG_FINDFS is not set
-
- Einsteiger
- Beiträge: 369
- Registriert: Samstag 29. Mai 2004, 01:50
So, die Philips läuft jetzt bei mir
Allerdings habe ich am Modemconnector keine 3.3V gefunden und habe sie
deswegen aus den 5V von Pin 1 über 3 Dioden (Reihenschaltung) erzeugt.
Wer das nicht will, muss sich die 3,3V z.B. vom Netzteil holen.
Wie man sieht , wird der "Sagem-Treiber" verwendet, der übrigens mittlerweile
auch auf meiner Nokia läuft.
Ich werde diesen Treiber als mmc2 committen, dann könnt ihr morgen
die "Eier" suchen, die ich evtl. gelegt habe
Danach kommt dann die Fehlerbehebung im Treiber.
Allerdings habe ich am Modemconnector keine 3.3V gefunden und habe sie
deswegen aus den 5V von Pin 1 über 3 Dioden (Reihenschaltung) erzeugt.
Wer das nicht will, muss sich die 3,3V z.B. vom Netzteil holen.
Code: Alles auswählen
Pins für Philips-Layout
Modem Connector:
2 4 6 8 10 12 ---> Netzteil
1 3 5 7 9 11
PA9 = SD_DO = 0x0040 = SD_CARD Pin 7 = MODEM_CN 11
PA8 = SD_DI = 0x0080 = SD_CARD Pin 2 = MODEM_CN 9
PB17 = SD_CLK= 0x4000 = SD_CARD Pin 5 = MODEM_CN 7
PB16 = SD_CS = 0x8000 = SD_CARD Pin 1 = MODEM_CN 5
GND = = Masse = SD_Card Pin 3,6= Modem_CN 2
Widerstand 100 kOhm zwischen SD_CARD Pin 4 und 7
5V von Modem_CN 1 über 3 in Reihe geschaltete Dioden (1N4007) an SD_Card Pin 4
auch auf meiner Nokia läuft.
Ich werde diesen Treiber als mmc2 committen, dann könnt ihr morgen
die "Eier" suchen, die ich evtl. gelegt habe
Danach kommt dann die Fehlerbehebung im Treiber.
Zuletzt geändert von racker am Sonntag 16. April 2006, 11:56, insgesamt 1-mal geändert.