There is a lot to sort, so this isn’t necessarily in any particular order…
The extlinux.conf
looks good. Hopefully you have tested the ability to interrupt boot with serial console and pick either the default/first/modified entry, and the second entry.
Because you’ve only added a module you should not actually need a second entry. Your new entry will also require 100% new module content, which is just adding work since the base Image
is the same (other than your new Image
no longer being able to find modules…uname -r
changed).
Is there a reason why in your new Image
(which is not needed) that you did not set “CONFIG_LOCALVERSION
” to “-tegra
”? Admittedly this makes the new and old Image
exact matches, so a new Image
is not needed, but if you were to want two separate Image
files, then you might want to share the module location anyway (you are only adding one module to the original configuration).
I have noticed that a large number of IMX
camera drivers are built in to the Image
by default:
# zcat /proc/config.gz | egrep -i '(imx)'
# CONFIG_TOUCHSCREEN_IMX6UL_TSC is not set
CONFIG_VIDEO_IMX185=y
CONFIG_VIDEO_IMX219=y
CONFIG_VIDEO_IMX268=y
CONFIG_VIDEO_IMX274=y
CONFIG_VIDEO_IMX318=y
CONFIG_VIDEO_IMX390=y
CONFIG_VIDEO_IMX204=y
# CONFIG_SND_SOC_IMX_AUDMUX is not set
Note that if your driver is already in place (as integrated “=y
”), then you would never see a module, nor would you ever load the module (the driver would always be there since it is integrated). The above is from a bit older Jetson, so there might be other added drivers available in your release. I have to emphasize that I do not know the difference between an IMX478
or any other IMX
driver (I don’t work on cameras). However, what do you mean that no driver loaded? I ask because finding a module loaded has nothing to do with whether the driver loads if the driver is not in the format of a module.
Another point to emphasize: Which interface are you using for the camera? An interface which is “plug-n-play” (one which can self-report its hardware capabilities) will automatically load when detected, but an interface which simply depends on passing the bus address to the driver during driver load requires a device tree entry (which is that information to be passed to the driver at boot).
I will suggest that you are closer, but on both the original Image
and new Image
, if you alternate and boot to each, run this command and compare the two:
zcat /proc/config.gz | egrep 'IMX'
When the Jetson is running the “config.gz
” is a reflection of the running kernel’s configuration during compile. If the only difference is from modules, then you don’t need to install a new Image
. You could simply copy the module to the module location for the original Image
and it would be done (not all features can be built as a module, but likely your camera has no issue with being a module). Double check that your module file (and all original modules) exist at:
/lib/modules/$(uname -r)/kernel
Note that if you were to compile the driver as “integrated” (rather than as a module), then this would be a valid reason to install a new Image
file, but I wish to emphasize that if CONFIG_LOCALVERSION
had remained as “-tegra
” on both old and new, then you would not have had to install any modules other than the single module you just built. I will advise doing this in the case of only adding new modules (versus altering integrated content with a significant change).