Construct a PackFlashAlgorithm from an ElfFileSimple
(self, data)
| 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 | """" |
no test coverage detected