SD Karte oder MMC Card über Slot 2 machbar?

Boxenweitwurf
mgerald21
Interessierter
Interessierter
Beiträge: 30
Registriert: Montag 14. Februar 2005, 11:58

Re: gemeinsamer Mount Point für die Images?

Beitrag von mgerald21 »

just_me hat geschrieben:Hi,
noch könnte man sich vermutlich für alle Images auf einen gemeinsamen Mount Point für die MMC Karte einigen?
/mmc?
/media/mmc?
...?
Sicher eine gute Idee ... aber mmc im Mount-Point halte ich für verwirrend. Dann kommen sicher wieder einige DAUs mit der Frage: "Und wo wird meine SD Karte gemountet???" :wink: :wink: :wink:

/mnt/media ?
/mnt/card ?

Kann mir aber auch gut vorstellen, dass ein gesamtes Image auf der Karte abgelegt wird; d.h. BMon started UBoot started direkt von der MMC/SD! Und dann wird vielleicht das interne Flash ins RootFS gemounted?!
Gorcon
Tuxboxer
Tuxboxer
Beiträge: 5873
Registriert: Samstag 23. Februar 2002, 22:46

Beitrag von Gorcon »

Passt vieleicht hier nicht ganz hin, aber gibts eine Möglichkeit die MMC Karte in der Box zu formatieren? Ich habe ansonsten keine Möglichkeit dazu und müsste mir sonst erst noch einen Kartenleser kaufen (den ich sonst nie benötigen werde).

Gruß Gorcon
mb405
Tuxboxer
Tuxboxer
Beiträge: 2331
Registriert: Donnerstag 24. März 2005, 21:52

Beitrag von mb405 »

ich hab meine im fotohandy formatiert. das arme nokia hat für die 512mb fast 20minuten gebraucht. :) deswegen evtl die begrenzung auf 8+endung.
Gorcon
Tuxboxer
Tuxboxer
Beiträge: 5873
Registriert: Samstag 23. Februar 2002, 22:46

Beitrag von Gorcon »

Und wie geht das in der Box?

Gruß Gorcon
mgerald21
Interessierter
Interessierter
Beiträge: 30
Registriert: Montag 14. Februar 2005, 11:58

Beitrag von mgerald21 »

Gorcon hat geschrieben:Und wie geht das in der Box?

Gruß Gorcon
mkdosfs (dosfstools)

Musst du aber selbst für Box übersetzen ... aber keine Ahnung ob das dann läuft.
usul1
Erleuchteter
Erleuchteter
Beiträge: 760
Registriert: Freitag 14. Januar 2005, 12:42

Beitrag von usul1 »

Gorcon hat geschrieben:Passt vieleicht hier nicht ganz hin, aber gibts eine Möglichkeit die MMC Karte in der Box zu formatieren? Ich habe ansonsten keine Möglichkeit dazu
Dann hast du ja auch keine Möglichkeit die Vorhandene Formatierung zu löschen. Soll heisen kaufst du dir eine Karte ist sie in der Regel schon Partitioniert und FAT Formatiert. Es gibt also keinen Grund das selber zu tun.
Gorcon hat geschrieben:und müsste mir sonst erst noch einen Kartenleser kaufen (den ich sonst nie benötigen werde).
Nur so zur Info: Es gibt SD/MMC Kartenleser in USB Memory Stick Bauform (ein wenig fülliger das die große SD Karte da ja rein muß) für <10EUR.

Es kann echt praktisch sein wenn man seine SD Karte mal gelegentlich zum Speicherstick umbauen kann wenn man mal sowas benötigt.

Und bevor du anfängst das mkdosfs für die Box zu bauen ist das evtl. einfacher ;-)
Und wenn das Dateisystem der Karte mal eine Macke bekommt dann ist der Scandisk am PC auch einfacher.

cu
usul
racker
Einsteiger
Einsteiger
Beiträge: 369
Registriert: Samstag 29. Mai 2004, 01:50

Beitrag von racker »

mgerald21 hat geschrieben: Ich habs mal an ne Sagem angeschlossen. Da der Modemstecker der Sagem aber nicht alle GPIO Pins der Nokia hat musste ich mit den vorhandenen auskommen; D.h. PB16, PB17, PA8 und PA9 und den Treiber dementsprechend anpassen.
Könntest du deine Pinbelegung, am besten mit Foto (Sagem hat glaube ich
unterschiedliche Anschlussbelegungen) und die Treiberanpassungen posten?
Dann hätten wir schon 2 Boxentypen.
Wenn sich dann noch jemand um die Philips kümmert, würde es sich noch mehr
lohnen den Treiber zu verbessern.
just_me
Einsteiger
Einsteiger
Beiträge: 123
Registriert: Montag 28. November 2005, 11:31

