leveldown-security/SVD-Loader-Ghidra

Conflicting data exists at address 40000000 to 400005b7

ifohancroft opened this issue · 3 comments

It may be my binary, but I thought it's worth reporting just in case.

Here is the output I get when generating for nRF52840:

Loading SVD file...
	Done!
Generating memory regions...
	Done!
Generating peripherals...
	FICR
	UICR
	CLOCK
	POWER
Traceback (most recent call last):
  File "/home/ifohancroft/Downloads/SVD-Loader-Ghidra/SVD-Loader.py", line 165, in <module>
    listing.createData(addr, peripheral_struct, False)
	at ghidra.program.database.code.CodeManager.checkValidAddressRange(CodeManager.java:1945)
	at ghidra.program.database.code.CodeManager.createCodeUnit(CodeManager.java:2030)
	at ghidra.program.database.ListingDB.createData(ListingDB.java:431)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:564)
ghidra.program.model.util.CodeUnitInsertionException: ghidra.program.model.util.CodeUnitInsertionException: Conflicting data exists at address 40000000 to 400005b7
SVD-Loader.py> Finished!```

I also getting the same error for nrf52832

SVD-Loader.py> Running...
Loading SVD file...
	Done!
Generating memory regions...
	Done!
Generating peripherals...
	FICR
	UICR
	BPROT
	POWER
Traceback (most recent call last):
  File "E:\nRF5_projects\tools\ghidra_9.1.1_PUBLIC_20191218\SVD-Loader-Ghidra\SVD-Loader.py", line 165, in <module>
    listing.createData(addr, peripheral_struct, False)
	at ghidra.program.database.code.CodeManager.checkValidAddressRange(CodeManager.java:1947)
	at ghidra.program.database.code.CodeManager.createCodeUnit(CodeManager.java:2032)
	at ghidra.program.database.ListingDB.createData(ListingDB.java:431)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
ghidra.program.model.util.CodeUnitInsertionException: ghidra.program.model.util.CodeUnitInsertionException: Conflicting data exists at address 40000000 to 40000617
SVD-Loader.py> Finished!

I have the same issue. Looking at the SVD file and the documentation that Nordic Provides, it seems that they have overlapping peripheral registers somehow. See Chapter 10 of https://infocenter.nordicsemi.com/pdf/nRF51_RM_v3.0.pdf

Yup. Seems that they have different peripherals that have interwoven registers, thus they have the same base address, which is screwing up the script.