UBoot recovery for imx6 via JTAG

From Wiki-DB
Jump to navigationJump to search

Technically all JTAG-adapter listed by OpenOCD should work, but DH electronics recommends the Olimex Arm-USB-OCD-Tiny-H. All tests and Documents were made in use of this one.

Installation

This installation was made on the Virtual Machine for Application Development. All console expressions refer to this Debian system.

  1. OpenOCD
    • OpenOCD is a Linux package and is as easy to install as sudo apt-get install openocd
  2. Drivers
    • If you use the JTAG-Adapter recommended by DH, then you need to install the FTDI-Drivers as followed:
      • Go to http://www.ftdichip.com/Drivers/D2XX.htm and Download your suitable Driver (32-bit or 64-bit)
      • Navigate into the Download folder cd /home/devel/Downloads
      • Untar the Downloaded zip-file tar xfvz libftd2xx-x86_64-1.4.6.tgz
      • For the next steps you need Admin rights (standard password for the VM is root): su
      • You need to copy the folder cp libftd2xx.* /usr/local/lib
      • Changing the permission chmod 0755 /usr/local/lib/libftd2xx.so.1.4.6
      • Creating a link ln -sf /usr/local/lib/libftd2xx.so.1.4.6 /usr/local/lib/libftd2xx.so
      • Finish the installation exit

uBoot Programing

There are two ways for doing this. The easy way is an automatic Bash-script, which handles all the commands needed for the programing process. In this case you need a specified folder-structure so that the automatic script can find all its needed files. The other one is to type in the required commands. In a few cases this fails then you need to go the other way and program the uBoot manually.

  1. Download the needed files here: Programing Files
    • Here you get the "dhcom_olimex_arm_usb_tiny_h.cfg" and the "u-boot-spl-prog"
  2. Download newest uBoot here: uBoot_iMX6
    • Here you get the "uBoot.imx"
  3. Connecting everything
    • Connect the JTAG-Adapter with your PC and the Debian VM (Player - Removeable Devices)
    • Connect the JTAG interface via the DHCOM JTAG adapter to the i.MX6 module (If you don't have a JTAG adapter, please ask DH electronics)
    • Connect the board with a serial COM-port
  4. Automatic Script
    • Create a new folder (it isn't necessary where the folder is located, you just need to keep the folder structure)
    • The needed folder structure looks like this:
      • DHcom_uBoot_Programmer
        • bin_File (here are the uBoot files)
        • uBoot_Programmer (here are the Programing scripts)
      • Paste the "dhcom_olimex_arm_usb_tiny_h.cfg"-file in the OpenOCD folder at /usr/share/openocd/scripts/board
      • The "uBoot_Programmer_Olimex_arm_usb_tiny_h.sh"-file needs to be in the uBoot_Programmer folder
      • In the bin_Folder belongs the "u-boot-spl-prog.bin" and your own uBoot file
      • You need to adjust the "uBoot_Programmer_Olimex_arm_usb_tiny_h.sh" in terms of the name of your uBoot-file. Paste the name instead of the term "Your uBoot File"
    • Open a terminal and navigate into the folder e.g. cd DHcom_uBoot_Programmer/uBoot_Programmer
    • Power up the board and have a look at the serial output. There must not be any output (no uBoot starting) else go to Delete uBoot
    • Start the programing script: ./uBoot_Programmer_Olimex_arm_usb_tiny_h.sh
    • If some error occures you can try the Manual Programing method below
  5. Manual Programing
    • Power up the board and have a look at the serial output. If there is any uBoot starting:Delete uBoot
    • You need two terminals, one for GDB the other for OpenOCD an a Com-Port to get the serial output
    1. OpenOCD
      • openocd –f board/dhcom_olimex_arm_usb_tiny_h.cfg
      • If OpenOCD does not open like in the picture then close and open it again
    2. GDB
      • gdb --quiet
      • target remote localhost:3333
      • mon load_image /path/to/the/u-boot-spl-prog/file 0x908000
      • mon reg pc 0x908000
      • mon reset
      • mon resume
      • Wait until the message "Searching for IVT header at DDR address 0x18000000" is on the serial output
      • mon halt
      • mon load_image /path/to/the/u-boot-with-spl/file 0x18000000
      • mon resume

Delete uBoot

  1. If there is any uBoot starting, you can delete it with entering uBoot (press DEL after powering up the board)
    • sf probe
    • sf erase 0 f0000
    • Restart the board
    • Go on with your procedure