I am trying to edit a device tree to be able to use an eMMC device that is on a custom carrier board. I’ve learned about the device tree data structure and how it’s interpreted. I know how to use dtc tool to convert the existing .dtb file into a .dts file and convert this back into a .dtb file.
The issue I am having is that I don’t know exactly what to add to the .dts file in order for the linux device to recognize this module on bootup.
Here are some of my main questions regarding Device Trees:
I have been using commands ‘lsblk’ and ‘df’ to check the storage available. Will the eMMC device show up with these commands if the Device Tree is edited correctly?
If I make the successful edit to the device tree and I replace the existing .dtb file with the updated .dtb and reboot the machine, will this device be present when I run ‘lsblk’ command? Or are there more steps to make this device discoverable? So essentially I’m asking if during bootup, does the kernel just grab whatever .dtb file is at that location and use it as the blueprint during each bootup? Is it that simple or is the .dtb file more ‘embedded’ into the kernel than that?
This is my first attempt at editing a device tree so there is a lot of holes in my knowledge that I am trying to figure out.
Hi, eMMC is not supported as you can see in the Xavier Design Guide: Jetson AGX Xavier has two SD/MMC interfaces. One is used on Jetson AGX Xavier for eMMC for boot and storage and one is brought to the connector pins for SD Card or SDIO use.
Our eMMC supports 4-bit mode. So we have the stock eMMC that is located on the SoM and an external eMMC located on a carrier board. Is the issue with not having driver support for mmc host control or is there something in the hardware limiting that functionality?
Essentially is there a way to treat the eMMC as an SD and have the SoM recognize it?
I can’t answer but I want to add that there is a extreme difference in answering this depending on whether you are truly talking about during boot recognition, versus once booted to Linux. The bootloader and boot chain are essentially miniature operating systems which use the device tree and drivers differently. It is much easier to add support for Linux if the device only runs once Linux has started. If you expect to use this device while in the boot chain it changes everything. This is why there is a very significant difference between the software for an SD-card-only model and a model with eMMC.
It’s not being used for the boot chain. The Nvidia Jetson Xavier Nx SoM eMMC version contains all the boot and is unchanged from what Nvidia recommends.
We created a custom carrier board for it, which has a separate eMMC module connected to the SDMMC interface of the SoM.
Only SD card or SDIO device is supported. You can try that by yourself, but it is not guaranteed and validated. We don’t recommend/support customer to do that.