|
@@ -1,51 +1,74 @@
|
|
|
-import digital_io
|
|
|
+import inquirer
|
|
|
import time
|
|
|
+import os
|
|
|
+from artery_loader import FlashAT32
|
|
|
+import colorama
|
|
|
+from colorama import Fore
|
|
|
+
|
|
|
|
|
|
class Tester:
|
|
|
|
|
|
- def __init__():
|
|
|
- pass
|
|
|
+ def __init__(self, debug_port):
|
|
|
+ self.debug_port = debug_port
|
|
|
+ colorama.init(autoreset=True)
|
|
|
+
|
|
|
+ def menu(self):
|
|
|
+ questions = [
|
|
|
+ inquirer.List('action',
|
|
|
+ message="Что делаем",
|
|
|
+ choices=['Прошить IAP и FW [MDIO_88]',
|
|
|
+ 'Прошить IAP и FW [MAI_12]',
|
|
|
+ 'Прошить IAP и FW [MAO_4]',
|
|
|
+ 'Получить системные настройки'],
|
|
|
+ ),
|
|
|
+ ]
|
|
|
+ answers = inquirer.prompt(questions)
|
|
|
+ if answers['action'] == 'Прошить IAP и FW [MDIO_88]':
|
|
|
+ self.write_iap_fw('bin_dio/fw.bin', 'bin_iap/iap.bin')
|
|
|
+ elif answers['action'] == 'Прошить IAP и FW [MAI_12]':
|
|
|
+ self.write_iap_fw('bin_ai/fw.bin', 'bin_iap/iap.bin')
|
|
|
+ elif answers['action'] == 'Прошить IAP и FW [MAO_4]':
|
|
|
+ self.write_iap_fw('bin_ao/fw.bin', 'bin_iap/iap.bin')
|
|
|
|
|
|
|
|
|
-def string_to_reg(value: str):
|
|
|
- # test_str = value.ljust(32, ' ')
|
|
|
- # print(f'Len = {len(test_str)}: {test_str}')
|
|
|
- ascii_data = [ord(char) for char in value]
|
|
|
- b = bytes(ascii_data)
|
|
|
- print(len(b))
|
|
|
- if len(b) < 32:
|
|
|
- for _ in range(32 - len(b)):
|
|
|
- b += b'\0'
|
|
|
- print(len(b))
|
|
|
- # print(ascii_data)
|
|
|
- print(b)
|
|
|
+ def write_iap_fw(self, path_to_fw, path_to_iap):
|
|
|
+ print(Fore.YELLOW + "Переведите устройство в режим загрузчика и нажмите 'Enter'")
|
|
|
+ input()
|
|
|
+ print('Начало обновления')
|
|
|
+ start_time = time.time()
|
|
|
|
|
|
+ d = FlashAT32(self.debug_port, 115200 * 8)
|
|
|
+ d.DEBUG_PRINT = True
|
|
|
+ try:
|
|
|
+ d.connect()
|
|
|
+ except Exception as e:
|
|
|
+ print(e)
|
|
|
+ print(Fore.RED + 'Что-то пошло не так!!!')
|
|
|
|
|
|
-def test_value(value):
|
|
|
- if value in [0, 1]:
|
|
|
- print('OK')
|
|
|
- else:
|
|
|
- print('Value error')
|
|
|
+ print(d.get_flash_size())
|
|
|
+ print(d.get_uid_str())
|
|
|
|
|
|
+ d.erase_flash()
|
|
|
+ iap_path = path_to_iap
|
|
|
+ fw_path = path_to_fw
|
|
|
+ iap_path_r = 'artery_iap.bin'
|
|
|
+ fw_path_r = 'artery_fw.bin'
|
|
|
+ d.write_file_to_flash(0x08000000, iap_path)
|
|
|
+ d.write_file_to_flash(0x08021000, fw_path)
|
|
|
|
|
|
-def test_range(value):
|
|
|
- if value in range(60, 65536):
|
|
|
- print('OK')
|
|
|
- else:
|
|
|
- print('Value error')
|
|
|
+ print(Fore.GREEN + f'Запись прошла успешно за {time.time() - start_time} сек.')
|
|
|
|
|
|
|
|
|
+class DUT:
|
|
|
+ def __init__(self):
|
|
|
+ pass
|
|
|
+
|
|
|
|
|
|
def main():
|
|
|
- # print(time.time())
|
|
|
+ tester = Tester('COM53')
|
|
|
+ tester.menu()
|
|
|
|
|
|
- # for i in range(12):
|
|
|
- # data = format(1 << i, '16b')
|
|
|
- # print(data)
|
|
|
|
|
|
- # string_to_reg("Hello world!!!")
|
|
|
- # test_value(3)
|
|
|
- test_range(65536)
|
|
|
|
|
|
if __name__ == '__main__':
|
|
|
main()
|