integration/builder: generate shadow_base address to mem.h and csv

This commit is contained in:
Mateusz Holenko 2019-06-05 17:35:47 +02:00
parent cb2d4372e4
commit d0b019b1f0
2 changed files with 9 additions and 2 deletions

View File

@ -58,6 +58,7 @@ class Builder:
cpu_type = self.soc.cpu_type
memory_regions = self.soc.get_memory_regions()
flash_boot_address = getattr(self.soc, "flash_boot_address", None)
shadow_base = getattr(self.soc, "shadow_base", None)
csr_regions = self.soc.get_csr_regions()
constants = self.soc.get_constants()
@ -102,7 +103,7 @@ class Builder:
write_to_file(
os.path.join(generated_dir, "mem.h"),
cpu_interface.get_mem_header(memory_regions, flash_boot_address))
cpu_interface.get_mem_header(memory_regions, flash_boot_address, shadow_base))
write_to_file(
os.path.join(generated_dir, "csr.h"),
cpu_interface.get_csr_header(csr_regions, constants))
@ -120,6 +121,10 @@ class Builder:
csr_regions = self.soc.get_csr_regions()
constants = self.soc.get_constants()
shadow_base = getattr(self.soc, "shadow_base", None)
if shadow_base:
constants.append(('shadow_base', shadow_base))
csr_dir = os.path.dirname(os.path.realpath(self.csr_csv))
os.makedirs(csr_dir, exist_ok=True)
write_to_file(

View File

@ -70,13 +70,15 @@ def get_linker_regions(regions):
return r
def get_mem_header(regions, flash_boot_address):
def get_mem_header(regions, flash_boot_address, shadow_base):
r = generated_banner("//")
r += "#ifndef __GENERATED_MEM_H\n#define __GENERATED_MEM_H\n\n"
for name, base, size in regions:
r += "#define {name}_BASE 0x{base:08x}L\n#define {name}_SIZE 0x{size:08x}\n\n".format(name=name.upper(), base=base, size=size)
if flash_boot_address is not None:
r += "#define FLASH_BOOT_ADDRESS 0x{:08x}L\n\n".format(flash_boot_address)
if shadow_base is not None:
r += "#define SHADOW_BASE 0x{:08x}L\n\n".format(shadow_base)
r += "#endif\n"
return r