Currently making a custom carrier board design for the Jetson NX Xavier to utilize an external emmc module for a school project in a capstone. The extra emmc was added to create more storage for the custom board designed and to experiment on memory designs for school.
I’m aware that the configurations that Nvidia provides by default is either an sd card, emmc, or nvme SSD. In our case we have the emmc configuration.
I have a breakout to the external emmc that we wish to add with pins allocated as follows: DATA:
219: SDMMC_DAT0
221: SDMMC_DAT1
223: SDMMC_DAT2
225: SDMMC_DAT3
227: SDMMC_CMD
229: SDMMC_CLK POWER
206: GPIO07_SDMMC_ON (Runs an external power circuit with delivery of 3.3v)
208: GPIO08_SDMMC_CD (Confirmation pin when system is activated)
As for the device tree I can see that sdhci@3460000 is being utilized since this our default boot medium. How would I look at configuring sdhci@3400000 to utilize the new emmc module that was added along with the pins that were mentioned before?
I know you have to edit the pinmux file and the .dtsi file in tandem. Below the .dtsi file are shown below.
Device tree is just like a program. It is a binary file compiled from many files/source codes.
But it could be easily converted back from binary to text file and you can read the text file to see the whole content. That was what I am talking about in previous comment. Try to google search “dtc device tree compiler” and it will guide you how to use it.
Your question is like there are code files A,B,C,D,E,F,G…etc. And you want to know which files are needed to get modified. Honestly, I don’t memorize such things either because you should never “memorize a code”. You should be able to know which code to start to trace and you should trace down it. All the device tree for jetson are public sources. So try to figure out which dtb is getting flashed to your board first. Each platform will only have one kernel dtb running on it. Use the file name to trace the source code.
Ok I found the file and edited parts to support the emmc module on sdmmc3. I ran the flash and nothing is showing up. I have linked the device tree file with sdmmc3 and sdmmc4 code that I took from.
One thing I also wanted to mention is that our system has GPIO 07 connected to a power circuit that when enabled it will deliver 3.3v to the external emmc. GPIO 08 we have wired for detecting when the system turns on(SDMMC_CD).
Your log is not completed. Each line got truncated. I don’t know how you dumped it. Maybe adjust your terminal size and dump again.
From the incomplete log, I can tell your sdhci@3440000 is not enabled at all.
I don’t know why a CD pin is wired there. We don’t support a hotplug case for emmc. Actually, you should just copy the content of sdhci@3460000 to your 3440000. That is the only case we support. Again, check it from the decompiled dtb to make sure the full content. I don’t know where you dig in those info. We actually don’t support much external emmc case on this forum. Your case looks like a sdcard sample.
My previous comments point (1) and (2) are still valid even for your current log.
You should read your log and compare to any other dmesg posted on this forum… and you will notice what I mean.
For example, this is how your kernel command line and kernel version looks like
2 [ 0.000000] Linux version 4.9.140-l4t-r32.4+ga28ca7b3779d (oe-user@oe-host) (gcc version 8.3.0 (GCC) 1
38 [ 0.000000] Kernel command line: console=ttyS1,115200 console=ttys1 fbcon=map:0 video=tegrafb no_cons
These lines are all incomplete and got cut in the middle…
Your sdhci@3440000 looks still not get enabled. How did you update your device tree to the board?
Please check your /proc/device-tree on the board and see if the content meets your expectation.
LOG_V3.txt (70.7 KB)
In terms of uploading the .dtb to the board I replace it in deployment everytime when I flash the system. Ie remove old file then replace it with the new one. As for the device tree on the board I have checked it and it never comes up as “Okay” even when I set it as Okay. Is this normal for behavior? I hope that the log that I gave has everything.
Thank you for your patience and help :)
Im currently using the yocto project to build our system. So in our deployment folder I replace the file and then deploy the image with the new file. tegra194-p3668-all-p3509-all-0000.dtb is the file specified.
I am also using the ridge run developer page linked below to compile my dtsi files to dtb.
Ok seems like our deployment of our dtb is an issue. Once resolved Ill send anther message if we still encounter issues. If not and the changes are fixed Ill mark this ticket as solved.
Again, thanks for the help!
Ok I have the file being taken now. It currently shows In the device tree! I have redone the changes to the system my porting over the @3460000 → @3440000 and this is the dmesg log below: LOG_V4.txt (581.5 KB)