diff --git a/Bootup Logo/Logos/IronOS.dfu b/Bootup Logo/Logos/IronOS.dfu new file mode 100644 index 00000000..cc41cce2 Binary files /dev/null and b/Bootup Logo/Logos/IronOS.dfu differ diff --git a/Bootup Logo/Logos/Pinecil.bin b/Bootup Logo/Logos/Pinecil.dfu similarity index 66% rename from Bootup Logo/Logos/Pinecil.bin rename to Bootup Logo/Logos/Pinecil.dfu index 5d3834a6..bfa0f10a 100644 Binary files a/Bootup Logo/Logos/Pinecil.bin and b/Bootup Logo/Logos/Pinecil.dfu differ diff --git a/Bootup Logo/Logos/Pinecil_L.bin b/Bootup Logo/Logos/Pinecil_L.dfu similarity index 69% rename from Bootup Logo/Logos/Pinecil_L.bin rename to Bootup Logo/Logos/Pinecil_L.dfu index f6e4ec00..5142a4e2 100644 Binary files a/Bootup Logo/Logos/Pinecil_L.bin and b/Bootup Logo/Logos/Pinecil_L.dfu differ diff --git a/Bootup Logo/python_logo_converter/img2ts100.py b/Bootup Logo/python_logo_converter/img2ts100.py index 3759c153..3e5239fb 100644 --- a/Bootup Logo/python_logo_converter/img2ts100.py +++ b/Bootup Logo/python_logo_converter/img2ts100.py @@ -1,8 +1,7 @@ #!/usr/bin/env python # coding=utf-8 from __future__ import division -import os -import sys +import os, sys, struct, zlib try: @@ -13,7 +12,7 @@ except ImportError as error: "management tool." .format(error, sys.argv[0])) -VERSION_STRING = '0.02' +VERSION_STRING = '0.03' LCD_WIDTH = 96 LCD_HEIGHT = 16 @@ -26,12 +25,23 @@ INTELHEX_EXTENDED_LINEAR_ADDRESS_RECORD = 0x04 INTELHEX_BYTES_PER_LINE = 16 INTELHEX_MINIMUM_SIZE = 4096 +DFU_PINECIL_ALT = 0 +DFU_PINECIL_VENDOR = 0x28e9 +DFU_PINECIL_PRODUCT = 0x0189 +DFU_LOGO_ADDRESS = 0x0801F800 +DFU_TARGET_NAME = b"Pinecil" +DFU_PREFIX_SIZE = 11 +DFU_SUFFIX_SIZE = 16 def split16(word): """return high and low byte of 16-bit word value as tuple""" return (word >> 8) & 0xff, word & 0xff +def compute_crc(data): + return 0xFFFFFFFF & -zlib.crc32(data) - 1 + + def intel_hex_line(record_type, offset, data): """generate a line of data in Intel hex format""" # length, address offset, record type @@ -82,6 +92,32 @@ def intel_hex(file, bytes_, start_address=0x0): write(intel_hex_line(INTELHEX_END_OF_FILE_RECORD, 0, ())) +def build_dfu(file, bytes_): + data = b"" + for byte in bytes_: + data += byte.to_bytes(1, byteorder="big") + + data = ( + struct.pack("<2I", DFU_LOGO_ADDRESS, len(data)) + data + ) + data = ( + struct.pack( + "<6sBI255s2I", b"Target", DFU_PINECIL_ALT, 1, DFU_TARGET_NAME, len(data), 1 + ) + + data + ) + data = ( + struct.pack( + "<5sBIB", b"DfuSe", 1, DFU_PREFIX_SIZE + len(data) + DFU_SUFFIX_SIZE, 1 + ) + + data + ) + data += struct.pack("<4H3sB", 0, DFU_PINECIL_PRODUCT, DFU_PINECIL_VENDOR, 0x011A, b"UFD", DFU_SUFFIX_SIZE) + crc = compute_crc(data) + data += struct.pack("", "TipDisconnectedString": "ЖАЛО ОТСОЕДИНЕНО", "SolderingAdvancedPowerPrompt": "Питание: ", - "OffString": "Выкл.", - "YourGainMessage": "Прирост:" + "OffString": "Вык" }, "messagesWarn": { "ResetOKMessage": "Сброс OK", "SettingsResetMessage": ["Настройки", "сброшены!"], "NoAccelerometerMessage": ["Не определен", "акселерометр!"], - "NoPowerDeliveryMessage": ["No USB-PD IC", "detected!"], - "LockingKeysString": "LOCKED", - "UnlockingKeysString": "UNLOCKED", - "WarningKeysLockedString": "!LOCKED!", + "NoPowerDeliveryMessage": ["USB-PD питание", "не обнаружено"], + "LockingKeysString": "ЗАБЛОК", + "UnlockingKeysString": "РАЗБЛОК", + "WarningKeysLockedString": "!ЗАБЛОК!", "WarningThermalRunaway": ["Thermal", "Runaway"] }, "characters": { "SettingRightChar": "П", "SettingLeftChar": "Л", "SettingAutoChar": "А", - "SettingOffChar": "O", + "SettingOffChar": "О", "SettingSlowChar": "М", - "SettingMediumChar": "M", + "SettingMediumChar": "С", "SettingFastChar": "Б", "SettingStartNoneChar": "В", "SettingStartSolderingChar": "П", @@ -131,7 +126,7 @@ }, "VoltageCalibration": { "text2": ["Калибровка", "напряжения"], - "desc": "Калибровка входного напряжения (длинное нажатие для выхода)" + "desc": "Калибровка входного напряжения (долгое нажатие для выхода)" }, "AdvancedSoldering": { "text2": ["Подробный", "экран пайки"], @@ -170,7 +165,7 @@ "desc": "Сила импульса удерживающего от сна повербанк или другой источник питания" }, "HallEffSensitivity": { - "text2": ["Эффект Холла", "чувствительность"], + "text2": ["Датчик", "Холла"], "desc": "Уровень чувствительности датчика холла в режиме сна (О=Отключено | Н=Низкий | С=Средний | В=Высокий)" }, "LockingMode": { @@ -199,7 +194,7 @@ }, "LanguageSwitch": { "text2": ["Язык:", " RU Русский"], - "desc": "" + "desc": "Язык прошивки" }, "Brightness": { "text2": ["Яркость", "экрана"],