def write_reserved_memory_region(bl, memType, usingSbComamnd=False): (reservedMemStartAddress, reservedMemEndAddress, reservedMemSize) = common_util.get_reserved_memory_region(bl, memType) if (reservedMemSize == 0): # ROM has no reserved flash region print('No reserved region for %s memory.' % (memType.upper())) return else: writeStartAddress = reservedMemStartAddress writeBytesLength = reservedMemSize writeEndAddress = writeStartAddress + writeBytesLength binFilePath = common_util.generate_random_data_file( bl, writeStartAddress, writeBytesLength) if (usingSbComamnd == True): bdContent = SBFile.bd_content_init(bl, needSign=False) bdContent = SBFile.bd_content_update_for_write_memory( bdContent, binFilePath, writeStartAddress, writeEndAddress) bdFile = SBFile.bd_content_finish(bl, bdContent) sbFile = SBFile.generate_sb_file(bl, bdFile, needEncrypt=False, encryptionKey=None, needSign=False, s=[], S=[], R=[]) status, results = bl.receive_sb_file(sbFile) else: status, results = bl.write_memory(writeStartAddress, binFilePath) assert status == bootloader.status.kStatusMemoryRangeInvalid
def fill_reserved_memory_region(bl, memType, usingSbComamnd=False): (reservedMemStartAddress, reservedMemEndAddress, reservedMemSize) = common_util.get_reserved_memory_region(bl, memType) if (reservedMemSize == 0): # ROM has no reserved flash region print('No reserved region for %s memory.' % (memType.upper())) return else: fillStartAddress = reservedMemStartAddress fillBytesLength = reservedMemSize fillEndAddress = fillStartAddress + fillBytesLength if (usingSbComamnd == True): bdContent = SBFile.bd_content_init(bl, needSign=False) bdContent = SBFile.bd_content_update_for_fill_memory( bdContent, kFillPattern, 'byte', fillStartAddress, fillEndAddress) bdFile = SBFile.bd_content_finish(bl, bdContent) sbFile = SBFile.generate_sb_file(bl, bdFile, needEncrypt=False, encryptionKey=None, needSign=False, s=[], S=[], R=[]) status, results = bl.receive_sb_file(sbFile) else: status, results = bl.fill_memory(fillStartAddress, fillBytesLength, kFillPattern, 'byte') assert status == bootloader.status.kStatusMemoryRangeInvalid
def erase_reserved_memory_region(bl, memType, usingSbComamnd=False): (reservedMemStartAddress, reservedMemEndAddress, reservedMemSize) = common_util.get_reserved_memory_region(bl, memType) if (reservedMemSize == 0): # ROM has no reserved flash region print('No reserved region for %s memory.' % (memType.upper())) return else: eraseStartAddress = reservedMemStartAddress eraseBytesLength = reservedMemSize eraseEndAddress = eraseStartAddress + eraseBytesLength if (usingSbComamnd == True): bdContent = SBFile.bd_content_init(bl, needSign=False) bdContent = SBFile.bd_content_update_for_flash_erase_region( bdContent, eraseStartAddress, eraseEndAddress) bdFile = SBFile.bd_content_finish(bl, bdContent) sbFile = SBFile.generate_sb_file(bl, bdFile, needEncrypt=False, encryptionKey=None, needSign=False, s=[], S=[], R=[]) status, results = bl.receive_sb_file(sbFile) else: status, results = bl.flash_erase_region(eraseStartAddress, eraseBytesLength) if (memType == 'ram'): assert status == bootloader.status.kStatus_FlashAddressError elif (memType == 'flash'): assert status == bootloader.status.kStatusMemoryRangeInvalid
def read_reserved_memory_region(bl, memType): (reservedMemStartAddress, reservedMemEndAddress, reservedMemSize) = common_util.get_reserved_memory_region(bl, memType) if (reservedMemSize == 0): # ROM has no reserved flash region print('No reserved region for %s memory.' % (memType.upper())) return else: print("\nRead data from reserved memory region:"), readDataFile = os.path.join(bl.vectorsDir, 'read_data_from_memory.bin') status, results = bl.read_memory(reservedMemStartAddress, reservedMemSize, readDataFile) assert status == bootloader.status.kStatus_Success
def test_sb_fill_all_reserved_region(self, bl, memType): sb_commandDictionay['fillMemory'].cumulativeFill = False startAddress, endAddress, length = common_util.get_reserved_memory_region( bl, memType) if length == 0: pass # ROM has no reserved flash region else: sb_commandDictionay['fillMemory'].pattern = kFilledValue sb_commandDictionay['fillMemory'].patternFormat = 'word' sb_commandDictionay['fillMemory'].startAddress = startAddress sb_commandDictionay[ 'fillMemory'].endAddress = startAddress + length sbFilePath = sb_command.generate_sb_file(bl, 'unencrypted', '', 'fillMemory') status, results = bl.receive_sb_file(sbFilePath) assert status == bootloader.status.kStatusMemoryRangeInvalid
def test_sb_erase_all_reserved_region(self, bl, memType): startAddress, endAddress, length = common_util.get_reserved_memory_region( bl, memType) sb_commandDictionay['flashEraseRegion'].startAddress = startAddress sb_commandDictionay[ 'flashEraseRegion'].endAddress = startAddress + length sbFilePath = sb_command.generate_sb_file(bl, 'unencrypted', '', 'flashEraseRegion') status, results = bl.receive_sb_file(sbFilePath) if memType == 'flash': # ROM has no reserved region, erase zero length flash should return kStatus_Success, otherwise kStatusMemoryRangeInvalid if length == 0: assert status == bootloader.status.kStatus_Success else: assert status == bootloader.status.kStatusMemoryRangeInvalid elif memType == 'ram': # erase ram region (including available region and reserved reigion) should return kStatus_FlashAddressError assert status == bootloader.status.kStatus_FlashAddressError
def test_sb_write_all_reserved_region(self, bl, memType): sb_commandDictionay['writeMemory'].cumulativeWrite = False startAddress, endAddress, length = common_util.get_reserved_memory_region( bl, memType) if length == 0: pass # ROM has no flash reserved region. else: sb_commandDictionay['writeMemory'].length = length sb_commandDictionay[ 'writeMemory'].data = common_util.generate_random_data_file( bl, startAddress, length) sb_commandDictionay['writeMemory'].dataType = 'file_bin' sb_commandDictionay['writeMemory'].startAddress = startAddress sb_commandDictionay[ 'writeMemory'].endAddress = startAddress + length sbFilePath = sb_command.generate_sb_file(bl, 'unencrypted', '', 'writeMemory') status, results = bl.receive_sb_file(sbFilePath) assert status == bootloader.status.kStatusMemoryRangeInvalid