VF61 on evaluation board won't boot

I’ve been running the Linux console image Colibri-VF_Console-Image_2.7.4 on my VF61 module, and have been developing some software for some time now. Today I tried modifying the device tree file, and now my system will not boot. Here is what I have done:

I downloaded the Linux kernel source code. I was able to compile the unmodified vf610-colibri-eval-v3.dts file. Then I was able to transfer that vf610-colibri-evel-v3.dtb file to my VF61 by the following steps:

  1. Prepare an SD card with my Linux console image per instructions on the Toradex website.
  2. Copy my dtb file onto the SD card, replacing the existing vf610-colibri-eval-v3.dtb file (keeping the name the same). I renamed the original dtb file to keep it as a backup.
  3. Insert SD card into eval board, power up system, and hit a key to get a Uboot prompt.
  4. At Uboot prompt I executed the following commands: run setupdate, run prepare_ubi, run update_fdt.

I then rebooted the system, and it ran successfully.

Next I made a small change to my custom device tree file to disable a few devices that I did not need, recompiled it, and repeated the steps to put the dtb file onto my VF61. I tried to reboot, but the system would not boot. I got a message “Bad Linux ARM zImage magic!”.

I decided to restore the original dtb file (I had saved it by re-naming it on the SD card), so I repeated the Uboot commands to restore the original dtb file to my VF61. I cycled power again, but found that the system would still not boot. I still get the error message “Bad Linux ARM zImage magic!”.

A good boot (before I made any change to the device tree file) would give me the following at boot:

  • Read 0 bytes from volume kernel to 81000000
  • No size specified → Using max size (4757176)
  • Read 0 bytes from volume dtb to 82000000
  • No size specified → Using max size (27100)
  • Kernel image @ 0x81000000 [ 0x000000 - 0x4896b8 ]
  • ## Flattened Device Tree blob at 82000000

And it would continue to boot. Now I get the following:

  • Read 0 bytes from volume kernel to 81000000
  • Read 0 bytes from volume dtb to 82000000
  • No size specified → Using max size (27088)
  • Bad Linux ARM zImage magic!
  • Card did not respond to voltage select!
  • starting USB…

And it does not boot. Note that this is after I had restored the original dtb file that came with the Linux console image.

What did I do wrong? And how can I recover and get my system to boot again? And how do I avoid having this happen again when I try to make changes to my device tree file?

What did I do wrong?

Good question, but somehow you corrupted your kernel volume.

And how can I recover and get my system to boot again?

Rather than only updating the device tree, try also updating the kernel e.g. doing

run setupdate
run prepare_ubi
run update_kernel

If that does not work then I suggest you try the flashing from scratch procedure as explained here:

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

And how do I avoid having this happen again when I try to make changes to my device tree file?

Best is to log the whole serial console output and in case it happens again send that to us to figure out what may have gone wrong.

I logged the output of the console while I did the following steps:

  1. I prepared an SD card with the Colibri-VF_Console-Image_2.7.4 Linux console image.

  2. I inserted the SD card into the eval board, powered up, and hit space to gt the Uboot prompt.

  3. I did a flash from scratch by executing the commands nand erase.chip, run setupdate, run create_bcb, cfgblock create, and run update. All went fine, and the system booted.

  4. I shut down, removed the SD card from the eval board, and replaced the vf610-colibri-eval-v3.dtb file on the SD card with the vf610-colibri-eval-v3.dtb file created by compiling the vf610-colibri-eval-v3.dts (unmodified) from the linux-toradex folder on my development computer. This was the device tree file exactly as downloaded from toradex using git. I had renamed the original vf610-colibri-eval-v3.dtb on the SD card to vf610-colibri-eval-v3.dtb.bak for safe keeping.

  5. I unmounted the SD card from my development computer, placed it back into the eval board, powered up, and hit space to get the Uboot prompt.

  6. I installed the new device tree file onto the VF61 module with the following commands: run setupdate, run prepare_ubi, run update_fdt. I then typed “boot” to boot the system.

The system would not boot. This is exactly what has happened before. Every time I attempt to update the device tree file on the VF61 module I find that the system will not boot, and I have to re-flash the module. The console log file “vf61.log” is attached.link text

Hi

I installed the new device tree file onto the VF61 module with the following commands: run setupdate, run prepare_ubi, run update_fdt. I then typed “boot” to boot the system.

You should do reset instead of boot.

Best regards, Jaski