Bought a BBB [0 047132904547 A6] last month, and had about two hours of delight, followed by literal days of fruitless struggle Googling for clues. I'm about out of ideas.
Contacting Beagleboard produced:
So here it is... Maybe it will help someone...
There are lots of lines in my boot log that look like errors, such as:
-----
OMAP SD/MMC: 0
mmc_send_cmd : timeout: No status update
reading u-boot.img
...
WARNING: Caches not enabled
NAND: No NAND device found!!!
0 MiB
MMC: OMAP SD/MMC: 0, OMAP SD/MMC: 1
*** Warning - readenv() failed, using default environment
...
Net: <ethaddr> not set. Validating first E-fuse MAC
Phy not found
PHY reset timed out
...
Uncompressing Linux... done, booting the kernel.
[ 0.196219] omap2_mbox_probe: platform not supported
[ 0.206814] tps65217-bl tps65217-bl: no platform data provided
[ 0.283357] bone-capemgr bone_capemgr.8: slot #0: No cape found
[ 0.320463] bone-capemgr bone_capemgr.8: slot #1: No cape found
[ 0.357572] bone-capemgr bone_capemgr.8: slot #2: No cape found
[ 0.394681] bone-capemgr bone_capemgr.8: slot #3: No cape found
[ 0.414455] bone-capemgr bone_capemgr.8: slot #6: BB-BONELT-HDMIN conflict P8.45 (#5:BB-BONELT-HDMI)
[ 0.424062] bone-capemgr bone_capemgr.8: slot #6: Failed verification
[ 0.444551] omap_hsmmc mmc.4: of_parse_phandle_with_args of 'reset' failed
[ 0.451844] bone-capemgr bone_capemgr.8: loader: failed to load slot-6 BB-BONELT-HDMIN:00A0 (prio 2)
[ 0.518153] pinctrl-single 44e10800.pinmux: pin 44e10854 already requested by 44e10800.pinmux; cannot claim for gpio-leds.7
[ 0.529856] pinctrl-single 44e10800.pinmux: pin-21 (gpio-leds.7) status -22
[ 0.537166] pinctrl-single 44e10800.pinmux: could not request pin 21 on device pinctrl-single
-----
But I've decided all of them are normal except this one:
-----
[ 2.502401] Detected MACID = 90:59:af:4d:71:eb
[ 2.506978] Unhandled fault: external abort on non-linefetch (0x1008) at 0xe089e000
[ 2.515192] Internal error: : 1008 [#1] SMP ARM
[ 2.519936] Modules linked in:
[ 2.523139] CPU: 0 Not tainted (3.8.13-bone30 #1)
[ 2.528444] PC is at cpsw_probe+0x528/0xbbc
[ 2.532830] LR is at ioremap_page_range+0x10c/0x164
[ 2.537939] pc : [<c03fbf40>] lr : [<c02eddb4>] psr: a0000113
[ 2.537939] sp : df051e20 ip : df469a0c fp : 00000001
[ 2.549962] r10: df7f8800 r9 : df7f8d90 r8 : 00000000
[ 2.555433] r7 : df0d3600 r6 : df0d3610 r5 : e089e000 r4 : df7f8800
[ 2.562268] r3 : df0ca840 r2 : c03fbf24 r1 : 4a100e13 r0 : e089e000
[ 2.569105] Flags: NzCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment kernel
[ 2.576760] Control: 10c5387d Table: 80004019 DAC: 00000015
[ 2.582777] Process swapper/0 (pid: 1, stack limit = 0xdf050240)
[ 2.589067] Stack: (0xdf051e20 to 0xdf052000)
...
[ 2.722176] [<c03fbf40>] (cpsw_probe+0x528/0xbbc) from [<c0386064>] (platform_drv_probe+0x14/0x18)
[ 2.731569] [<c0386064>] (platform_drv_probe+0x14/0x18) from [<c0384f80>] (driver_probe_device+0xb0/0x1dc)
[ 2.741687] [<c0384f80>] (driver_probe_device+0xb0/0x1dc) from [<c038510c>] (__driver_attach+0x60/0x84)
[ 2.751530] [<c038510c>] (__driver_attach+0x60/0x84) from [<c0383994>] (bus_for_each_dev+0x50/0x84)
[ 2.761010] [<c0383994>] (bus_for_each_dev+0x50/0x84) from [<c038470c>] (bus_add_driver+0x9c/0x20c)
[ 2.770490] [<c038470c>] (bus_add_driver+0x9c/0x20c) from [<c03855dc>] (driver_register+0x9c/0x138)
[ 2.779973] [<c03855dc>] (driver_register+0x9c/0x138) from [<c0008880>] (do_one_initcall+0x90/0x160)
[ 2.789556] [<c0008880>] (do_one_initcall+0x90/0x160) from [<c08ef8f4>] (kernel_init_freeable+0xf8/0x1c4)
[ 2.799589] [<c08ef8f4>] (kernel_init_freeable+0xf8/0x1c4) from [<c0609ed4>] (kernel_init+0x8/0xe4)
[ 2.809076] [<c0609ed4>] (kernel_init+0x8/0xe4) from [<c000d618>] (ret_from_fork+0x14/0x3c)
[ 2.817827] Code: e59f1644 ebfe1a5b ea000150 e58455c0 (e5953000)
[ 2.824213] ---[ end trace ee1f1f895243fb40 ]---
[ 2.829303] Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000000b
[ 2.829303]
[ 2.838880] drm_kms_helper: panic occurred, switching back to text console
-----
Makes sense since cpsw_probe is about ethernet and it was called while loading drivers, and I apparently killed the board trying to install a Wi-Fi adapter. (But the adapter was working! Until I tried to reboot...)
I loaded Ubuntu 12.04 onto my uSD, and it fails with the same error as Angstrom in the eMMC or Angstrom on the uSD - but after minutes of boot messages, not seconds like Angstrom.
Here's all the ethernet related clues I can find:
-----
*** Warning - readenv() failed, using default environment
...
Net: <ethaddr> not set. Validating first E-fuse MAC
Could not get PHY for cpsw: addr 0
cpsw, usb_ether
...
[ 0.116207] hw-breakpoint: debug architecture 0x4 unsupported.
[ 0.117564] cpsw.0: No hwaddr in dt. Using 90:59:af:4d:71:be from efuse
[ 0.117585] cpsw.1: No hwaddr in dt. Using 90:59:af:4d:71:ed from efuse
...
[ 2.472570] davinci_mdio: probe of 4a101000.mdio failed with error -5
[ 2.479609] Detected MACID = 90:59:af:4d:71:be
[ 2.484177] Unhandled fault: external abort on non-linefetch (0x1008) at 0xe089e000
[ 2.492394] Internal error: : 1008 [#1] SMP ARM
-----
With the Ubuntu uSD boot, it clearly reads a different uEnv (Angstrom eMMC is 26 bytes, uSD is 14 bytes):
-----
mmc0 is current device
SD/MMC found on device 0
reading uEnv.txt
340 bytes read in 3 ms (110.4 KiB/s) <-- not 14 or 26 bytes [see below]
Loaded environment from uEnv.txt
Importing environment from mmc ... <-- is it importing the poison that kills Angstrom?
Running uenvcmd ...
-----
The only ethernet related items I see in the environment are:
-----
U-Boot# printenv
ethact=cpsw
ethaddr=90:59:af:4d:71:be <-- eth0 except for last "be"
usbnet_devaddr=90:59:af:4d:71:be <-- eth0 except for last "be"
-----
In the log above it found two variants of eth0:
Using 90:59:af:4d:71:be from efuse <-- eth0 except for last "be"
Using 90:59:af:4d:71:ed from efuse <-- eth0 except for last "ed"
The original MAC addresses from ifconfig, before the boot failures:
eth0 Link encap:Ethernet HWaddr 90:59:AF:4D:71:EB
ra0 Link encap:Ethernet HWaddr 00:0C:43:00:7D:7F
usb0 Link encap:Ethernet HWaddr 6E:5A:F6:F0:F3:45
I'm familiar with Linux routers having multiple similar MAC addresses, but they have multiple similar interfaces. As far as I know the BBB has only eth0 and usb0 (until I install my Wi-fi adapter). Why does eth0 seem to have three different MACs here?
So by installing the Wi-if adapter I seem to have broken something that persists even in a different Linux distro booted from a different device. My BBB and Wi-Fi vendor claims they should work together:
I do have the release they say works:
BBB-eMMC-flasher-2013.09.04
and
Angstrom-Cloud9-IDE-GNOME-eglibc-ipk-v2012.12-beaglebone-2013.09.05.img.xz
Just before their install procedure I did the update, and installed VNC:
-----
root@beaglebone:/# opkg install x11vnc
Package x11vnc (0.9.13-r0.8) installed in root is up to date.
root@beaglebone:/# x11vnc -bg -o %HOME/.x11vnc.log.%VNCDISPLAY -auth /var/run/gdm/auth-for -gdm*/database -display :0 -forever
01/01/2000 01:20:29 Expanded logfile to '%HOME/.x11vnc.log.beaglebone:5900'
01/01/2000 01:20:29 Expanded logfile to '/home/root/.x11vnc.log.beaglebone:5900'
PORT=5900
-----
And set the timezone and timeserver:
-----
root@beaglebone:/# timedatectl set-timezone America/Los_Angel;e es
root@beaglebone:/# /usr/lib/connman/test/set-global-timeservers
pool.ntp.orgroot@beaglebone:/# shutdown -r now
-----
Those could hardly be a problem, since it rebooted successfully there. The Wi-Fi was successfully shown in ifconfig with Tx and Rx packets, but was not the main interface. After I unplugged the wired ethernet and USB connection, the Wi-Fi did not become the active interface. I tried their command:
If Wifi is not working you can try restarting the connman service: systemctl restart connman.service
After that the board has failed to boot.
There was one additional issue at that point. To unplug the USB, I had to provide 5V power, and the first power supply I grabbed sagged too far to run the board properly. I'm not seeing reports of that causing permanent problems, but could it? Whatever is the fancy tps65217c Power Management chip for if it can't cope with a momentary power sag?
I see two kinds of interpetation for an ARM external abort. The ARM Architecture Reference Manual says they are due to faulty external hardware. But most TI links say they happen because somebody hasn't turned on some subsystem clock. My error seems to happen right after recognizing the proper ifconfig MAC for eth0:
-----
[ 2.502401] Detected MACID = 90:59:af:4d:71:eb
[ 2.506978] Unhandled fault: external abort on non-linefetch (0x1008) at 0xe089e000
-----
But maybe that means it has probed for ra0? Still, if the Ralink adapter isn't found or its clock isn't enabled, shouldn't cpsw_probe be able to report not found, or at least fail gracefully?
Stuck here with only U-boot access, I'm not sure what else to try. Is this a hardware problem?
wrote:
> If I may, I suggest you follow the flashing procedure found at
> written to reflash the board with latest Angstrom image. Do not skip any
> steps. Make sure you hold the button down for at least 2 seconds after
> power is applied. That is all it takes. Do not use USB power. In fact do
> not have the USB installed at all. Just the DC power cable.
Did that. Same exact error, except at slightly different load address.
S2 does make a difference:
-----
1c1
< U-Boot SPL 2013.04-dirty (Jul 10 2013 - 14:02:53) <-- original eMMC version
---
> U-Boot SPL 2013.04-dirty (Jun 19 2013 - 09:57:14) <-- Flasher uSD version
13,14d13
< mmc_send_cmd : timeout: No status update
-----
Make BBB U-Boot logs comparable (in TextPad) by hiding differing timestamps:
Find
^\[[0-9. ]\{12\}\]
Replace
[ time ]
Difference from original eMMC to Flasher boot:
-----
Compare: (<)C:\Users\Loren\Documents\Projects\Computing\BeagleBone Black\BBB Linux - U-Boot\First Angstrom eMMC boot fail compare.txt (7047 bytes)
with: (>)C:\Users\Loren\Documents\Projects\Computing\BeagleBone Black\BBB Linux - U-Boot\First Flasher eMMC boot fail compare.txt (6974 bytes)
1,3c1
< First Boot from eMMC (?):
<
< U-Boot SPL 2013.04-dirty (Jul 10 2013 - 14:02:53)
---
> U-Boot SPL 2013.04-dirty (Jun 19 2013 - 09:57:14)
15d13
< mmc_send_cmd : timeout: No status update
20c17
< U-Boot 2013.04-dirty (Jul 10 2013 - 14:02:53)
---
> U-Boot 2013.04-dirty (Jun 19 2013 - 09:57:14)
56,58c53,55
< 4385024 bytes read in 766 ms (5.5 MiB/s)
< gpio: pin 56 (gpio 56) value is 1
< 24808 bytes read in 42 ms (576.2 KiB/s)
---
> 4270840 bytes read in 744 ms (5.5 MiB/s)
> gpio: pin 56 (gpio 56) value is 1
> 24125 bytes read in 40 ms (588.9 KiB/s)
63c60
< Data Size: 4384960 Bytes = 4.2 MiB
---
> Data Size: 4270776 Bytes = 4.1 MiB
71c68
< Using Device Tree in place at 80f80000, end 80f890e7
---
> Using Device Tree in place at 80f80000, end 80f88e3c
78,87c75,84
< [ time ] bone-capemgr bone_capemgr.8: slot #0: No cape found
< [ time ] bone-capemgr bone_capemgr.8: slot #1: No cape found
< [ time ] bone-capemgr bone_capemgr.8: slot #2: No cape found
< [ time ] bone-capemgr bone_capemgr.8: slot #3: No cape found
< [ time ] bone-capemgr bone_capemgr.8: slot #6: BB-BONELT-HDMIN conflict P8.45 (#5:BB-BONELT-HDMI)
< [ time ] bone-capemgr bone_capemgr.8: slot #6: Failed verification
< [ time ] omap_hsmmc mmc.4: of_parse_phandle_with_args of 'reset' failed
< [ time ] bone-capemgr bone_capemgr.8: loader: failed to load slot-6 BB-BONELT-HDMIN:00A0 (prio 2)
< [ time ] pinctrl-single 44e10800.pinmux: pin 44e10854 already requested by 44e10800.pinmux; cannot claim for gpio-leds.7
< [ time ] pinctrl-single 44e10800.pinmux: pin-21 (gpio-leds.7) status -22
---
> [ time ] bone-capemgr bone_capemgr.9: slot #0: No cape found
> [ time ] bone-capemgr bone_capemgr.9: slot #1: No cape found
> [ time ] bone-capemgr bone_capemgr.9: slot #2: No cape found
> [ time ] bone-capemgr bone_capemgr.9: slot #3: No cape found
> [ time ] bone-capemgr bone_capemgr.9: slot #6: BB-BONELT-HDMIN conflict P8.45 (#5:BB-BONELT-HDMI)
> [ time ] bone-capemgr bone_capemgr.9: slot #6: Failed verification
> [ time ] bone-capemgr bone_capemgr.9: loader: failed to load slot-6 BB-BONELT-HDMIN:00A0 (prio 2)
> [ time ] omap_hsmmc mmc.4: of_parse_phandle_with_args of 'reset' failed
> [ time ] pinctrl-single 44e10800.pinmux: pin 44e10854 already requested by 44e10800.pinmux; cannot claim for gpio-leds.8
> [ time ] pinctrl-single 44e10800.pinmux: pin-21 (gpio-leds.8) status -22
...
[plus all the lines with register addresses]
-----
So it is using the Flasher to boot in the "hold S2, connect power" tries. It sees a different U-Boot version, different sized boot files, and a different length device tree. But it still says:
Loaded environment from uEnv.txt
Importing environment from mmc ...
Does it use "mmc" there to mean the uSD, or is it really reading a possibly corrupt file from the actual eMMC before flashing over it?
Anyway, the same error happens at the same addresses using the Flasher:
-----
[ 0.760803] Unhandled fault: external abort on non-linefetch (0x1008) at 0xe09fe000
[ 0.768818] Internal error: : 1008 [#1] SMP THUMB2
[ 0.773825] Modules linked in:
[ 0.777030] CPU: 0 Not tainted (3.8.13 #1)
[ 0.781693] PC is at cpsw_probe+0x3fc/0x8a2
-----
No reply yet from the RMA people.
Meanwhile, here are some notes from my struggle. Maybe they will help someone...
The third boot log in this Google post seems a lot like mine, with the same cpsw_probe error at the same address and offset:
-----
booting with BBB-eMMC-flasher-2013.06.20.img.:
...
mmc0 is current device
micro SD card found
mmc0 is current device
gpio: pin 54 (gpio 54) value is 1
SD/MMC found on device 0
reading uEnv.txt
14 bytes read in 4 ms (2.9 KiB/s) <-- same size uEnv
Loaded environment from uEnv.txt
Importing environment from mmc ...
gpio: pin 55 (gpio 55) value is 1
4270840 bytes read in 842 ms (4.8 MiB/s) <-- different boot files
gpio: pin 56 (gpio 56) value is 1
24125 bytes read in 83 ms (283.2 KiB/s) <-- different boot files
Booting from mmc ...
...
Using Device Tree in place at 80f80000, end 80f88e3c <-- different length device tree
...
[ 0.760819] Unhandled fault: external abort on non-linefetch (0x1008) at 0xe09fe000
[ 0.768836] Internal error: : 1008 [#1] SMP THUMB2
[ 0.773842] Modules linked in:
[ 0.777048] CPU: 0 Not tainted (3.8.13 #1)
[ 0.781711] PC is at cpsw_probe+0x3fc/0x8a2 <-- exact same cpsw address and offset!
[ 0.786094] LR is at ioremap_page_range+0xc3/0x100
...
[ 0.983733] [<c023f752>] (cpsw_probe+0x3fc/0x8a2) from [<c01f2cb9>] (platform_drv_probe+0xd/0xe)
...
[ 1.088807] Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000000b
-----
The other two logs from that board, like my Ubuntu log, show the MACID probe just before the kernel panic:
-----
[ 1.935973] davinci_mdio 4a101000.mdio: no live phy, scanning all
[ 1.942727] mmcblk0boot1: mmc1:0001 MMC02G partition 2 1.00 MiB
[ 1.949451] davinci_mdio: probe of 4a101000.mdio failed with error -5
[ 1.957562] Detected MACID = c8:a0:30:b3:32:45[ 1.962278] mmcblk0: p1 p2
[ 1.965340] Unhandled fault: external abort on non-linefetch (0x1008) at 0xe09d8000
-----
and
-----
[ 1.839815] TCP: cubic registered
[ 1.843409] Initializing XFRM netlink socket
[ 1.848032] mmcblk0: mmc0:1234 SA04G 3.63 GiB
[ 1.853882] NET: Registered protocol family 17
[ 1.858813] mmcblk0: p1 p2
[ 1.861883] NET: Registered protocol family 15
[ 1.868043] Key type dns_resolver registered
[ 1.872871] VFP support v0.3: implementor 41 architecture 3 part 30 variant c rev 3
[ 1.881063] ThumbEE CPU extension supported.
[ 1.885622] Registering SWP/SWPB emulation handler
[ 1.891664] registered taskstats version 1
[ 1.947718] davinci_mdio 4a101000.mdio: davinci mdio revision 1.6
[ 1.954135] davinci_mdio 4a101000.mdio: no live phy, scanning all
[ 1.960995] davinci_mdio: probe of 4a101000.mdio failed with error -5
[ 1.968060] Detected MACID = c8:a0:30:b3:32:45
[ 1.972694] Unhandled fault: external abort on non-linefetch (0x1008) at 0xe09d8000
-----
I found this:
-----
cpsw_probe
Defined as a function in:
drivers/net/ethernet/ti/cpsw.c, line 1906
Referenced (in 1 files total) in:
drivers/net/ethernet/ti/cpsw.c:
line 1907
line 2282
-----
Here's that code:
-----
1907 static int cpsw_probe(struct platform_device *pdev)
-----
(But it isn't much help without a debugger view.)
-----
Virtual Memory System Architecture
B4-14 Copyright © 1996-1998, 2000, 2004, 2005 ARM Limited. All rights reserved. ARM DDI 0100I
B4.5 Aborts
Mechanisms that can cause the ARM processor to take an exception because of a memory access are:
MMU fault The MMU detects the restriction and signals the processor.
Debug abort Monitor debug-mode is enabled and a breakpoint or a watchpoint has been detected.
External abort The external memory system signals an illegal or faulting memory access.
Collectively, these are called aborts. Accesses that cause aborts are said to be aborted, and use Fault Address
and Fault Status registers to record associated context information. The FAR and FSR registers are
described in Fault Address and Fault Status registers on page B4-19
B4.5.3 External aborts
External memory errors are defined as those that occur in the memory system other than those that are
detected by an MMU. External memory errors are expected to be rare and are likely to be fatal to the running
process. An example of an event that could cause an external memory error is an uncorrectable parity or
ECC failure on a Level 2 Memory structure.
Status (bits[1:0])
00 = Idle
01 = Queued
10 = Running
11 = Complete/Error
-----
-----
kernel panic which causes this three errors to be printed to screen
Unhandled fault: external abort on non-linefetch (0x008)
Unhandled fault: imprecise external abort (0xc06)
Kernel panic - not syncing: Fatal exception in interrupt
The values in parenthesis are the ifsr (instruction fault status) register. There are many causes for aborts and these give a specific cause. There are some tables in the kernel that handle particular fault causes and other have a handler which does a printk and aborts a task or can panic() the kernel.
Note: Each fault status register has an abort.S file which is different for the particular ARM CPU. For example see abort-ev7.S v7_early_abort. This is put in a processor table which is matched at boot time.
Unhandled fault - trying to read memory that is not mapped (via MMU).
Kernel panic - an unhandled fault occurred in code deemed un-recoverable.
You may have device mapping setup properly. A common case is where the clocks for a peripheral are not enabled and the device does not respond to a bus request; especially external abort type messages maybe due to a missing clk_prepare_enable().
-----
"external abort on non-linefetch" is the explanation automatically read from the error file table...
-----
mmap works fine if I don't access any of the registers. But when I try to print out the register values I got
Unhandled fault: external abort on non-linefetch (0x1018) at 0x4002100c Bus error
You need to make sure that the appropriate McSPI functional (CM_FCLKEN1_CORE) and interface (CM_ICLKEN1_CORE) clocks are enabled before reading the McSPI registers.
-----
-----
A Panda board does not have any onboard flash, where many other development or evaluation boards keep their bootloader. Rather, code onboard the board (presumably in ROM) reads the second-stage bootloaders from the MMC (SD card).
The first-stage bootloader runs directly on the board from power-up. I don't know the name of this bootloader(From TI official wiki, it called Boot Rom). This bootloader initializes a minimal amount of CPU and board hardware, then accesses the first partition of the SD card (which must be in FAT format), and loads a file called "MLO", and executes it. "MLO" is the second-stage bootloader.
The second-stage bootloader can apparently be one of either the X-loader or SPL. This bootloader apparently also just reads the first partition of the SD card, and loads a file called "u-boot.bin", and executes it. "u-boot.bin" is the third-stage bootloader.
The third-stage bootloader is U-boot, which is a popular bootloader for many different embedded boards and products. This bootloader has lots of different features, including an interactive shell, variables, ability to access the SD card and show its contents, etc. What happens next depends on the version of U-boot you have for the Panda board, and how it is configured. In a very simple configuration, U-Boot will look for the file "uImage" in the root of the first partition of the SD card (which, again, must be formatted as a FAT partition), and execute that. This is the Linux kernel. U-Boot passes the kernel a command line argument. Depending on how the kernel is configured it may accept the command line from U-Boot, or use one that was compiled into it when it was built.
-----
-----
by default the BBB boots from eMMC, see page 6 of the schematics. To force a boot from SD you need to remove power from the board completely, hold down S2 and then re-apply power. Keep holding the button until the four leds start turning on. You have to do this at power on, and once you've done it the board will continue to boot from SD on a reboot or reset, only removing power will change the behaviour.
You could also move R68 to R93 if you want to make the board boot from SD by default.
Also note the boot sequence in the table on page 6 of the schematics, by default if MLO can't be found on the eMMC, it'll look for it on the SD card. So deleting MLO normally causes the board to boot from SD if the appropriate files are present.
It's worth a short bit of background info here too. The boot device will always be seen by the OS as /dev/mmcblk0, there's some un-explained requirement for this to be the case. Some code in u-Boot checks a gpio for the prescence of an uSD card and swaps the ordering if it's found. So be careful... you can't make the assumption that eMMC is always going to be /dev/mmcblk0 and uSD is mmcblk1.
The way to tell which is which is that when you run fdisk -l you'll see two additional devices /dev/mmcblk0boot1 & /dev/mmcblk0boot1. Exactly what these are isn't really important, but they should only appear for the eMMC, not a normal uSD card, so you can use that to work out what device is the eMMC. Knowing which is which means you don't accidentally delete the files from the wrong one.
-----
I'm still confused about the S2 boot switch...
uSD removed:
--
mmc0(part 0) is current device
Card did not respond to voltage select!
No micro SD card found, setting mmcdev to 1
mmc1(part 0) is current device
SD/MMC found on device 1
reading uEnv.txt
26 bytes read in 3 ms (7.8 KiB/s) <-- Read from eMMC
--
uSD replaced, simple reset:
or release S2 boot button...
after "U-Boot SPL" ends, before "U-Boot":
at first user LED:
or hold button through entire boot fail:
--
mmc0 is current device
micro SD card found
mmc0 is current device
gpio: pin 54 (gpio 54) value is 1
SD/MMC found on device 0
reading uEnv.txt
14 bytes read in 2 ms (6.8 KiB/s) <-- read from uSD
--
Looks like it boots from the uSD (or at least uses its uEnv) whenever it is present!
At least when Ubuntu is on the uSD...
But not when the Angstrom Flasher is on the uSD! It only tries to boot the Flasher if you connect power while holding S2.
Confirming where it is getting these file sizes:
U-Boot# fatls mmc 0:1 <-- looks like the uSD
72 id.txt
99976 mlo
.trashes/
14 uenv.txt <-- uSD
From the eMMC via SSH terminal (before uSD or Wi-Fi):
./media/BEAGLEBONE:
total 536
drwx------ 5 root root 1024 Jan 1 1970 .
drwxr-xr-x 11 root root 4096 Jan 1 00:00 ..
-rw-r--r-- 1 root root 99976 Mar 18 2013 MLO
-rw-r--r-- 1 root root 379428 Mar 18 2013 u-boot.img
-rw-r--r-- 1 root root 26 Mar 18 2013 uEnv.txt <-- the one that gets read?
...
./boot:
total 4592
-rwxr-xr-x 1 root root 33 Mar 4 2013 uEnv.txt <-- supposedly the "real" one, but...
lrwxrwxrwx 1 root root 13 Mar 18 2013 uImage -> uImage-3.8.13
-rw-r--r-- 1 root root 18940 Sep 4 2013 omap4-panda.dtb
-rw-r--r-- 1 root root 24379 Sep 4 2013 am335x-bone.dtb
U-Boot# printenv
with Ubuntu on the uSD:
Compare: (<)C:\Users\Loren\Documents\Projects\Computing\BeagleBone Black\printenv Ubuntu uSD (booted).txt (4164 bytes)
with: (>)C:\Users\Loren\Documents\Projects\Computing\BeagleBone Black\printenv Angstrom eMMC (Ubuntu uSD present not booted).txt (3868 bytes)
-----
23d23
< filesize=154
29,30c28
< loadfdt=load mmc ${mmcdev}:${mmcpart} ${fdtaddr} ${bootdir}/dtbs/${fdtfile}
< loadimage=load mmc ${mmcdev}:${mmcpart} ${loadaddr} ${bootdir}/${bootfile}
---
> loadfdt=load mmc ${bootpart} ${fdtaddr} ${bootdir}/${fdtfile}
36d34
< mmcpart=2
50d47
< optargs=fixrtc
69d65
< uenvcmd=i2c mw 0x24 1 0x3e; kd=0; if test $mmcdev -eq 1; then mmc dev 0; if mmc rescan; then kd=1; fi; mmc dev 1; fi; setenv mmcroot /dev/mmcblk${kd}p${mmcpart} ro
74c69
< Environment size: 4178/131068 bytes
---
> Environment size: 3877/131068 bytes
-----
LED pattern of boot from eMMC at 0:38:
LED pattern of boot from uSD at 1:15:
User LEDs:
-----
USER0 is the heartbeat indicator from the Linux kernel.
USER1 turns on when the SD card is being accessed
USER2 is an activity indicator. It turns on when the kernel is not in the idle loop.
USER3 turns on when the onboard eMMC is being accessed.
-----
But do those apply during U-Boot?
Loren