antoniovazquezblanco/GhidraSVD

Unify memory ranges if peripherals collide in a SVD

Closed this issue · 2 comments

Some SVD define colliding blocks for peripherals. An example can be found in https://github.com/NordicSemiconductor/nrfx/blob/master/mdk/nrf52840.svd where APPROTECT, CLOCK and POWER are all at 0x40000000. Moreover, they define the same addressBlock.

In this cases, my current preferred method for dealing with this is to create a single memory block that has the names of the three regions such as in APPROTECT_CLOCK_POWER...

This would require first sorting peripherals by base address, preprocessing them and finally, creating the memory blocks.

Further investigation reveals that peripherals intercalate...

APPROTECT only defines registers at offsets 0x550 and 0x558.
CLOCK defines many more starting by 0x008, 0x00C, 0x010, 0x014, 0x018, 0x100, 0x104, 0x10C, ... up to 0x5B4.

This means that I cannot define different memory regions for those peripherals...