On Fri, Mar 25, 2011 at 11:40 AM, Drasko DRASKOVIC
<drasko.drasko...@gmail.com> wrote:
> Hi Andy,
> thank you for these tests, it is very helpful. The problem you have
> can be easily solved by applying David Claffey's patches.

I have applied them and recompiling now to test again, but looking at
the source they will only fix memory read/write, not the other
problems I mentioned with step and resume, perhaps they need similar
fixes?

>
> I see that  mips32_pracc_fastdata_xfer() works well for you - I'll
> take a look why it does not work for me and elaborate on the list.
>
> Also, I can see that you are not facing the problem which I have :
>
> Error: couldn't read enough bytes from FT2232 device (0 < 5)
> Error: couldn't read from FT2232
> Error: register read failed
>
> Since Laurent from Amontec is capable of reproducing the same problem,
> it might be something related to Amontec dongle I am using, but there
> is small chance.
>
> Which dongle are you using ?

Its a guruplug jtag module
http://www.globalscaletechnologies.com/p-28-guruplug-jtag.aspx

Have you tried using libftxx instead of libftdi?

>
> Best regards,
> Drasko
>
>
> On Fri, Mar 25, 2011 at 11:52 AM, Andrew Lyon <andrew.l...@gmail.com> wrote:
>> On Thu, Mar 24, 2011 at 11:01 AM, Drasko DRASKOVIC
>> <drasko.drasko...@gmail.com> wrote:
>>> Hi Andy,
>>> I am very surprised that OpenOCD works for big endian MIPS.
>>>
>>> I am currently working on this and I am preparing the patch that will
>>> fix some of the issues.
>>>
>>> What I currently observed is :
>>>
>>> 1) mips_m4k_write_memory() and mips_m4k_read_memory() do not handle
>>> endianess at all. Since these functions are used by mww and mdw
>>> commands to set up SDRAM controller, most probably your configuration
>>> is wrong. Can you check this by reading SDRAM controller configuration
>>> registers and comparing to that configuration you expect ? I'd be very
>>> suprised that it works.
>>>
>>> 2) Only mips_m4k_bulk_write_memory() handles endianess, but it is
>>> called on 128 byes blocks (becaus it uses FASTDATA, and size of
>>> FASTDATA area is 16 words). Bottom line is that by my observation
>>> confirmed that mips32_pracc_fastdata_xfer() called internaly does not
>>> work either, and I do not think that it works for little endian
>>> targets also, missing some FASTDATA instructions. So, it would be very
>>> important if you can answer us the question I asked in the first mail
>>> : is mips32_pracc_fastdata_xfer() function called, and does it
>>> succeeds, or it falls back to simple mips_m4k_write_memory() ? I would
>>> expect to fail and fallback to mips_m4k_write_memory(), which as I
>>> explaind, do not handle endianess at all.
>>>
>>> So please send us the report on following 3 things :
>>> 1) Is SDRAM configured OK (i.e. does mww commands work well for you)
>>
>> Hi Drasko,
>>
>> You are absolutely right there are endianness issues with mips
>> bigendian, on the board I am using the memory controller is already
>> configured by the onboard firmware but reading back the values I can
>> see they are bitswapped:
>>
>> mdw 0xbf8011d0 1
>> 0xbf8011d0: 932d0000
>> Correct Value: 0xbf8011d0 0x2D93
>>
>> mdw 0xbf8011e0 1
>> 0xbf8011e0: 35820000
>> Correct Value: 0xbf8011e0 0x8235
>>
>>> 2) Is mips32_pracc_fastdata_xfer() exiting with error
>>
>> No, I checked the debug logs and it works successfully:
>>
>> Debug: 219 25550 target.c:1251 target_write_buffer(): writing buffer
>> of 57344 byte at 0x86000000
>> Debug: 220 25550 mips_m4k.c:984 mips_m4k_bulk_write_memory(): address:
>> 0x86000000, count: 0x00003800
>> Debug: 221 25551 target.c:1072 target_alloc_working_area(): MMU
>> disabled, using physical address for working memory 0xa0600000
>> Debug: 222 25551 target.c:1134 target_alloc_working_area(): allocated
>> new working area at address 0xa0600000
>> Debug: 228 28508 mips32_pracc.c:971 mips32_pracc_fastdata_xfer():
>> mips32_pracc_fastdata_xfer using 0xa0600000 for write handler
>>
>> Debug: 230 28711 ft2232.c:1685 ft2232_execute_scan(): ft2232 buffer
>> size reached, sending queued commands (first_unsent: 0xb74f3008, cmd:
>> 0xb7411fe8)
>> User : 232 29125 command.c:539 command_print(): 57344 bytes written at
>> address 0x86000000
>> User : 233 29126 command.c:539 command_print(): downloaded 57344 bytes
>> in 3.576233s (15.659 kb/s)
>>
>>
>>> 3) Dump the loaded image and inspect it - is it well loaded in memory ?
>>
>> I think fastdata may be loading it correctly, but reading it back it
>> is clearly bitswapped:
>>
>> hexdump of original file:
>>
>> 0000000 000b 1000 0000 0000 0000 0000 0000 0000
>> 0000010 688c 688c 0000 0000 312e 312e 0000 3000
>> 0000020 0000 0000 0000 0000 0000 0000 0000 0000
>> 0000030 7800 401b 00ff 3c08 ff00 3508 d824 0368
>> 0000040 0001 3c08 9500 3508 0019 1768 0000 0000
>> 0000050 8000 4008 8000 3c09 ffff 3529 4024 0109
>> 0000060 3604 3c09 4025 0109 0000 0000 8000 4088
>> 0000070 0040 0000 0040 0000 0040 0000 00c0 0000
>> 0000080 6000 4008 fffc 3c09 ffff 3529 4024 0109
>> 0000090 0000 2409 4025 0109 0000 0000 6000 4088
>> 00000a0 0040 0000 0040 0000 0040 0000 00c0 0000
>> 00000b0 0001 3c08 8000 3508 0007 1368 0000 0000
>> 00000c0 0001 3c08 8400 3508 0003 1368 0000 0000
>> 00000d0 0019 1000 0000 0000 8000 4008 8000 3c09
>> 00000e0 ffff 3529 4024 0109 3600 3c09 4025 0109
>> 00000f0 0000 0000 8000 4088 0040 0000 0040 0000
>>
>> The file was loaded using fastdata_xfer and then read back, hexdump:
>>
>> 0000000 0010 0b00 0000 0000 0000 0000 0000 0000
>> 0000010 8c68 8c68 0000 0000 2e31 2e31 0030 0000
>> 0000020 0000 0000 0000 0000 0000 0000 0000 0000
>> 0000030 1b40 0078 083c ff00 0835 00ff 6803 24d8
>> 0000040 083c 0100 0835 0095 6817 1900 0000 0000
>> 0000050 0840 0080 093c 0080 2935 ffff 0901 2440
>> 0000060 093c 0436 0901 2540 0000 0000 8840 0080
>> 0000070 0000 4000 0000 4000 0000 4000 0000 c000
>> 0000080 0840 0060 093c fcff 2935 ffff 0901 2440
>> 0000090 0924 0000 0901 2540 0000 0000 8840 0060
>> 00000a0 0000 4000 0000 4000 0000 4000 0000 c000
>> 00000b0 083c 0100 0835 0080 6813 0700 0000 0000
>> 00000c0 083c 0100 0835 0084 6813 0300 0000 0000
>> 00000d0 0010 1900 0000 0000 0840 0080 093c 0080
>> 00000e0 2935 ffff 0901 2440 093c 0036 0901 2540
>> 00000f0 0000 0000 8840 0080 0000 4000 0000 4000
>>
>>
>> If I load a smaller image which does not use fastdata then it reads
>> back exactly the same as it was written, but clearly in memory it is
>> bitswapped.
>>
>> Andy
>>
>>
>>>
>>> If this does not work, you can forget any debugging...
>>>
>>> Best regards,
>>> Drasko
>>>
>>> On Thu, Mar 24, 2011 at 11:43 AM, Andrew Lyon <andrew.l...@gmail.com> wrote:
>>>> On Wed, Mar 23, 2011 at 2:06 PM, Drasko DRASKOVIC
>>>> <drasko.drasko...@gmail.com> wrote:
>>>>> Hi Andy,
>>>>> are you using big or little endian CPU ?
>>>>
>>>> big endian.
>>>>
>>>>>
>>>>> Is mips32_pracc_fastdata_xfer() function called, and does it succeeds,
>>>>> or it falls back to simple mips_m4k_write_memory() ?
>>>>
>>>> I realized I had not setup the working area properly and having done
>>>> so load_image is much faster (14.378 kb/s)
>>>>
>>>> However I have noticed other problems, to give some background the
>>>> board is a mips router which already has a working factory firmware, I
>>>> am trying to port the uboot code released by the manufacturer into a
>>>> newer version of uboot, so I load my new uboot binary into memory and
>>>> resume to that address, but instead of running my code the system
>>>> seems to reset and boot from rom again.
>>>>
>>>> So I tried a more simple binary which simply toggles a gpio to make a
>>>> led flash, but the same thing happens.
>>>>
>>>> Here is a log with some notes.
>>>>
>>>>> targets
>>>>    TargetName         Type       Endian TapName            State
>>>> --  ------------------ ---------- ------ ------------------ ------------
>>>>  0* xway.cpu           mips_m4k   big    xway.cpu           running
>>>>
>>>> *At this point the board has loaded uboot from rom and is at the uboot 
>>>> prompt.
>>>>
>>>>> halt
>>>> target state: halted
>>>> target halted in MIPS32 mode due to debug-request, pc: 0x83fd7ac0
>>>>> load_image test1 0x80000000
>>>> 57344 bytes written at address 0x80000000
>>>> downloaded 57344 bytes in 3.937115s (14.224 kb/s)
>>>>> step 0x80000000
>>>> target state: halted
>>>> target halted in MIPS32 mode due to single-step, pc: 0x83fd7abc
>>>>
>>>> *As you can see PC is not where I asked it to go.
>>>>
>>>>> resume
>>>>
>>>> *At this point the uboot prompt starts responding to input again,
>>>> showing that the system never exec any of my code.
>>>>
>>>>> halt
>>>>> resume 0x80000000
>>>>
>>>> *System resets and boots from rom.
>>>>
>>>> Andy
>>>>
>>>>
>>>>>
>>>>> BR,
>>>>> Drasko
>>>>>
>>>>> On Tue, Mar 22, 2011 at 2:20 PM, Andrew Lyon <andrew.l...@gmail.com> 
>>>>> wrote:
>>>>>> Hi,
>>>>>>
>>>>>> I am using a ft2232 based jtag device with a mips board and the
>>>>>> performance is really terrible:
>>>>>>
>>>>>> 57344 bytes in 3119.897949s (0.018 kb/s)
>>>>>>
>>>>>> It seems to work ok in that I can halt, resume, read/write memory etc,
>>>>>> but every operation is very slow, halting takes almost 3 seconds.
>>>>>>
>>>>>> I pulled the code from git and have tried using both libftdi and
>>>>>> libftd2xx0.4.16 but there is little difference.
>>>>>>
>>>>>> The jtag came with a guruplug and although I no longer have the
>>>>>> guruplug itself I do recall reflashing the 225k uboot image and it
>>>>>> took only a few seconds.
>>>>>>
>>>>>> Is this expected performance? If not what do I need to do to debug?
>>>>>>
>>>>>> Andy
>>>>>> _______________________________________________
>>>>>> Openocd-development mailing list
>>>>>> Openocd-development@lists.berlios.de
>>>>>> https://lists.berlios.de/mailman/listinfo/openocd-development
>>>>>>
>>>>>
>>>>
>>>
>>
>
_______________________________________________
Openocd-development mailing list
Openocd-development@lists.berlios.de
https://lists.berlios.de/mailman/listinfo/openocd-development

Reply via email to