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.

Regards,
Magnus

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
>> 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
>   

_______________________________________________
Openocd-development mailing list
Openocd-development@lists.berlios.de
https://lists.berlios.de/mailman/listinfo/openocd-development

Reply via email to