|
|
@@ -191,6 +191,40 @@ def merge_working_only():
|
|
|
print(f"Итоговый размер: {final_size} байт")
|
|
|
return final_size
|
|
|
|
|
|
+def merge_test_only():
|
|
|
+ # Пути к файлам
|
|
|
+ os.chdir(INITIAL_DIR)
|
|
|
+ pwd = os.getcwd()
|
|
|
+ file_path_test = os.path.join(INITIAL_DIR, "SB_TMSG44V1_FPGA_TEST.bin")
|
|
|
+ file_path_output = os.path.join(INITIAL_DIR, "SB_TMSG44V1_TEST_FPGA.bin")
|
|
|
+ # Размеры файлов
|
|
|
+ file_size_test = os.path.getsize(file_path_test)
|
|
|
+ # Размер выходного файла - 8 Мбит
|
|
|
+ file_size_output = 0x1000000
|
|
|
+ # Записываем первый файл
|
|
|
+ with open(file_path_output,'wb') as outfile:
|
|
|
+ with open(file_path_test, 'rb') as f1:
|
|
|
+ shutil.copyfileobj(f1, outfile)
|
|
|
+ # Перемещаемся к адресу для пользовательских данных
|
|
|
+ outfile.seek(APP_VER_ADDRESS)
|
|
|
+ test_tag = find_tag("_TEST")
|
|
|
+ print(f"Текущий test git tag: {test_tag}")
|
|
|
+ # Если полученный тег меньше 32 байт, то дополняем его до 32 байт
|
|
|
+ encoded_test_tag = test_tag.encode('utf-8')
|
|
|
+ if len(encoded_test_tag) < 32:
|
|
|
+ encoded_test_tag = encoded_test_tag.ljust(32, b'\x00')
|
|
|
+ # Записываем тег в файл
|
|
|
+ outfile.write(encoded_test_tag)
|
|
|
+ final_size = os.path.getsize(file_path_output)
|
|
|
+ # Проверка итогового размера
|
|
|
+ if final_size > file_size_output:
|
|
|
+ os.remove(file_path_output) # Удаляем некорректный файл
|
|
|
+ raise ValueError(f"Итоговый размер файла ({final_size} байт) превысил максимально допустимый ({file_size_output} байт)")
|
|
|
+ print(f"Размер файла: {file_size_test} байт")
|
|
|
+ print(f"Итоговый размер: {final_size} байт")
|
|
|
+ return final_size
|
|
|
+
|
|
|
+
|
|
|
def merge_golden_only():
|
|
|
# Пути к файлам
|
|
|
os.chdir(INITIAL_DIR)
|
|
|
@@ -239,16 +273,19 @@ def main():
|
|
|
print("1. merge - объединить Working и Golden прошивки")
|
|
|
print("2. working - объединить только Working прошивку с её версией")
|
|
|
print("3. golden - объединить только Golden прошивку с её версией")
|
|
|
+ print("4. test - объединить только Test прошивку с её версией")
|
|
|
|
|
|
choice = ""
|
|
|
- while choice not in ["1", "2", "3", "merge", "working", "golden"]:
|
|
|
- choice = input("Введите номер (1-3) или название режима: ").strip().lower()
|
|
|
+ while choice not in ["1", "2", "3","4", "merge", "working", "golden","test"]:
|
|
|
+ choice = input("Введите номер (1-4) или название режима: ").strip().lower()
|
|
|
if choice == "1":
|
|
|
choice = "merge"
|
|
|
elif choice == "2":
|
|
|
choice = "working"
|
|
|
elif choice == "3":
|
|
|
choice = "golden"
|
|
|
+ elif choice == "4":
|
|
|
+ choice = "test"
|
|
|
|
|
|
mode = choice
|
|
|
else:
|
|
|
@@ -263,6 +300,9 @@ def main():
|
|
|
elif mode == 'golden':
|
|
|
print("Объединение только Golden прошивки с её версией...")
|
|
|
merge_golden_only()
|
|
|
+ elif mode == 'test':
|
|
|
+ print("Объединение только Test прошивки с её версией...")
|
|
|
+ merge_test_only()
|
|
|
|
|
|
|
|
|
|