Skip to content
Paul Philippov edited this page Mar 20, 2024 · 20 revisions

SD card not recognized at boot

There are two factors that can affect SD card detection during the boot sequence.

One is that the GPIO pins for powering the SD card slot and detecting the presence of a card are not set. You can fix this by setting these pins in the environment. You need to set at least the gpio_mmc_power and gpio_mmc_cd pins.

Another factor is that not every card is detected correctly. You can try different cards (different class, size, etc) to find the one that works.

autoupdate-full.bin and/or uEnv.txt not picked up on boot

This is most likely an extension of the above problem. If your camera cannot detect the SD card during boot, then none of these files can be accessed and processed by U-Boot.

Interrupt the boot process with Ctrl-C and get into the boot shell. Once in the shell, set the GPIO pin to power up MMC bus, and reinsert the card. Make sure it is recognized correctly and you can access the files

gpio clear 48;
mmc rescan;
mmcinfo;
fatls mmc 0;

then install the firmware as follows

setenv baseaddr 0x82000000;
setenv flashsize 0x1000000;
mw.b ${baseaddr} 0xff ${flashsize};
fatload mmc 0:1 ${baseaddr} autoupdate-full.bin;
sf probe 0; sf erase 0x0 ${flashsize};
sf write ${baseaddr} 0x0 ${filesize};
reset

You will still need to set the correct environment for your hardware. Interrupt the boto process once again, set the GPIO pin for MMC, check the card is recognized

gpio clear 48;
mmc rescan;
mmcinfo;
fatls mmc 0;

and import the environment settings from the file on the card

fatload mmc 0 ${baseaddr} uEnv.txt;
env import -t ${baseaddr} ${filesize};
saveenv;
reset

Alternatively, import the enviroment settings from within Lunux:

sed 's/=/ /' /mnt/mmcblk0p1/uEnv.txt > env.txt;
fw_setenv -s env.txt
Clone this wiki locally