In our code we read the OS image version and bootloader version so that we can set a warning if they are out of date and need to be updated. With the old Toradex library I could read the bootloader version using GetBootloaderInfo(). The equivalent for the new library looks like it is Sys_GetConfigInt(hSys, L"EbootVersion", &value) but this library call fails for the T20.
There is a note in Sysinfo.h which says, “Eboot version not supported for Tegra and Vybrid modules”, which explains why that call fails. But why can’t I read the bootloader version with the new library when I could read it with the old library? Is “Eboot” something different from “Bootloader”? Is there a different method to read the bootloader version with the new library?
The new library was written with a common concept in mind between all of our Modules. Unfortunately the sysinfo library was rewritten more generically and it was planned that we would be able to query the Bootloader version through simple Kernel IOCTLs, but those were never implemented in the Tegra BSP. The old sysinfo lib was accessing the FlashLibary to read and parse the eboot signatures from Flash to find out the version. Porting the whole flashlibrary to the new concept for all Modules would have been a quite big effort so this was not done.
If you really need this functionality it could be possible to implement the IOCTLs in the next image releases, but it will only work once you’re running the new OS Image. Or you can mix old and new libraries as a workaround?
Thanks for your reply @germano.tx. I don’t want to mix the old and new libraries in my main executable as that could lead to confusion and other problems, but I could create a simple executable which uses the old libraries and simply returns the bootloader version. Then the main firmware could call that executable during its start-up. I just need to think if I really need to know the bootloader version enough to do this, or if just knowing the OS image version is sufficient.