Magnus Lundin wrote:
> Good observations,
>
> - The error reporting and handling for memory read/write errors is
> incomplete, this ia general problem, well know but it only occurs when
> things are broken anyway.
>
> - The cortex-a 8 code is incomplete, we know that, you have found the
> "missing target_examine" function where ahbap_debugport_init should be
> called.
I would bet that the 'call first dap apsel 1 two times to work
properly' issue is with using cortex m3, too. I.e. if I remember
correctly it fails, too, when we use complete (?) cortex m3 code (like
we did until yesterday).
Best regards
Dirk
> Strontium wrote:
>> Ok,
>>
>> I am trying to make the files described below. And have gotten along
>> fine, but have found the following problem.
>>
>> The first time my script executes after a reset of the beagle:
>>
>> dap apsel 1
>>
>> openocd halts with an error, thus: (at -d 3)
>>
>> Fails:
>>
>> Debug: 166 1139 arm_adi_v5.c:242 swjdp_transaction_endcheck(): swjdp:
>> CTRL/STAT error 0x20
>> Debug: 167 1139 arm_adi_v5.c:951 ahbap_debugport_init(): Debug: 168
>> 1146 arm_adi_v5.c:996 ahbap_debugport_init(): AHB-AP ID Register
>> 0x4770002, Debug ROM Address 0x80000000
>> User : 169 1146 command.c:383 command_print(): ap 1 selected,
>> identification register 0x00000000
>> Debug: 170 1146 command.c:427 run_command(): Command failed with error
>> code -107
>>
>> The second time I execute:
>>
>> dap apsel 1
>>
>> it works, thus (also at - d 3):
>>
>> Works:
>>
>> Debug: 163 1134 command.c:91 script_command(): script_command - apsel
>> Debug: 164 1134 command.c:108 script_command(): script_command -
>> apsel, argv[0]=ocd_dap_apsel
>> Debug: 165 1134 command.c:108 script_command(): script_command -
>> apsel, argv[1]=1
>> User : 166 1139 command.c:383 command_print(): ap 1 selected,
>> identification register 0x04770002
>>
>> I have tracked the fault to the processing that follows (lines 239 to
>> 247 of arm_adi_v5.c:
>>
>> /* Check for STICKYERR and STICKYORUN */
>> if (ctrlstat & (SSTICKYORUN | SSTICKYERR))
>> {
>> LOG_DEBUG("swjdp: CTRL/STAT error 0x%x", ctrlstat);
>> /* Check power to debug regions */
>> if ((ctrlstat & 0xf0000000) != 0xf0000000)
>> {
>> ahbap_debugport_init(swjdp);
>>
>> That is the path it executes. If I change this code by simply
>> returning the status of the ahbap_debugport_init(... command, openocd
>> doesnt halt. but it prints the following (which is clearly still wrong):
>>
>> Debug: 166 1134 arm_adi_v5.c:242 swjdp_transaction_endcheck(): swjdp:
>> CTRL/STAT error 0x20
>> Debug: 167 1134 arm_adi_v5.c:951 ahbap_debugport_init(): Debug: 168
>> 1143 arm_adi_v5.c:996 ahbap_debugport_init(): AHB-AP ID Register
>> 0x4770002, Debug ROM Address 0x80000000
>> User : 169 1143 command.c:383 command_print(): ap 1 selected,
>> identification register 0x00000000
>>
>> I then immediately execute dap apsel 1 again, which returns with the
>> expected result
>>
>> Debug: 177 2143 command.c:91 script_command(): script_command - apsel
>> Debug: 178 2143 command.c:108 script_command(): script_command -
>> apsel, argv[0]=ocd_dap_apsel
>> Debug: 179 2143 command.c:108 script_command(): script_command -
>> apsel, argv[1]=1
>> User : 180 2150 command.c:383 command_print(): ap 1 selected,
>> identification register 0x04770002
>>
>> So it would appear that the ahbap_debugport_init function is working
>> correctly, its just that its results do not get out, so that dap apsel
>> 1 reports a correct result, the first time it is called.
>>
>> any ideas?
>>
>> Attached are my config script and tcl script for reference
>>
>> Strontium
>>
>> Magnus Lundin wrote:
>>> Dirk Behme wrote:
>>>
>>>> Btw.: Is there an option or a possibility to run a script when I
>>>> connect e.g. by telnet?
>>>>
>>>> I'm a little tired to always type the commands
>>>>
>>>> jtag tapenable omap3.cpu
>>>> target create omap3.cpu cortex_a8 -endian little -chain-position
>>>> omap3.cpu
>>>> dap apsel 1
>>>> omap3.cpu mww 0x54011FB0 0xC5ACCE55 4
>>>> omap3.cpu mdw 0x54011314
>>>> omap3.cpu mdw 0x54011314
>>>>
>>>> manually.
>>>>
>>>>
>>> Yes, we will put this in the target support but for now I suggest to
>>> use a Tcl script.
>>> [ This is true, but not tested ]
>>> - create a file omap.tcl
>>> - put "source [ <path.../>omap.tcl" in your cfg file
>>>
>>> Now define some handy procedures in the omap.tcl file:
>>>
>>> proc dbginit { } {
>>> dap apsel 1
>>> omap3.cpu mww 0x54011FB0 0xC5ACCE55 4
>>> omap3.cpu mdw 0x54011314
>>> omap3.cpu mdw 0x54011314
>>> }
>>>
>>> Now just giving the command dbginit should do the trick.
>>> If you edit the script you can rerun the source command without
>>> restarting openocd
>>>
>>> Then we can collect Tcl procedures for different debug activities
>>> before we code into the C, we can actually test a large part of the
>>> A8 and OMAP support just with tcl scripts.
>>>
>>> Regards,
>>> Magnus
>>>
>>> _______________________________________________
>>> Openocd-development mailing list
>>> [email protected]
>>> https://lists.berlios.de/mailman/listinfo/openocd-development
>>>
>>>
>> ------------------------------------------------------------------------
>>
>> _______________________________________________
>> Openocd-development mailing list
>> [email protected]
>> https://lists.berlios.de/mailman/listinfo/openocd-development
>>
>
> _______________________________________________
> Openocd-development mailing list
> [email protected]
> https://lists.berlios.de/mailman/listinfo/openocd-development
>
_______________________________________________
Openocd-development mailing list
[email protected]
https://lists.berlios.de/mailman/listinfo/openocd-development