Forums › Devices › OSD335x C-SiP › Boot Issues from eMMC
Tagged: emmc boot
I have an OSD335x-C-SiP that I am bringing up on a custom board. We ran into intial boot problems due to the EEPROM being blank. We used the patch and other methods to write in the ID for the OSD00, and we are able to completely boot into Linux from the SD card. However, when we flash the SD card contents onto the eMMC, we are unable to boot from the eMMC. We can boot from SD, and look into the eMMC and see that the data has been written correctly, but we cannot boot from this state with the SD card removed. Do you have any idea what might be causing this hang up in the system?
Based on our investigation, it appears that the SPL is not being read out of RAM correctly, we do not get the “U-BOOT SPL 2018.01…” message that we expect. Is there some reason the eMMC would be having problems loading the SPL into RAM to execute out?
ABierman1986,
The issue probably is boot mode setting. If the MMC interface on which the eMMC is present is not in the “Boot sequence” for a particular boot setting, the ROM code will not poll the eMMC for boot image.
Please take a look at Table 26-7 of AM335x Technical Reference Manual(https://www.ti.com/lit/ug/spruh73q/spruh73q.pdf) for boot mode settings and corresponding Boot sequences. Make sure the the MMC interface the eMMC is on is in the boot sequence for the SYSBOOT pin configuration you have or change the SYSBOOT configuration to include the MMC interface.
If the MMC interface is in the Boot Sequence, check whether the ROM code gets stuck on an interface with higher priority. You can probe the MMC_CLK line to verify whether ROM code is probing the eMMC for a valid image.
Best,
Neeraj
Hi Neeraj,
We’ve checked the boot configuration a number of times, it matches what we have been using with the Beaglebone black, I’ve attached an image of the boot section in case you see something we’ve missed. On the “C” version of this IC, is the eMMC CLK line routed out? I have probed the MMC clock line to the SD card, and we can observe it operating as expected.
ABierman1986,
A couple of things:
1. See if you have additional components on the LCD interface. You can probe the SYSBOOT pins(at boot-up) to verify that the boot mode is being set correctly. If there is another device on the LCD interface that is pulling the SYSBOOT pins differently(Note that these pull-ups / pull-downs are weak), the ROM code might be probing the wrong boot interfaces.
2. Verify that you have a bootable image in the eMMC. You can boot via SD card and mount the partitions of the eMMC to check whether it has been flashed correctly. Also verify that you are flashing the patched SPL and U-Boot that skip EEPROM ID verification.
I missed the fact that you are using a C-SiP. As the eMMC is internal, you would not be able to probe the CLK line.
Best,
Neeraj
Hi Neeraj,
Great thank you we will try this, we don’t have anything other than the LCD on those lines, and we don’t try to talk to the screen until well into the boot process so I am hopefuly that’s not what we are seeing but I can try and probe them.
Is there a message in particular that we should be looking for after mounting the eMMC contents to ensure the SPL and U-boot are flashed correctly?
Thanks,
Adam
Adam,
The Flashing script should provide a good error message if something is going wrong. Please verify the correct mmcblk’X'(corresponding to eMMC) is being flashed.
I would also boot the board without connecting the LCD to remove any unknown pull-up/pull-down messing with the boot configuration.
As long as you are flashing the patched SPL/U-Boot(with EEPROM ID patches), you should see boot-up messages on the console. That is one more thing to check.
Best,
Neeraj
Hi Neeraj,
Thank you for this feedback. My boss, Joe, may be chiming in on this thread with additional details as he has been working on the programming side of this project, I have been doing the hardware mostly. He attempted your suggestions and got the attached log file and his report on what he found:
“Attached is the log file of booting from an SDcard and flashing the eMMC. I did not see any obvious errors.. Once the flashing was complete, I booted from the SDcard, mounted the eMMC (/dev/mmcblk1p1) and saw that it did flash the MMC correctly. I made sure the patched SPL/U-boot was in the /opt/backup/uboot directory before flashing. I removed the LCD and the SDcard and tried booting from the eMMC but only got “CCCC” on the UART. I booted from the SDcard again and redid the dd commands to copy the SPL/U-boot images to the eMMC (/dev/mmcblk1). Removed the SDcard and still only get “CCCC” on the UART. I assume I am getting the SPL/U-boot images patched correctly or else I would not be able to boot from the SDcard. Is there a way to confirm what images are on the eMMC? Other ideas?”
Neeraj,
We have found the problem. During the development, we added setting a 4096 partition size to the sfdisk command in /opt/scripts/tools/eMMC/functions.sh script. When I returned the functions.sh script to the original code, we were able to boot off of the eMMC after flashing from SDcard to the eMMC.
Thanks for all the help on this problem.
Joe
Joe,
Appreciate the update. Please let us know if you have more questions.
Best,
Neeraj
We have purchased an OSD32MP1-RED board. Booting from emmc did not work.
So I rummaged in the forum and looked at and tried answer # 11732 from Neeraj, unsuccessful. The USR LED is switched on after flashing, the partitions are created on the emmc, but booting is not possible. Only the power LED lights up.
No heartbeat and nothing else happens. What else could that be?
Regards,
Manu
Manu,
Please look at an update to the post here: https://octavosystems.com/forums/topic/osd32mp1-red-no-pre-loaded-debian-linux/#post-11732. The root cause of this issue is that the Flasher image was not able to program the FSBL(TF-A) partition of the image with the proper TF-A binary. You should be able to get the eMMC boot to work with the workaround described in the updated forum post.
Best,
Neeraj
Octavo Systems LLC all rights reserved
OCTAVO is registered in the U.S. Patent and Trademark Office. OSD, C-SiP, and the Octavo Logo are trademarks of Octavo Systems LLC.
"*" indicates required fields
"*" indicates required fields
"*" indicates required fields
"*" indicates required fields