Beitrag von just_me »

Gorcon hat geschrieben: gibts eine Möglichkeit die MMC Karte in der Box zu formatieren?
Und wie geht das in der Box?
Eine Alternative zu mkdosfs (siehe oben), die kein zusätzliches Programm auf der DBOX erfordert dafür aber wesentlich umständlicher ist, wäre:

a) ein entsprechend grosses Image auf Deinem PC zu erzeugen,

b) auf diesem Image ein Dateisystem anzulegen,

c) dieses Image auf die Partition der MMC zu kopieren.


Nicht selbst ausprobiert, deshalb mit Vorbehalt:

a) mit cat /proc/partitions auf der DBOX die Größe xx feststellen, dann auf dem PC mit dd if=/dev/zero of=/tmp/partition.img count=xx eine leere Datei anlegen (zum Test darfs natürlich auch eine kleinere Datei sein (für vfat32 jedoch nicht kleiner als 32 MByte)),

b) mit mkfs.msdos (oder mkfs.ext2 oder mkfs.reiserfs oder mkfs.xfs oder mkfs.jfs oder mkfs.ext3) das Dateisystem Deiner Wahl mit entsprechender Größe in der bisher leeren Datei /tmp/partition.img anlegen,

c) die Datei auf die entsprechende Partition der MMC Karte kopieren. Falls das Verzeichnis per NFS oder CIFS gemountet ist geht dies mit cp oder dd, falls es auf einem Webserver liegt ginge vermutlich wget mit der Option -O.
Gorcon
Tuxboxer
Tuxboxer
Beiträge: 5873
Registriert: Samstag 23. Februar 2002, 22:46

Beitrag von Gorcon »

Danke, nö, dann lieber die Variante die usul1 geschrieben hat.
Habe mir eben bei ebay so einen USB Stick mit MMC Fassung für 5,99€ (inclusive Versandkosten) geschossen.

Gruß Gorcon
Soli
Interessierter
Interessierter
Beiträge: 44
Registriert: Montag 5. Mai 2003, 08:44

Beitrag von Soli »

Hi,

So meine SD Card läuft auch .. :)

mmc Hardware init
mmc Card init
mmc Card init *1*
mmc Card init *2*
Size = 123008, hardsectsize = 512, sectors = 246016
Partition check:
mmca: p1

Habe aber mangels Kontaktiereinheit..das Kabel direkt an den SD Adapter gelötet. Ich kann ja auch die MicroSD/Transflash Card tauschen.

Was mich sehr interessiert..

1. wie kann man den Treiber direkt in den Kernel bekommen ? Ziel root FS über die SD Card. Besser wäre natürlich auch noch die Uboot unterstützung

2. lässt sich die Geschwindigkeit erhöhen ? Hat schon jemand etwas optimiert.

War ne super Idee ..thx Tagana
just_me
Einsteiger
Einsteiger
Beiträge: 123
Registriert: Montag 28. November 2005, 11:31

Beitrag von just_me »

Soli hat geschrieben:So meine SD Card läuft auch .. :)
Glückwunsch - ich habe noch nicht gelötet :)
Soli hat geschrieben:Was mich sehr interessiert..
2. lässt sich die Geschwindigkeit erhöhen ? Hat schon jemand etwas optimiert.
Naja, da war mal was: http://forum.tuxbox.org/forum/viewtopic ... c&start=37

So ganz verkehrt scheint es nicht zu sein, weil meine Optimierung anscheinend auf einem Linksys WRT54G http://forum.bsr-clan.de/ftopic6512.html zu laufen scheint.

Geschwindigkeitsmäßig ist dies noch nicht ganz das Ende der Fahnenstange, aber solange andere Probleme da zu sein scheinen:
mgerald21 hat geschrieben:trotzdem ist die Box nach einiger Zeit hängen geblieben

und nicht klar ist, ob die PinBelegung mit anderen Erweiterungen kollidiert (Ahäm: und ich mein Crossdevelopment System nicht aufgesetzt habe) macht es wenig Sinn, meinen oben zitierten Post noch Optimierungen hinzuzufügen, die dann nachher doch nur im Weg herumstehen.

Noch dazu habe ich ja nur eine Sagem.
mgerald21
Interessierter
Interessierter
Beiträge: 30
Registriert: Montag 14. Februar 2005, 11:58

