As many before us, we reached the point when we ran out of space on the internal eMMC. So far we were using the ‘nvmassflashgen.sh’ to be able to flash multiple units efficiently (this was very fast, simple and bulletproof).
Now we are using a USB drive as a rootfs and the process looks like:
Create the rootfs on the USB drive
Partition and format USB drive
Mount the bootloader/system.img.raw and copy the contents to the USB drive
Use the flash.sh to flash the eMMC
here we are uploading the kernel etc, and most importantly the the updated /boot/extlinux/extlinux.conf to the eMMC which would tell the system to use the sda1
The downside of this is that the installation process is more complicated and takes ~2x more time.
Ideally it would be the best to only create the USB drive plug it in the device and let it boot right away.
My question would be:
Is there any hardware switch which controls the boot order and let us boot completely from the USB drive? (we are designing our own carrier board)
If that is not possible what is the minimal set of files which needed to be flashed to the device eMMC? (at least to speed up the second step)
Im not familiar with the QSPI configuration yet, can you provide a link where I can find documentation about it? I was searching the “NVIDIA Jetson Linux Developer Guide” but could not find the corresponding part how I could create the board configuration.
I was using this thread as a blueprint for my case:
So I wanted to get rid of this second step or modify it to only flash the required parts.
Are you aware of any better method to erase / clean everything on the prod module eMMC then executing a standard flash on the module? I would like to reset the board that I use for testing to factory settings to make sure that nothing is stuck somewhere (eMMC, eprom etc…) which could affect my tests.
Sorry I missed it.
For Jetson Nano series, QSPI memory only resides in the DevKit module (the one with SD card), but not the commercial module (the one with eMMC).
So you have to make sure the whole eMMC is flashed before you can boot from other storage devices, and the second step is therefore required.
There is very sparse documentation about the nvmassflashgen.sh (or I was not lucky with the searches) and based on the source I was also not able to clear it, so maybe you know. So if I modify the above command as:
So adding the “BOOTDEV=sda” env var and use the “sda1” instead of the “mmcblk0p1” would it generate the mass flash installer as it would boot from the USB device? Or I do need to go with the one-by-one flash.sh? (of course I would need prepare the USB drive beforehand by copying the contents bootloader/system.img.raw to the USB drive)
well after I saved my previous comment I realised that I could use the empirical way as well :D to test it and see :D so I guess that would be my next step to create the mass flash installer like that and check if it produced the expected output.
But if you can confirm it would be great, I mean to know if that has any downside or something that I’m not accounting for.