VF50 + Viola Bootloader problem

Hi,

I am trying to play a bit with the Viola + VF50 boards in order to study the device tree (I have also an IPE Brazilian custom board with some LEDs and stuff)

I was able to compile sucessfully a base image for colibri-vf (VF50) using Yocto (warrior)

Initially my board was working properly and I was able to see the bootloader messages through the serial port (uboot)

Before I load the new image, I realized that my board was using an old bootloader version (uboot), then I decided to update it using the following page below:

https://developer.toradex.com/knowledge-base/flashing-linux-on-vybrid-modules
https://developer.toradex.com/knowledge-base/flashing-linux-on-vybrid-modules#Flashing_from_UBoot

Unfortunately I missed one file on the SD card and I got an file not found error. Then, to update the sdcard properly I turned off the board
to place the missing file at the mentioned location but for some unknown reason I can’t see the bootloader messages on the console anymore.

Then, looking for some information here, I found a recovery process, followed by the command:

$ ./update.sh -n -d /dev/ttyUSB0

https://developer.toradex.com/knowledge-base/vfxx-recovery-mode#Connecting_serial_port

In order to do that, I downloaded the package file (which contains the update scripts)

https://developer.toradex.com/files/toradex-dev/uploads/media/Colibri/Linux/Images/Colibri-VF_Console-Image_2.8b7.-20200610.tar.bz2

However, during the recovery attempt I am seeing this following message:

starting associating phase…
magic missmatch, response was 0x00000000

I am using a FTDI adapter, with RX/TX/GND connections to my board.

So, I have a few questions:

  1. Is it possible to load the bootloader using only RX/TX/GND pins ?
  2. Is it necessary to make a connection between RTS+CTS on the Viola + Vf50 side ?
  3. How can I identify if the VF50 board has been entered in the recovery mode or not?
  4. Are there another ways to load the bootloader uboot other than via serial port ?

I saw another similar problem here, but so far no clues.

Trying to connect the VF50 UART_A_RTS to UART_A_CTS and running the update script I saw something else:

fcorrea@vmfcorrea:~/teste/Colibri-VF_Console-Image_2.8.7$ ./update.sh -n -d /dev/ttyUSB0
Colibri VF rootfs detected
Put the module in recovery mode and press [ENTER]…

config file
parse vf_flash//vybrid_usb_work.conf
starting associating phase
association phase succeeded, response was 0x23454523
HAB security state: development mode (0x56787856)
== work item
filename colibri-vf_bin/u-boot.imx
load_size 0 bytes
load_addr 0x00000000
dcd 1
clear_dcd 0
plug 1
jump_mode 2
jump_addr 0x00000000
== end work item
No dcd table, barker=402000d1

loading binary file(colibri-vf_bin/u-boot.imx) to 3f4074e8, skip=0, fsize=73b18 type=aa

<<<473880, 473880 bytes>>>
succeeded (status 0x88888888)
jumping to 0x3f4078e8
j4 in err=0, last_trans=4 0d 0a 0d 0a

Howerver, turning the board off and turning it on again I still not seeing the uboot messages on the console.

  1. Is it possible to load the bootloader using only RX/TX/GND pins ?

Yes, but you need specifying -n.

https://developer.toradex.com/knowledge-base/vfxx-recovery-mode#Linux_Machine

  1. Is it necessary to make a connection between RTS+CTS on the Viola + Vf50 side ?

Yes.

https://developer.toradex.com/knowledge-base/vfxx-recovery-mode#Connect_the_Module_to_your_Development_PC

  1. How can I identify if the VF50 board has been entered in the recovery mode or not?

There is no easy way to identify this short from running full recovery procedure.

  1. Are there another ways to load the bootloader uboot other than via serial port ?

No, not if the boot loader stored in NAND flash got corrupted.

Howerver, turning the board off and turning it on again I still not seeing the uboot messages on the console.

Note that running this on itself does not flash anything but only launches U-Boot from RAM. Further steps are required to re-flash the boot loader.

Hi marcel.tx. If l understand It correctly, using this procedure I will load the uboot and run It from RAM ? As described above, I was turning the board off, which means I am losing the bootloader every time the board goes off… Ok, then in this case what should I do after loading the bootloader ? For me is not clear how to run It from RAM.

And you seriously looked at the article I Iinked to above?

Yes I did. Thanks

You are very welcome.

@Fabricio did you manage to solve your issue?

The thing is:

  • You’ll load the U-Boot into the module’s RAM in Recovery Mode.
  • With that U-Boot on RAM, you can then flash your module with an image available in a SD Card, USB Stick, through the network, etc.

Best regards,
André Curvello

Hi @andrecurvello.tx , @marcel.tx.

Now I see. Even though the process is well documented there is one additional side note that needs to be somewhere.

I was struggling a bit waiting for some information on the console after the

$ ./update.sh -n -d /dev/ttyUSB0

command execution.

You need to open a screen session, in order to interact with the module.

$ screen /dev/ttyUSB0 115200

Also, if you don’t see anything start doing the commands as indicated here

https://developer.toradex.com/knowledge-base/flashing-linux-on-vybrid-modules#Flashing_from_Scratch

Nothing obvious from who doesn’t know too much about these modules.

Doing that I was able to load the u-boot properly.

Thanks for the feedback, @Fabricio.

Yes, after loading the U-Boot in Recovery Mode, you need to start a console to interact with that same U-Boot and conduct the process of recovering it.

This was described here:

https://developer.toradex.com/knowledge-base/vfxx-recovery-mode#Linux_Machine

This downloads U-Boot to the modules memory and starts it from there. On the same serial connection a serial console should appear after downloading the boot loader.

But I’ll make it clear to have a console application there.

Best regards,
André Curvello