Beitrag von mgerald21 »

racker hat geschrieben:
mgerald21 hat geschrieben: Ich habs mal an ne Sagem angeschlossen. Da der Modemstecker der Sagem aber nicht alle GPIO Pins der Nokia hat musste ich mit den vorhandenen auskommen; D.h. PB16, PB17, PA8 und PA9 und den Treiber dementsprechend anpassen.
Könntest du deine Pinbelegung, am besten mit Foto (Sagem hat glaube ich
unterschiedliche Anschlussbelegungen) und die Treiberanpassungen posten?
Dann hätten wir schon 2 Boxentypen.
Wenn sich dann noch jemand um die Philips kümmert, würde es sich noch mehr
lohnen den Treiber zu verbessern.
Bild

Mit dieser Variante entfällt leider ein Multicam ... deshalb eher als temporäre Lösung sehen.
Im Moment such ich noch die GPIO Pins der ungenutzten Modem-Signale (von der Nokia) auf der Sagem Leiterplatte.

Code: Alles auswählen

#ifdef SAGEM
//
//			SAGEM FRONT
//	<- power supply
//
//		1  2  3  4  5  6  7  8  9  10 11 12
//
//
//

#define SD_DO  0x0040 // pin 2  (on SD/MMC card pin 7)
#define SD_DI  0x0080 // pin 1  (on SD/MMC card pin 2)
#define SD_CLK 0x4000 // pin 6  (on SD/MMC card pin 5)
#define SD_CS  0x8000 // pin 10 (on SD/MMC card pin 1)
//      GND           // pin 3  (on SD/MMC card pin 3+6)
//      VCC (3V)      // pin 5  (on SD/MMC card pin 4)

typedef unsigned int uint32;

volatile immap_t *immap;

static int mmc_hardware_init(void) {
  volatile cpm8xx_t *cp  = (cpm8xx_t *) &immap->im_cpm;
  volatile iop8xx_t *cpi = (iop8xx_t *) &immap->im_ioport;

  printf("mmc Hardware init\n");
  cp->cp_pbpar &=   ~(SD_CLK | SD_CS);
  cp->cp_pbodr &=   ~(SD_CLK | SD_CS);
  cp->cp_pbdir |=    (SD_CLK | SD_CS);
  cpi->iop_papar &= ~(SD_DO | SD_DI);
  cpi->iop_paodr &= ~(SD_DO);
  cpi->iop_padir |=   SD_DI;
  cpi->iop_padir &=  ~SD_DO;

  // Clock + CS low
  cp->cp_pbdat &= ~(SD_CLK | SD_CS);
  
  return 0;
}

static void mmc_spi_cs_low(void) {
  volatile cpm8xx_t *cp  = (cpm8xx_t *) &immap->im_cpm;
  cp->cp_pbdat &= ~(SD_CS);
}

static void mmc_spi_cs_high(void) {
  volatile cpm8xx_t *cp  = (cpm8xx_t *) &immap->im_cpm;
  cp->cp_pbdat |= SD_CS;
}

static unsigned char mmc_spi_io(unsigned char data_out) {
  volatile cpm8xx_t *cp  = (cpm8xx_t *) &immap->im_cpm;
  volatile iop8xx_t *cpi = (iop8xx_t *) &immap->im_ioport;
  unsigned char result = 0;
  unsigned char i;

  for(i = 0x80; i != 0; i >>= 1) {
    if (data_out & i)
      cpi->iop_padat |= SD_DI;
    else
      cpi->iop_padat &= ~SD_DI;

    cp->cp_pbdat |= SD_CLK;
    if (cpi->iop_padat & SD_DO) {
    	result |= i;
    }
    cp->cp_pbdat &= ~SD_CLK;
  }

  return result;
}

#endif
just_me
Einsteiger
Einsteiger
Beiträge: 123
Registriert: Montag 28. November 2005, 11:31

Beitrag von just_me »

Hi, zu der Pinbelegung noch eine Anmerkung:

eventuell ist es ein flottere Übertragung möglich, wenn die beiden schnell geschalteten Leitungen SD_DI und SD_CLK auf dem gleichen Port liegen. Wenn diese beiden noch (wie bei der Nokia) auf pbdat lägen wird die Software, die Sagem&Nokia teilen deutlich einfacher!
Es müssten dann nur SD_DI und SD_CLK die bisher als Macro definiert sind als Variablen definiert werden :D

Grüße,
Frieder

