I have been trying to put my customized logo at boot time. Here are some notes regarding my device:
1- it’s Jetson nano with customized carrier board.
2- It is connected to a 7 inch touch screen display with the resolution 1024 x 600
Based on the spec of my display, I managed to generate EDID and the kernel logo and the OS are displayed smoothly. The only problem is the logo at the boot time.
I generated bmp.blob with the repo https://github.com/VladimirSazonov/jw-boot-logo-for-Jetson-Nano
But every time during the booting state, the display shows the logo partially.
I dig into the code in the repo and realized that it generates logos for 1080, 720 and 480 resolutions. As my display supports 1024 x 600, do I have to change the source code to generate proper bmp.blob ? If that’s the case, then I have to have a proper headers to add to the blob. right ?
How to resolve this issue ?
Note that, in the BSP directory Linux_for_Tegra/kernel, there is a shell script called nv-enable-hard-coded-kernel-boot-display-mode.sh where I can specify the dispaly settings and compile the device tree tegra210-p3448-0002-p3449-0000-b00.dtb. I believe that, the device tree is set up correctly and the only issue is the bmp.blob and the metadata inside of it.
bmp-splash directory does not work for me. I read the manual carefully and tried to generate the blob with my preferred resolution but it does not work well. Instead, when I generate the blob with jw-boot-logo-for-Jetson-Nano it seems that the blob file is correct. My reasoning is below picture
This is my preferred boot logo when I created the blob using jw-boot-logo-for-Jetson-Nano.
I have two assumptions for this display misalignment:
1- I have to adjust bootloader device tree to support custom display:
I have to pass EDID information to the device tree bootloader. If not, I at least have to set the clock frequency,
hsync, vsync, HBP, VBP, HFP, VFP etc. in the bootloader device tree.
2- the blob file is not 100% correct.
In the ‘jw-boot-logo-for-Jetson-Nano’ source code, there are 4 headers which are added to the blob file in a
fixed order. Below is the blob file layout:
----------------------------
HEADER 1
HEADER 2
image 640 x 480
HEADER 3
image 1280 x 720
HEADER 4
image 1920 x 1080
----------------------------
These header files are fixed with hex values each of which explaining something. Header 2, header 3 and header
4 are considered metadata for images 640 x 480, 1280 x 720 and 1920 x 1080, respectively. Intuitively, If I want
to add a logo with custom resolution, I also have to add respective metadata to the blob. So far, I did not add
anything, but I believe it is logical to do so. My question here is that, these headers have a fixed format ? How
to generate a custom header ?
It seems you have to create custom header for your custom resolution.
But even if you create that, I think bootloader(cboot) would still not recognize it since we don’t handle those custom resolutions. It seems you also have to customize it in cboot for this use case.