Hello,
wir haben bzw. wollen diverse BeagleBone Black (BBB) mit einem Image von
der SD-Karte booten und dabei soll noch Platz über sein für User-Daten,
deswegen wurde beschlossen, dass ausschließlich 16GB SD-Karten zum
Einsatz kommen. Das Problem ist jetzt etwas skurril, denn manchmal
bootet das BBB nicht von der SD-Karte sondern vom eMMC. Woran liegt das?
Ich habe die betreffenden Boot-Pins (LCD_DATA0...15) schon gecheckt, ob
die bei dem 4er-Stack an Capes irgendwie einen Einfluss haben könnten
aber die Eingänge sind nicht beschaltet. Nach bisherigen Erkenntnissen
scheint es an der Betriebsspannung der SD-Karte zu liegen (SanDisk Ultra
microSD HC I, Klasse 10). Einer aus unserem Team meinte, dass das
womöglich daran liegt, dass beim booten bzw. im entscheidenen Moment die
Spannung an der SD-Karte zu gering ist dass diese vom BBB dann nicht
erkannt wird (Bootmelungen unten).
Wenn ich mit einen UART-USB-Konverter mir die Bootmeldungen ansehe,
könnte das stimmen, es könnte aber auch schlichtweg ein Falschmeldung
sein bzw. ein Bug in uBoot.
Die Bootmeldungen (nur der Anfang), wenn BBB von der SD-Karte bootet:
1 | U-Boot SPL 2015.10-00001-g143c9ee (Nov 06 2015 - 15:27:19)
|
2 | bad magic
|
3 |
|
4 | U-Boot 2015.10-00001-g143c9ee (Nov 06 2015 - 15:27:19 -0600), Build: jenkins-github_Bootloader-Builder-274
|
5 |
|
6 | Watchdog enabled
|
7 |
|
8 | I2C: ready
|
9 | DRAM: 512 MiB
|
10 | Reset Source: Power-on reset has occurred.
|
11 | MMC: OMAP SD/MMC: 0, OMAP SD/MMC: 1
|
12 | Using default environment
|
13 |
|
14 | Net: <ethaddr> not set. Validating first E-fuse MAC
|
15 | cpsw
|
16 |
|
17 | Hit any key to stop autoboot: 1
|
18 | \0x08\0x08\0x08 0
|
19 | gpio: pin 53 (gpio 53) value is 1
|
20 | switch to partitions #0, OK
|
21 | mmc0 is current device
|
22 | gpio: pin 54 (gpio 54) value is 1
|
23 |
|
24 | Checking for: /uEnv.txt ...
|
25 | 1179 bytes read in 9 ms (127.9 KiB/s)
|
26 | gpio: pin 55 (gpio 55) value is 1
|
27 |
|
28 | Loaded environment from uEnv.txt
|
29 | Importing environment from mmc ...
|
30 | Checking if uenvcmd is set ...
|
31 | gpio: pin 56 (gpio 56) value is 1
|
32 | Running uenvcmd ...
|
33 | [...]
|
Und wenn das BBB vom eMMC bootet sieht es so aus wie hier drunter. Der
Anfang, der gleich ist mit oben habe ich weggelassen und den ersten
Unterschied markiert:
1 | Hit any key to stop autoboot: 1
|
2 | \0x08\0x08\0x08 0
|
3 | gpio: pin 53 (gpio 53) value is 1
|
4 | Card did not respond to voltage select! *Unterschiedlich*
|
5 | Card did not respond to voltage select! *Unterschiedlich*
|
6 | gpio: pin 56 (gpio 56) value is 0 *Unterschiedlich*
|
7 | gpio: pin 55 (gpio 55) value is 0 *Unterschiedlich*
|
8 | gpio: pin 54 (gpio 54) value is 0 *Unterschiedlich*
|
9 |
|
10 | switch to partitions #0, OK
|
11 | mmc1(part 0) is current device *Unterschiedlich*.....
|
12 |
|
13 | gpio: pin 54 (gpio 54) value is 1
|
14 | Checking for: /uEnv.txt ...
|
15 | Checking for: /boot.scr ...
|
16 | Checking for: /boot/boot.scr ...
|
17 | Checking for: /boot/uEnv.txt ...
|
18 | gpio: pin 55 (gpio 55) value is 1
|
19 | 1800 bytes read in 15 ms (117.2 KiB/s)
|
20 | Loaded environment from /boot/uEnv.txt
|
21 | Checking if uname_r is set in /boot/uEnv.txt...
|
22 | gpio: pin 56 (gpio 56) value is 1
|
23 | Running uname_boot ...
|
24 | loading /boot/vmlinuz-3.8.13-bone79 ...
|
25 | [...]
|
Ich frage mich, was ist mmc0 und was ist mmc1? Lt. den Bootmeldungen ist
mmc0 = SD-Karte und mmc1 = eMMC, andersherum wäre es logischer, finde
ich.
Und was sind die Pins GPIO 53, 54, 55 und 56? Vermutlich die, die die
Bootquelle festlegen, also irgendwo im Bereich LCD_DATA0 bis LCD_DATA15.
Könnte es helfen, wenn man an der Taktfrequenz der SD-Karte
(SYSBOOT[15:14]) am BBB "schraubt"?
Das Bootimage kommt übrigens später mal ins eMMC aber selbst wenn das
jetzt schon der Fall wäre und BBB hätte nicht von der SD-Karte gebootet,
dann wäre auch nach dem booten die SD-Karte nicht sichtbar = nicht
gemounted und das sollte auch nicht sein.