Hmm, So i looked into the code and it would appear to be a bug.
ocd_mem2array is implemented via jim_mem2array which eventually calls target_mem2array. When this happens, I am pretty confident if ocd_mem2array works, that argc will be 5. BUT if I use omap3.cpu mem2array, this is implemented through a call to tcl_target_func, which ends up calling target_mem2array as well. But in this case argc will be 4. So there is a mismatch between what jim_mem2array and tcl_target_func expect with regard to target_mem2array I just proved this by changing my call to: omap3.cpu mem2array junk dataval 32 [expr "0x54011000 + $reg_num * 4"] 1 "junk" is just crap to make the argc=5 check work, and to align the variables to the right places in argv[] What would the most appropriate fix be? Strontium Strontium wrote: > Howdy, > > I have a script that goes: > > proc omap3_ReadDebugRegister { reg_num } { > # read the value of the debug register reg_num at address reg_num << 2 > omap3.cpu mem2array dataval 32 [expr "0x54011000 + $reg_num * 4"] 1 > } > > It errors and crashes openocd with the following message: > > Runtime error, file "script//omap3.tcl", line 11: > wrong # args: should be "dataval varname width addr nelems" > > I cant see anything wrong with it, but obviously I have stuffed up > somehow. Any suggestions on fixing it would be mightily appreciated. > > I will add processing to dataval after this, but until i can read > dataval its a bit pointless. > > Strontium > _______________________________________________ Openocd-development mailing list Openocd-development@lists.berlios.de https://lists.berlios.de/mailman/listinfo/openocd-development