TFTP update of Colibri iMX6ULL

Hi

I’ve just got a the boards and now I’m trying to figure out how to update the CPU module.

What I’ve done so far is to create a debian docker image where I can build both the u-boot and the kernel. At the moment I use the following packages:

  • Compiler: gcc-linaro-6.2.1-2016.11-i686_arm-linux-gnueabihf
  • U-boot: toradex_2019.07
  • Kernel: toradex_4.14-2.0.x-imx
  • FS: Console-Image-colibri-imx6ull.tar.xz from colibri-imx6ull_console-image-tezi_3.0b2.65-20190830.tar

Both the u-boot and the kernel were built using the colibri-imx6ull_defconfig configuration.

I’ve managed to update the kernel using the easy installer but not the u-boot. I’ve tried all binaries that are built but none makes the board boot.

The kernel also have some issues during boot:

* [FAILED] Failed to start Load Kernel Modules.
   See 'systemctl status systemd-modules-load.service' for details.
…
* [FAILED] Failed to start Load default USB gadget schema g1.schema.
  See 'systemctl status usbg.service' for details.

but I haven’t looked into the details yet. Maybe Toradex engineers already are working with this issue?

Anyway, to make it easier (less editing, moving USB-flash around and so on) I would like use TFTP for the update instead. It’s been a long time since I last worked with embedded Linux but, if my memory is correct, in that project we used TFTP to update both the u-boot, the kernel and the filesystem. In the u-boot environment there were some handy entries for this but the nand command requires specific addresses and so on and I’ve not been able to find them. Is this information publicly available?

Also, is it possible to update u-boot from u-boot or is my memory wrong?

Regards
/SA

Hello @S.Andersson and Welcome to the Toradex Community!

We did not implement TFTP update for Colibri iMX6ULL since we use Toradex Easy Installer for flashing the image to the module, which lets you flash the module by the media of your choice.

However you can have a look on Colibri iMX7 image and check how this was implemented for iMX7 and do the similar approach for iMX6ULL.

Best regards,
Jaski

Thanks Jaski but as far as I can tell TFTP update of u-boot isn’t supported by that package either.

Maybe it’s not possible at all to use TFTP to update using the current setups but if so, why? Shouldn’t it just be a matter of selecting the correct image and use nand commands to erase and then write to the correct memory locations for u-boot, kernel & FS?

Also, is the file system available somewhere? We would like to make changes and update that via TFTP as well.

Regards
SA

Thanks Jaski but as far as I can tell TFTP update of u-boot isn’t supported by that package either.

Why exactly would you come to such a conclusion? TFTP update is very well supported on the NAND versions of the Colibri iMX7.

Maybe it’s not possible at all to use TFTP to update using the current setups but if so, why?

No, if one knows how it is definitely possible. However, once we implemented the much more powerful Toradex Easy Installer we stopped messing with any such legacy update methods. What exactly prevents you from using our preferred installation method?

Shouldn’t it just be a matter of selecting the correct image and use nand commands to erase and then write to the correct memory locations for u-boot, kernel & FS?

Yes, however getting it right is quite none trivial.

Also, is the file system available somewhere?

Certainly, it’s the Console-Image-colibri-imx6ull.tar.xz package within the Colibri-iMX6ULL_Console-Image-Tezi_3.0b2.65-20190830.tar package.

We would like to make changes and update that via TFTP as well.

The recommended way to make changes to an Embedded Linux system is to build a custom image as outlined in the following article on our developer website:

https://developer.toradex.com/knowledge-base/board-support-package/openembedded-(core)

Hi

marcel.tx, I personally find Toradex Easy Installer wonderful for dead unit recovery. But how to run it again from already operating system? Perhaps it is possible to put TEZI executable(s) on rootfs and trigger USB gadget reconfiguration and then start TEZI when required. It would be fine as long as everything is goes well. But if it hangs on my desk, it’s easier to cycle power and let U-Boot boot upgrade from USB stick or from TFTP. Legacy methods still have their value.

S.Andersson, see attached tgz I made with update.sh etc to create your legacy iMX6ULL upgrade files. rootfs is empty, please fill it with your rootfs, as well replace *.dtb and zImage with right ones. U-Boot image is from 2.8b6.

Edward

iMX6ULL legacy update.sh etc

Please note that the Toradex Easy Installer is just an installer and not a complete update system.
Yes. It’s fast and nice, but it is kind of just to get module with TEZI on board and switch from it to Windows or Linux. What I like about old method: 1) do small fixes to rootfs and quickly rebuild update files. 2) And with update files it’s not so hard to command headless Linux machine over http to let U-Boot update everything from pen drive and then reboot.

But how to run it again from already operating system?
As long as U-Boot is still operational, one would run it via distroboot.
Perhaps it is possible to put TEZI executable(s) on rootfs and trigger USB gadget reconfiguration and then start TEZI when required.
For distroboot no such USB intervention would be required. Alternatively, of course, one could activate the recovery mode from within Linux and trigger a reboot.

Didn’t knew about distroboot, thanks, I’ll try it.

Regards

marcel.tx, I personally find Toradex Easy Installer wonderful for dead unit recovery.

Please note that the Toradex Easy Installer is just an installer and not a complete update system.

But how to run it again from already operating system?

As long as U-Boot is still operational, one would run it via distroboot.

Perhaps it is possible to put TEZI executable(s) on rootfs and trigger USB gadget reconfiguration and then start TEZI when required.

For distroboot no such USB intervention would be required. Alternatively, of course, one could activate the recovery mode from within Linux and trigger a reboot.

It would be fine as long as everything is goes well. But if it hangs on my desk, it’s easier to cycle power and let U-Boot boot upgrade from USB stick or from TFTP.

I don’t think it is any easier than distroboot.

Legacy methods still have their value.

Maybe but it will never be as easy to use and making it fool prove is also far from trivial.