Help debugging eMMC being unavailable?

I’ve got my VisionFive2 booting nicely from SD card, and want to use eMMC as additional storage (more precisely, I was planning to write the eMMC image to the eMMC while booted off the SD card, but I’ve hit a snag well before that point).

I have installed an eMMc module on the board, but it doesn’t appear to be detected. From Linux, there is simply no /dev/mmcblk0 device at all. From u-boot (from the SD card), it appears that the card is not registering. Here’s a snippet of the u-boot output via uart:

U-Boot SPL 2021.10-dirty (Jun 11 2023 - 07:44:44 +0000)
DDR version: dc2e84f0.
Trying to boot from MMC2

OpenSBI VF2_515_v3.1.5_IMG1.19
   ____                    _____ ____ _____
  / __ \                  / ____|  _ \_   _|
 | |  | |_ __   ___ _ __ | (___ | |_) || |
 | |  | | '_ \ / _ \ '_ \ \___ \|  _ < | |
 | |__| | |_) |  __/ | | |____) | |_) || |_
  \____/| .__/ \___|_| |_|_____/|___/_____|
        | |
        |_|

Platform Name             : StarFive VisionFive V2
Platform Features         : medeleg
Platform HART Count       : 5
Platform IPI Device       : aclint-mswi
Platform Timer Device     : aclint-mtimer @ 4000000Hz
Platform Console Device   : uart8250
Platform HSM Device       : ---
Platform PMU Device       : ---
Platform Reboot Device    : pm-reset
Platform Shutdown Device  : pm-reset
Platform Suspend Device   : ---
Firmware Base             : 0x40000000
Firmware Size             : 392 KB
Firmware RW Offset        : 0x40000
Runtime SBI Version       : 1.0

Domain0 Name              : root
Domain0 Boot HART         : 1
Domain0 HARTs             : 0*,1*,2*,3*,4*
Domain0 Region00          : 0x0000000002000000-0x000000000200ffff M: (I,R,W) S/U: ()
Domain0 Region01          : 0x0000000040000000-0x000000004003ffff M: (R,X) S/U: ()
Domain0 Region02          : 0x0000000040040000-0x000000004007ffff M: (R,W) S/U: ()
Domain0 Region03          : 0x0000000000000000-0xffffffffffffffff M: (R,W,X) S/U: (R,W,X)
Domain0 Next Address      : 0x0000000040200000
Domain0 Next Arg1         : 0x0000000042200000
Domain0 Next Mode         : S-mode
Domain0 SysReset          : yes
Domain0 SysSuspend        : yes

Boot HART ID              : 1
Boot HART Domain          : root
Boot HART Priv Version    : v1.11
Boot HART Base ISA        : rv64imafdcbx
Boot HART ISA Extensions  : none
Boot HART PMP Count       : 8
Boot HART PMP Granularity : 4096
Boot HART PMP Address Bits: 34
Boot HART MHPM Count      : 2
Boot HART MIDELEG         : 0x0000000000000222
Boot HART MEDELEG         : 0x000000000000b109


U-Boot 2021.10-dirty (Jun 11 2023 - 07:44:44 +0000), Build: jenkins-VisionFive2-SDK-Components-135

CPU:   rv64imacu_zba_zbb
Model: StarFive VisionFive V2
DRAM:  8 GiB
MMC:   sdio0@16010000: 0, sdio1@16020000: 1
Loading Environment from SPIFlash... SF: Detected gd25lq128 with page size 256 Bytes, erase size 4 KiB, total 16 MiB
*** Warning - bad CRC, using default environment

StarFive EEPROM format v2

--------EEPROM INFO--------
Vendor : StarFive Technology Co., Ltd.
Product full SN: VF7110B1-2253-D008E000-00003992
data version: 0x2
PCB revision: 0xb2
BOM revision: A
Ethernet MAC0 address: 6c:cf:39:00:42:8c
Ethernet MAC1 address: 6c:cf:39:00:42:8d
--------EEPROM INFO--------

In:    serial
Out:   serial
Err:   serial
Model: StarFive VisionFive V2
Error: 1 bit/pixel mode, but BMP has 24 bit/pixel
Net:   eth0: ethernet@16030000, eth1: ethernet@16040000
bootmode sd device 1/0
Hit any key to stop autoboot:  0
...
StarFive # mmc info
Device: sdio1@16020000
Manufacturer ID: 3
OEM: 5344
Name: SL08G
Bus Speed: 50000000
Mode: SD High Speed (50MHz)
Rd Block Len: 512
SD version 3.0
High Capacity: Yes
Capacity: 7.4 GiB
Bus Width: 4-bit
Erase Group Size: 512 Bytes
StarFive # mmc list
sdio0@16010000: 0
sdio1@16020000: 1 (SD)
StarFive # mmc dev 0
Card did not respond to voltage select! : -110
StarFive #

This is a pretty new board, V1.3B. While it’s certainly possible that my eMMC module is simply non-functional, as this is currently the only one I have, I’d appreciate any tips on other things to try beside buying another. If the physical connection is sometimes finicky, I’d welcome advice on that as well (this is the first time I’ve done anything with an eMMC module).

Maybe you need to set switches?

The only switches I’m aware of are the RGPIO toggles for boot device, and I’m not (yet) trying to boot off the eMMC, I just want to use it as storage right now.

Please check your module is installed correctly. If you’re sure it’s correctly installed, this might be a hardware failure.

2 Likes

Remove and reinsert the eMMC card a few times. If it’s not showing up in dmesg or as mmcblk0 as you’re expecting, it may just not be connected fully. I had to attach mine 4 times I think to get it to show. Power down the board between removals of course.

1 Like

This seems to be it. I think the 4th attempt was also the magic number for me. Finally the last time one of the connectors clicked in a bit further (visibly closer to the board), and pushing a bit harder on the other end got that on too; it was not falling off, but I guess in trying not to snap anything I ended up just not pressing hard enough. OpenSBI at least can now identify the card and retrieve stats.

2 Likes

Those connectors - on all boards - are a little tricky. My technique is to push in toward the socket harder than you think is necessary while rotating the card from about 20-60 degrees. There is often a little shift or a click while it locks in. Then, while holding in that pressure, rotate it down and let it click in.

Time for my own question: My eMMC card is too short for this board. Does anyone know of a little extender that perhaps grabs the card on the side edges and then extends the length, probably tapers into the ratchets on the back? I can’t seem to find the words Google uses to find such a device.