Mike, Yes, it turns out i was using an older version of OpenOCD, i just tried with the latest version, and its working fine.
Thanks so much for your help. Drasko, i am sorry i can't be of more help with your issue, i hope you find a solution soon. - Nived On Wed, Sep 15, 2010 at 11:56 AM, Drasko DRASKOVIC < drasko.drasko...@gmail.com> wrote: > On Wed, Sep 15, 2010 at 8:28 PM, Drasko DRASKOVIC > <drasko.drasko...@gmail.com> wrote: > > On Wed, Sep 15, 2010 at 7:58 PM, Mike Dunn <miked...@newsguy.com> wrote: > >> On 09/15/2010 08:47 AM, Drasko DRASKOVIC wrote: > >> > >> I sent in a patch a while back to fix this very problem on the xscale; > i.e., > >> software breakpoints didn't work because of cache issues. The problem > was > >> clear: execution failed to halt on software breakpoints most of the > time. And > >> always if set a few instructions ahead of the current value of the pc. > Once the > >> code to clean and flush the cache was added, the problem went away and I > haven't > >> seen any issues since, and I use sw breakpoints frequently. > > Yes, not hitting breakpoint can make one suspect on caches, i.e. > > breakpoint was put in RAM, but not replicated in cache. > > Here we are facing different behavior : breakpoint is always hit, no > > mater at which instruction it is put. > > OK, writing previous e-mail, one thing crossed my mind : I was (and > probably NIved also) putting breakppoints before starting a program, > which in my case is e-Cos application. > As e-Cos will initialize caches during the boot, bkpt instruction > placed by the GDB in RAM will be replicated to the cache. But I never > before did try to start e-Cos, stop it via GDB and place a SW > breakpoint. This way, if it is really a cache problem, bkpt > instruction will be placed in memory, but not replicated in cache and > thus never seen when we do 'c'. And that is exactly what happens in my > case - program never stops after. > > So, this can prove two things : > 1) Problem comes from cache inconsistency. > 2) My routines for cache flushing : > > printf ("Invalidate I$\n"); > retval = arm966e_write_cp15(target, 0x0f, 0); > > printf ("Invalidate D$\n"); > retval = arm966e_write_cp15(target, 0x0e, 0); > > are not good. > > My question is here can anybody, based on ARM946E doc given here : > > http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.set.arm9/index.html > can give me valid parameters to write into CP15 with > arm966e_write_cp15() function in order to flush I$, because I can not > see what is wrong with the lines I came up with... > > > Nived, > as Mike pointed out you probably took old code without cache-handling > patch. > > Can you also try to run your program without any breakpoint set, than > stop it with CTRL+C, and then set breakpoint to some instruction that > is after the address at which you stopped (yet to come in program > execution flow), and continue execution (by putting 'c' in GDB). If it > is a cache problem it will never stop on this new breakpoint. > > Best regards, > Drasko > _______________________________________________ > 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