MCPcopy Create free account
hub / github.com/ARMmbed/DAPLink / __init__

Method __init__

tools/flash_algo.py:73–109  ·  view source on GitHub ↗

Construct a PackFlashAlgorithm from an ElfFileSimple

(self, data)

Source from the content-addressed store, hash-verified

71 ])
72
73 def __init__(self, data):
74 """Construct a PackFlashAlgorithm from an ElfFileSimple"""
75 self.elf = ElfFileSimple(data)
76 self.flash_info = PackFlashInfo(self.elf)
77
78 self.flash_start = self.flash_info.start
79 self.flash_size = self.flash_info.size
80 self.page_size = self.flash_info.page_size
81 self.sector_sizes = self.flash_info.sector_info_list
82
83 symbols = {}
84 symbols.update(_extract_symbols(self.elf, self.REQUIRED_SYMBOLS))
85 symbols.update(_extract_symbols(self.elf, self.EXTRA_SYMBOLS,
86 default=0xFFFFFFFF))
87 self.symbols = symbols
88
89 sections_to_find = (
90 ("PrgCode", "SHT_PROGBITS"),
91 ("PrgData", "SHT_PROGBITS"),
92 ("PrgData", "SHT_NOBITS"),
93 )
94
95 ro_rw_zi = _find_sections(self.elf, sections_to_find)
96 ro_rw_zi = _algo_fill_zi_if_missing(ro_rw_zi)
97 error_msg = _algo_check_for_section_problems(ro_rw_zi)
98 if error_msg is not None:
99 raise Exception(error_msg)
100
101 sect_ro, sect_rw, sect_zi = ro_rw_zi
102 self.ro_start = sect_ro["sh_addr"]
103 self.ro_size = sect_ro["sh_size"]
104 self.rw_start = sect_rw["sh_addr"]
105 self.rw_size = sect_rw["sh_size"]
106 self.zi_start = sect_zi["sh_addr"]
107 self.zi_size = sect_zi["sh_size"]
108
109 self.algo_data = _create_algo_bin(ro_rw_zi)
110
111 def format_algo_data(self, spaces, group_size, fmt):
112 """"

Callers 1

__init__Method · 0.45

Calls 7

ElfFileSimpleClass · 0.85
PackFlashInfoClass · 0.85
_extract_symbolsFunction · 0.85
_find_sectionsFunction · 0.85
_algo_fill_zi_if_missingFunction · 0.85
_create_algo_binFunction · 0.85

Tested by

no test coverage detected