!
        @brief Flash one or more pages.
        
        @exception FlashProgramFailure

def program_page(self, address, bytes):
        """!
        @brief Flash one or more pages.
        
        @exception FlashProgramFailure
        """
        assert self._active_operation == self.Operation.PROGRAM

        # prevent security settings from locking the device
        bytes = self.override_security_bits(address, bytes)

        # first transfer in RAM
        self.target.write_memory_block8(self.begin_data, bytes)

        # update core register to execute the program_page subroutine
        result = self._call_function_and_wait(self.flash_algo['pc_program_page'], address, len(bytes), self.begin_data)

        # check the return code
        if result != 0:
            raise FlashProgramFailure('program_page(0x%x) error: %i' % (address, result), address, result)