PS: könnte es sein, dass der Stecker um 180° verdreht gezeichnet ist?
Gorcon
Tuxboxer
Tuxboxer
Beiträge: 5873
Registriert: Samstag 23. Februar 2002, 22:46

Beitrag von Gorcon »

just_me hat geschrieben:PS: könnte es sein, dass der Stecker um 180° verdreht gezeichnet ist?
Nein ist schon richtig. Wenn das Netzteil links liegt, ist der dritte Pin GND (habe es eben durchgemessen).

Gruß Gorcon
Papst
Developer
Beiträge: 279
Registriert: Mittwoch 26. Juni 2002, 22:19

Beitrag von Papst »

@just_me
Der Treiberpatch den du weiter vorne geposted hast funktioniert hier bestens. Transferraten von 80-100bk/s, wobei die Box noch einigermaßen bedienbar bleibt. Ist also schonmal besser als vorher, meiner Meinung nach.
Audioplayer läuft allerdings noch nicht flüssig. Schätze da die CPU mit dem mp3 decoding eh schon am Limit ist, passt das Lesen von der Karte nicht mehr.

Dazu muss ich sagen das das ganze mit mount sync getestet ist. Mit async dauerts erheblich länger und die Box ist auch währenddessen kaum noch bedienbar.
Gruß

Der Papst
just_me
Einsteiger
Einsteiger
Beiträge: 123
Registriert: Montag 28. November 2005, 11:31

Beitrag von just_me »

Papst hat geschrieben:@just_me
Der Treiberpatch den du weiter vorne geposted hast funktioniert hier bestens.
Sehr schön! :) :)
Papst hat geschrieben: Dazu muss ich sagen das das ganze mit mount sync getestet ist. Mit async dauerts erheblich länger und die Box ist auch währenddessen kaum noch bedienbar.
Eigentlich sollte mit "async" alles besser werden (statt schlechter). Dass dies nicht so ist scheint darauf hinzudeuten, dass der darüberliegende Layer schlecht auf die Flashkarten-Charakteristik angepasst ist und z.B. zu viele Blöcke im voraus gepuffert werden. Dies macht Sinn bei Systemen, die mit DMA betrieben werden oder bei Systemen bei denen hohe Latenzzeiten zwischen Anforderung eines Blocks und dem eigentlichen Transfer (z.B. Festplatte) liegen, nicht jedoch wenn die CPU selbst den Transfer macht & keine nennenswerten Latenzzeiten auftreten.
Hier müsste man vermutlich an den Werten für kupdated drehen. Ich weiss aber nicht wo und wie:)

Was mir noch aufgefallen ist: In der Funktion mmc_driver_init(void) wird der read_ahead auf einen für die MMC Karte zu hohen Wert gesetzt:
read_ahead[MAJOR_NR] = 8;
Damit ist aber leider wahrscheinlich noch nicht getan. Könnte aber die Bedienbarkeit der Box verbessern, wenn in kleineren "Häppchen" gelesen wird.
racker
Einsteiger
Einsteiger
Beiträge: 369
Registriert: Samstag 29. Mai 2004, 01:50

Beitrag von racker »

Soli hat geschrieben:Hi,


Was mich sehr interessiert..

1. wie kann man den Treiber direkt in den Kernel bekommen ? Ziel root FS über die SD Card. Besser wäre natürlich auch noch die Uboot unterstützung
Meine Lösung sieht so aus:
Treiber mmc.c nach linux/driver/misc/ kopieren und in db2mmc.c umbenennen.
In diesem Verzeichnis folgende Dateien ändern
Config.in

Code: Alles auswählen

--- Config.in.original	1999-12-26 00:04:56.000000000 +0100
+++ Config.in	2006-03-14 17:30:23.000000000 +0100
@@ -3,5 +3,6 @@
 #
 mainmenu_option next_comment
 comment 'Misc devices'
+tristate ' DBOX2 MMC support	' CONFIG_DB2MMC
 
 endmenu
Makefile

Code: Alles auswählen

--- Makefile.original	2000-12-29 23:07:22.000000000 +0100
+++ Makefile	2006-03-14 16:28:59.000000000 +0100
@@ -11,6 +11,20 @@
 
 O_TARGET := misc.o
 
+# Object file lists.
+
+obj-y		:=
+obj-m		:=
+obj-n		:=
+obj-		:=
+
+
+
+# Each configuration option enables a list of files.
+
+obj-$(CONFIG_DB2MMC)	+=	db2mmc.o
+
+
 include $(TOPDIR)/Rules.make
 
 fastdep:
