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