mirror of
https://github.com/drasko/codezero.git
synced 2026-01-21 15:23:15 +01:00
Changes since April
Clean up of build directories. Simplifications to capability model.
This commit is contained in:
@@ -14,7 +14,7 @@ sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), PROJRELR
|
||||
from optparse import OptionParser
|
||||
from os.path import join
|
||||
from shutil import copytree
|
||||
from config.projpaths import *
|
||||
from scripts.config.projpaths import *
|
||||
|
||||
def parse_cmdline_options():
|
||||
usage = "usage: %prog [options] arg"
|
||||
|
||||
@@ -15,9 +15,9 @@ sys.path.append(os.path.abspath("../"))
|
||||
|
||||
SCRIPTROOT = os.path.abspath(os.path.dirname(__file__))
|
||||
|
||||
from config.projpaths import *
|
||||
from config.configuration import *
|
||||
from config.lib import *
|
||||
from scripts.config.projpaths import *
|
||||
from scripts.config.configuration import *
|
||||
from scripts.config.lib import *
|
||||
|
||||
class BaremetalContGenerator:
|
||||
def __init__(self):
|
||||
@@ -71,12 +71,14 @@ class BaremetalContGenerator:
|
||||
fout.write('\t' + conv_hex(cont.pager_lma) + '\n')
|
||||
fout.write(pager_vma_header)
|
||||
fout.write('\t' + conv_hex(cont.pager_vma) + '\n')
|
||||
for ireg in range(cont.virt_regions):
|
||||
for ireg in range(cont.caplist["PAGER"].virt_regions):
|
||||
fout.write(pager_virtmem_header % ireg)
|
||||
fout.write('\t' + cont.virtmem["START"][ireg] + ' - ' + cont.virtmem["END"][ireg] + '\n')
|
||||
for ireg in range(cont.phys_regions):
|
||||
fout.write('\t' + cont.caplist["PAGER"].virtmem["START"][ireg] + \
|
||||
' - ' + cont.caplist["PAGER"].virtmem["END"][ireg] + '\n')
|
||||
for ireg in range(cont.caplist["PAGER"].phys_regions):
|
||||
fout.write(pager_physmem_header % ireg)
|
||||
fout.write('\t' + cont.physmem["START"][ireg] + ' - ' + cont.physmem["END"][ireg] + '\n')
|
||||
fout.write('\t' + cont.caplist["PAGER"].physmem["START"][ireg] + \
|
||||
' - ' + cont.caplist["PAGER"].physmem["END"][ireg] + '\n')
|
||||
|
||||
def copy_baremetal_build_readme(self, config, cont):
|
||||
with open(self.build_readme_in) as fin:
|
||||
@@ -98,7 +100,10 @@ class BaremetalContGenerator:
|
||||
fout.write(str % (cont.name, cont.id, cont.id))
|
||||
|
||||
def create_baremetal_sources(self, config, cont):
|
||||
self.create_baremetal_srctree(config, cont)
|
||||
if cont.duplicate == 1:
|
||||
self.create_baremetal_srctree(config, cont)
|
||||
else:
|
||||
os.makedirs(join(self.CONT_SRC_DIR, 'include'))
|
||||
self.copy_baremetal_build_readme(config, cont)
|
||||
self.copy_baremetal_build_desc(config, cont)
|
||||
self.generate_linker_script(config, cont)
|
||||
@@ -112,8 +117,13 @@ class BaremetalContGenerator:
|
||||
def check_create_baremetal_sources(self, config):
|
||||
for cont in config.containers:
|
||||
if cont.type == "baremetal":
|
||||
|
||||
# Determine container directory name.
|
||||
self.CONT_SRC_DIR = join(self.BAREMETAL_SRC_BASEDIR, cont.name.lower())
|
||||
if cont.duplicate == 0:
|
||||
self.CONT_SRC_DIR = join(join(BUILDDIR, 'cont' + str(cont.id)), cont.name)
|
||||
else:
|
||||
self.CONT_SRC_DIR = join(self.BAREMETAL_SRC_BASEDIR, cont.name)
|
||||
|
||||
self.build_readme_out = join(self.CONT_SRC_DIR, self.build_readme_name)
|
||||
self.build_desc_out = join(self.CONT_SRC_DIR, self.build_desc_name)
|
||||
self.linker_lds_out = join(join(self.CONT_SRC_DIR, 'include'), \
|
||||
@@ -121,7 +131,7 @@ class BaremetalContGenerator:
|
||||
self.container_h_out = join(join(self.CONT_SRC_DIR, 'include'), \
|
||||
self.container_h_name)
|
||||
|
||||
if not os.path.exists(join(self.BAREMETAL_SRC_BASEDIR, cont.name)):
|
||||
if not os.path.exists(self.CONT_SRC_DIR):
|
||||
self.create_baremetal_sources(config, cont)
|
||||
else:
|
||||
# Don't create new sources but update configuration
|
||||
@@ -137,6 +147,20 @@ class BaremetalContGenerator:
|
||||
def baremetal_container_generate(self, config):
|
||||
self.check_create_baremetal_sources(config)
|
||||
|
||||
def baremetal_del_dynamic_files(self, cont):
|
||||
self.CONT_SRC_DIR = join(join(BUILDDIR, 'cont' + str(cont.id)), cont.name)
|
||||
self.build_readme_out = join(self.CONT_SRC_DIR, self.build_readme_name)
|
||||
self.build_desc_out = join(self.CONT_SRC_DIR, self.build_desc_name)
|
||||
self.linker_lds_out = join(join(self.CONT_SRC_DIR, 'include'), self.linker_lds_name)
|
||||
self.container_h_out = join(join(self.CONT_SRC_DIR, 'include'), self.container_h_name)
|
||||
|
||||
if cont.duplicate == 0:
|
||||
os.system('rm -f ' + self.build_readme_out)
|
||||
os.system('rm -f ' + self.build_desc_out)
|
||||
os.system('rm -f ' + self.linker_lds_out)
|
||||
os.system('rm -f ' + self.container_h_out)
|
||||
return None
|
||||
|
||||
if __name__ == "__main__":
|
||||
config = configuration_retrieve()
|
||||
config.config_print()
|
||||
|
||||
@@ -8,23 +8,48 @@ vma_start = %s;
|
||||
lma_start = %s;
|
||||
offset = vma_start - lma_start;
|
||||
|
||||
OUTPUT_ARCH(arm)
|
||||
ENTRY(_start)
|
||||
|
||||
PHDRS
|
||||
{
|
||||
rx PT_LOAD;
|
||||
rw PT_LOAD;
|
||||
}
|
||||
|
||||
SECTIONS
|
||||
{
|
||||
. = vma_start;
|
||||
.text : AT (ADDR(.text) - offset) { *(.text.head) *(.text) }
|
||||
.rodata : AT (ADDR(.rodata) - offset) { *(.rodata) }
|
||||
.rodata1 : AT (ADDR(.rodata1) - offset) { *(.rodata1) }
|
||||
|
||||
/* Put all RX, RO sections here */
|
||||
.text : AT (ADDR(.text) - offset)
|
||||
{
|
||||
*(.text.head) *(.text)
|
||||
} : rx = 0x90909090
|
||||
|
||||
.rodata : AT (ADDR(.rodata) - offset)
|
||||
{
|
||||
*(.rodata)
|
||||
} : rx = 0x90909090
|
||||
|
||||
.rodata1 : AT (ADDR(.rodata1) - offset)
|
||||
{
|
||||
*(.rodata1)
|
||||
} : rx = 0x90909090
|
||||
|
||||
. = ALIGN(4K);
|
||||
.data : AT (ADDR(.data) - offset) { *(.data) }
|
||||
|
||||
/* Put all RW sections here */
|
||||
.data : AT (ADDR(.data) - offset)
|
||||
{
|
||||
*(.data)
|
||||
} : rw
|
||||
.bss : AT (ADDR(.bss) - offset)
|
||||
{
|
||||
*(.bss)
|
||||
. += 0x1000;
|
||||
. = ALIGN(8);
|
||||
__stack = .;
|
||||
}
|
||||
} : rw
|
||||
__end = .;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user