Beim Durchlauf von make config ARCH=ppc solltest du nach misc-devices gefragt werden - wenn nicht dann muss noch soetwas in die .config

Code: Alles auswählen

#
# Misc devices
#
CONFIG_DB2MMC=y
# CONFIG_GEN_RTC is not set
# CONFIG_PPC_RTC is not set
# CONFIG_CMDLINE_BOOL is not set
# CONFIG_BADRAM is not set

u-boot Unterstützung wird etwas schwieriger da u-boot soetwas wie gendisk nicht kennt.

@mgerald21
Danke, werde es einmal testen
Zuletzt geändert von racker am Samstag 1. April 2006, 16:04, insgesamt 1-mal geändert.
mgerald21
Interessierter
Interessierter
Beiträge: 30
Registriert: Montag 14. Februar 2005, 11:58

Beitrag von mgerald21 »

racker hat geschrieben:
u-boot Unterstützung wird etwas schwieriger da u-boot soetwas wie gendisk nicht kennt.

@mgerald21
Danke, werde es einmal testen
So, ich hab mal versucht mmc.c zu ändern, sodass es in uboot funktioniert.
*funkt*. :D :D :D :D :D :D

Somit kann ich den Kernel von der MMC/SD Karte lesen und anschliessend starten. Der Kernel mounted aber (bei mir) das RootFS dann mittels NFS da ich noch keine Zeit hatte das mmc.o in den Kernel zu integrieren.

PS: Würde diesen Patch gerne zur Verfügung stellen, aber wie kann ich hier Files anhängen :gruebel: :gruebel:
racker
Einsteiger
Einsteiger
Beiträge: 369
Registriert: Samstag 29. Mai 2004, 01:50

Beitrag von racker »

mgerald21 hat geschrieben:PS: Würde diesen Patch gerne zur Verfügung stellen, aber wie kann ich hier Files anhängen
Der Patch liegt inzwischen auf meiner HP (WWW-Button) unter mmc_test.
Ich schaue ihn mir dann in einer ruhigen Minute an.
Gorcon
Tuxboxer
Tuxboxer
Beiträge: 5873
Registriert: Samstag 23. Februar 2002, 22:46

Beitrag von Gorcon »

Heist das jetzt im Klartext das jeder Boxenhersteller einen anderen Uboot benötigt weil die Anschlußbelegungen abweichen? :roll:

Gruß Gorcon
racker
Einsteiger
Einsteiger
Beiträge: 369
Registriert: Samstag 29. Mai 2004, 01:50

Beitrag von racker »

Gorcon hat geschrieben:Heist das jetzt im Klartext das jeder Boxenhersteller einen anderen Uboot benötigt weil die Anschlußbelegungen abweichen? :roll:

Gruß Gorcon
Nein, den Treiber für alle Boxen tauglich zu machen ist kein Problem, eher die Größe.
@mgerald21
Passt dein u-boot noch ins flfs?
mgerald21
Interessierter
Interessierter
Beiträge: 30
Registriert: Montag 14. Februar 2005, 11:58

Beitrag von mgerald21 »

Hmm, um genau zu sein hat u-boot mit mmc.o 149792 Bytes. Aber mkflfs läuft durch ...
Soli
Interessierter
Interessierter
Beiträge: 44
Registriert: Montag 5. Mai 2003, 08:44

Beitrag von Soli »

@racker

Ich habe versucht den Treiber in den Kernel zu integrieren. Habe es genau so gemacht wie du beschrieben. Ist noch irgendein anderer Schritt nötig ? Mit oder ohne .. CONFIG_DB2MMC=y der kernel ist immer gleich gross. Auch wird in dem Kernel Ordner die db2mmc.o nicht erzeugt.

any Idee ?
racker
Einsteiger
Einsteiger
Beiträge: 369
Registriert: Samstag 29. Mai 2004, 01:50

Beitrag von racker »

Prüfe ob in der Datei "linux/driver/misc/.depend so etwas steht:

Code: Alles auswählen

db2mmc.o: db2mmc.c \
wenn nicht, fehlt noch ein "make dep ARCH=ppc" im linuxdir.
Falls es daran nicht liegt muss ich es mir morgen nocheinmal anschauen,
ist ja schon eine Weile her.
Soli
Interessierter
Interessierter
Beiträge: 44
Registriert: Montag 5. Mai 2003, 08:44

Beitrag von Soli »

Hi racker.. die ".depend" sieht genau so aus. Wenn du Zeit haben solltest..schaue bitte nochmal nach .. thx