this is the worst computer game i've ever played
i haven't even managed to get the values of every core register yet
this is the worst computer game i've ever played
i haven't even managed to get the values of every core register yet
2 days after starting this i have finally managed to read one (1) dword from ROM
@de i've dumped it via openocd before
(i could also just dump the flash, but the code disassembles to a perfectly sensible reset handler, so...)
@whitequark How do you know it's correct?
@swetland I've done both and ARM7TDMI is closer to "an elaborate torture method" than "a debug interface"
@whitequark Having done ARM7TDMI JTAG debug interface implementation first, back in the day, made the convoluted bits of SWD based debug really seem not all that bad by comparison.
It's been long enough now that your posts on this are bringing back more nostalgia than trauma.
@swetland yeah ARM9 and ARM11 debug macrocells terrify me. I think I'll just skip anything with MMU
@whitequark SWD has its warts, but it feels mostly (sometimes over-) designed... whereas the ARMTDMI stuff feels very, uh, tacked on after the fact is probably kindest... then ARM9 (not A9)... well I've forgotten the specifics, but I what remember is it being an even more convoluted evolution.
my collection of upsetting facts grows
my ARM7TDMI debug probe can consistently hit 1.022 MB/s (excluding protocol overhead, i.e. useful throughput) of reads!
the theoretical maximum bandwidth is 1.290 MB/s, but the bottleneck in this case is actually the DUT itself: the core has internal synchronization overhead i know i'm bumping into since i poll DBGACK
@abrasive hehe~
@whitequark that's unreasonably hot
for some bizarre reason, cpython actually outperforms pypy here, by about 25%
anyway, check this out: a complete high performance ARM7TDMI debug probe* https://github.com/whitequark/glasgow/blob/applet.debug.arm.arm7tdmi/software/glasgow/applet/debug/arm/arm7/__init__.py
it took me 3 days or so and 180 lines of code to implement it. that's right, one hundred eighty
* not a debugger; a debugger presents a UI, a debug probe can merely execute code and read/write data
@deshipu probably but i honestly have too many things to be chasing down here already
@whitequark sounds like something the pypy people would like to know about
@whitequark am I not understanding what LDR R0, [R0] means properly or is that last one just the usual rotation of data from unaligned reads on ARM7
@rakslice the usual rotation of the data, but note that when you're in Debug mode and running at debug speed, the core ignores the pointer in R0 and asks you via JTAG what to put there
so having it transposed is _weird_
GNU social JP is a social network, courtesy of GNU social JP管理人. It runs on GNU social, version 2.0.2-dev, available under the GNU Affero General Public License.
All GNU social JP content and data are available under the Creative Commons Attribution 3.0 license.