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 >>> 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 > _______________________________________________ Openocd-development mailing list Openocd-development@lists.berlios.de https://lists.berlios.de/mailman/listinfo/openocd-development