Go to previous topic
Go to next topic
Last Post 10 Sep 2008 12:22 PM by  mathieu
How to reload LOLO using JTAG?
 2 Replies
Author Messages
richard.laborde@logicpd.com
Basic Member
Basic Member
Posts:247


--
20 Nov 2007 12:02 PM
    Several Customers have has issues with LoLo getting corrupted. Here is a "How To" from one of Logic's Firmware engineers.


    If you have JTAG hardware this *should* be straight forward.

    - We do not make any permanent changes to the CPU (ie. burn any fuses). We make every effort to keep the CPU as it was delivered from Freescale, so as not to lock the customer down to any specific configuration.

    - There are many ways to flash a bricked board. We have found the most universal way to do this across all our SOM platforms is to provide: 1) a boot file that only initializes the SDRAM controller, and is loaded in internal CPU SRAM; 2) a RAM version of LoLo that loads into SDRAM. We provide both of these files for every platform for just this purpose.



    I would recommend:


    1) Download the latest boot_xxxxxx_IMX31_10_LCE_0001_S_strip.elf from our web site, where “xxxxxx” is the version number.

    2) Download the latest RAM version of LoLo named lolo_xxxxxx_IMX31_10_LCE_0001_R_strip.elf, where “xxxxxx” is the version number.

    3) Connect your JTAG emulator and power up the target.

    4) Send the boot_xxxxxx_IMX31_10_LCE_0001_S_strip.elf file to the target. This file will be loaded into internal SRAM. On this CPU, internal SRAM is located at 0x1FFFC000 to 0x200000000. After loading the file in SRAM, you may want to read a few bytes of the beginning of SRAM using your JTAG debugger to verify the image did load correctly.

    5) Using the JTAG debugger, execute the loaded code. Once executed, there may not be any indication that the program is running. (some boot_xxxxxx_IMX31_10_LCE_0001_S_strip.elf versions flash the LED’s on the base board, some do not) The program is very fast, and upon completion, the program will sit in a while loop. After some short period (a few seconds), halt the processor.

    6) At this point the SDRAM will be configured to operate. You should be able to read & write values into the SDRAM using the JTAG debugger to verify the SDRAM operation. SDRAM on this platform is located at 0x80000000. Now, load the RAM version of LoLo lolo_xxxxxx_IMX31_10_LCE_0001_R_strip.elf using the JTAG debugger.

    7) Once LoLo is loaded, use the JTAG debugger to run the program.


    At this point the LoLo startup banner & prompt should appear at the serial port terminal. You can then use LoLo to load and burn a flash version of LoLo (from our web site, named lolo_xxxxxx_IMX31_10_LCE_0001_F_strip.elf), or you can simply type “update” and send the file “lolo_xxxxxx_IMX31_10_LCE_0001_F.upd”, which will burn the flash for you.


    In the above procedure, if your JTAG debugger does not work with the .elf file format, then use the cygwin tool set & the “objcopy” command to convert the file to binary format. Or, if you need the load address and/or start address of any of the .elf files above, use the cygwin tool set & the “objdump” command to print out this information. The cygwin tool set is available from our web site.
    mathieu
    New Member
    New Member
    Posts:


    --
    09 Sep 2008 09:20 AM
    I tried loading the SDRAM image and the jtag says:

    Loading /tftpboot/1009673_SRAM_boot.elf , please wait ....
    - File offset 0x00000054 to address 0x200F2809 size 3072
    # TARGET: access to invalid memory (data abort)

    does that mean that there is a physical(hardware) problem with my board?

    thanks
    -M
    mathieu
    New Member
    New Member
    Posts:


    --
    10 Sep 2008 12:22 PM
    Hi,
    is it possible to get a more verbose howto, Im using this boards. I have 2 and one of them is bricked. Im using bdi3000 as a jtag.

    Could you provide "commands" in this howto?

    thanks.
    -M


    ---