RETracker - это обратная инженерная структура для трекера полиэнд, написанного на Python. Он основан на неофициальных патчах, которые применяются к прошивке поставщика поставщика. Эти патчи представляют пользовательский обработчик USB, заменив существующий, но неиспользованный обработчик USB Rawhid.
Посмотрите видео с текстовым связлером на подушечках трекера
Пользовательский RETracker's USB-обработчик представляет новые, неофициальные функции для Polyend Tracker , которые можно управлять с компьютера через USB. Одной из этих новых функций является пользовательская и работающая универсальная функциональность переноса файлов, поскольку официальная функциональность переноса файла Polyend Tracker была сломана и, следовательно, была удалена Polyends с введением прошивки v1.4.0.

После исправления новые функции прошивки включают следующее:
Эти функции представляют собой твердую основу для динамического добавления дополнительных функций к Polyend Tracker путем сборки кода-независимого положения на хосте, передачи его в трекер и создавая новый обработчик USB, выполняющий недавно имплантированный код. Есть несколько интенсивных демонстраций, которые можно динамически перенести на устройство.
В дополнение к этому, функции чтения/записи памяти позволяют USB-хосту проверять память Tracker's , создавая шестигранники или разобрав код в режиме ARM или большого пальца.
Наконец, новая функция передачи файлов позволяет копировать произвольные файлы, такие как обновления прошивки или ROMS NES , которые будут копировать в трекер, без необходимости проходить предполагаемый процесс обмена SD -карту между Tracker и компьютером. В настоящее время единственное поддерживаемое направление - от USB -хоста до SD -карты Tracker's .
Счастливого взлома!
Прежде всего, в дополнение к установке Python 3, Relacker требует установки ряда зависимостей. Пожалуйста, проверьте их и убедитесь, что вы все установили, прежде чем продолжить.
Как только все зависимости будут установлены, запуск fwtool.py может быть создана исправленная прошивка.
# python fwtool.py
usage: fwtool.py [-h] [-b | -u | -p] infile outfile
positional arguments:
infile name/path of input file
outfile name/path of output file
optional arguments:
-h, --help show this help message and exit
-b, --build apply RETracker patches to Tracker firmware
-u, --unpack unpack Tracker firmware (.ptf) to binary format
-p, --pack create Tracker firmware (.ptf) from binary
Пример:
# python fwtool.py -b ..PolyendTracker_1.5.0.ptf ..PolyendTracker_1.5.0_retracker.ptf
Opening ..PolyendTracker_1.5.0.ptf
MD5: ce894299bc35996186528364951c901e
Found 1 patch
Assembling patch #1
Description: "Memory dumping/patching/code execution/file transfer via USB"
Decoding input file
Applying patch
Creating output file: ..PolyendTracker_1.5.0_retracker.ptf
Done
Как только прошивка будет успешно построена, ее следует скопировать в папку "/firmware/" на корне его SD -карты. Имя файла изображения прошивки должно начинаться с PolyendTracker_ и заканчиваться .ptf или иным образом, трекер не найдет его. Процедура прошивки прошивки проста и не отличается от обычного процесса.
На устройстве
configFirmwareFirmware updatePolyend TrackerАхтунг !!!
Ожидается, что пользовательский интерфейс будет вести себя по -разному при мигании прошивки. Вероятно, это связано с различиями в формате IntelHex, которые создает
fwtool.py, что еще не изучалось (просто потому, что это все еще приводит к успешно вспыльчивой прошивке).Пожалуйста, терпеливо подождите, пока обновление завершится до перезагрузки устройства. Если что -то все еще пошло не так, пожалуйста, обратитесь к руководству пользователя
Polyend Tracker, в котором объясняются шаги о том, как ввестиemergency update procedure.NB: Я сам прошел многочисленные неудачные процедуры обновления во время разработки, и у меня не было ни одной проблемы с восстановлением хорошей прошивки, используя
emergency update procedure. Тем не менее, я бы не рекомендовал использоватьRETracker, прежде чем сделать резервное копирование SD -карты трекера (проекты, образцы, ...).
Retracker в настоящее время поддерживает Polyend Tracker в версии прошивки 1.5.0. Существует частная версия для прошивки 1.6.0, которая не была выпущена для публики, поскольку полиэнда полностью удалила код, который использовался для реализации исправлений для ретрантерика на прошивке 1.5.0, что затрудняло портирование на прошивку 1.6.0.
Полиэнд Tracker Perdrware Изображения отправлены в формате IntelHex. fwtool.py преобразует прошивку в свой простой бинарный формат, который содержит весь код и данные прошивки. Затем он применяется к исправлениям к конвертированному двоичному файлу в соответствии с информацией, найденной в Tracker/Firmware.py, прежде чем снова преобразовать файл обратно в формат IntelHex. Оттуда, Polyend Tracker может быть связан, подключив его к USB -порту компьютера под управлением retracker.py.
Основной рабочей лошадкой этого проекта, вероятно, является retracker.py , который предоставляет пользователь интерфейс командной строки.
# python retracker.py -h
usage: retracker.py [-h] [-b] [-c] [-r ADDRESS SIZE FILE] [-w ADDRESS DATA] [-x ADDRESS SIZE] [-d ADDRESS SIZE]
[-a POLYP] [--polypargs POLYPARGS [POLYPARGS ...]] [-e ADDRESS] [-t SRC_FILENAME DST_FILENAME]
optional arguments:
-h, --help show this help message and exit
-b break
-c continue
-r ADDRESS SIZE FILE, --readmem ADDRESS SIZE FILE
Save memory to local file
-w ADDRESS DATA, --writemem ADDRESS DATA
Write hex-encoded data to memory ADDRESS
-x ADDRESS SIZE, --hexdump ADDRESS SIZE
Create hex-dump of memory
-d ADDRESS SIZE, --disassemble ADDRESS SIZE
Disassemble code at ADDRESS (ARM/Thumb aware)
-a POLYP, --assemble POLYP
Assemble and execute POLYP patchfile
--polypargs POLYPARGS [POLYPARGS ...]
Optional arguments that can be passed to a POLYP
-e ADDRESS, --exec ADDRESS
Execute code at ADDRESS (ARM/Thumb aware)
-t SRC_FILENAME DST_FILENAME, --transfer SRC_FILENAME DST_FILENAME
Transfer SRC_FILENAME to Tracker's DST_FILENAME
Examples:
Dump memory to file: retracker.py -r 70100000 4f0 dump.bin
Write data to memory: retracker.py -w 70100000 "41 EC FA414142c0"
Hex-dump: retracker.py -x 0 ffff
Disassemble: retracker.py -d 3c01 c000
Assemble and run Polyp: retracker.py -a polyp.scroller --polypargs "hi there!"
Run code in Thumb mode: retracker.py -e 70100001
Run code in ARM mode: retracker.py -e 70100000
Transfer file to Tracker: retracker.py -t PolyendTracker_1.5.0.ptf Firmware/PolyendTracker_cstm.ptf
Примеры:
# python retracker.py -d 0002B99d 100
Connected to Polyend Tracker
Detected fw patch v0.3.0 on Tracker firmware v1.5.0
Disassembling 0002B99C-0002BA9C in Thumb mode
0x0002B99C: push {r4}
0x0002B99E: ldr r4, [pc, #0x6c]
0x0002B9A0: umull ip, r4, r4, r1
0x0002B9A4: lsrs r4, r4, #3
0x0002B9A6: add.w r1, r1, r4, lsl #2
0x0002B9AA: uxtb r1, r1
0x0002B9AC: cmp r3, #0x1f
0x0002B9AE: ite ls
0x0002B9B0: addls r4, r0, r3
0x0002B9B2: addhi.w r4, r0, #0x1f
0x0002B9B6: adds r3, r0, r1
0x0002B9B8: ldrb r4, [r4, #5]
0x0002B9BA: strb.w r4, [r3, #0xc8]
0x0002B9BE: cbz r2, #0x2b9e4
0x0002B9C0: add.w r2, r0, r1, lsr #3
# python retracker.py -x 0002B99d 100
Connected to Polyend Tracker
Detected fw patch v0.3.0 on Tracker firmware v1.5.0
Dumping 0002B99D-0002BA9D
0002b99d b4 1b 4c a4 fb 01 c4 e4 08 01 eb 84 01 c9 b2 1f |..L.............|
0002b9ad 2b 94 bf c4 18 00 f1 1f 04 43 18 64 79 83 f8 c8 |+........C.dy...|
0002b9bd 40 8a b1 00 eb d1 02 01 23 92 f8 b6 40 01 f0 07 |@.......#...@...|
0002b9cd 01 03 fa 01 f1 21 43 82 f8 b6 10 01 23 5d f8 04 |.....!C.....#]..|
0002b9dd 4b 80 f8 b5 30 70 47 00 eb d1 04 01 22 94 f8 b6 |K...0pG....."...|
0002b9ed 30 01 f0 07 01 02 fa 01 f1 23 ea 01 01 84 f8 b6 |0........#......|
0002b9fd 10 01 23 5d f8 04 4b 80 f8 b5 30 70 47 00 bf ab |..#]..K...0pG...|
0002ba0d aa aa aa 00 eb 01 0c 8c f8 c8 30 82 b1 00 eb d1 |..........0.....|
0002ba1d 02 01 23 92 f8 b6 c0 01 f0 07 01 03 fa 01 f1 41 |..#............A|
0002ba2d ea 0c 01 01 23 82 f8 b6 10 80 f8 b5 30 70 47 00 |....#.......0pG.|
0002ba3d eb d1 0c 01 22 9c f8 b6 30 01 f0 07 01 02 fa 01 |...."...0.......|
0002ba4d f1 23 ea 01 01 01 23 8c f8 b6 10 80 f8 b5 30 70 |.#....#.......0p|
0002ba5d 47 00 bf 0f 49 00 23 30 b5 01 f1 3f 05 1c 46 4f |G...I.#0...?..FO|
0002ba6d f0 01 0e 01 e0 11 f8 01 3f c2 18 00 eb d3 0c 82 |........?.......|
0002ba7d f8 c8 40 9c f8 b6 20 03 f0 07 03 0e fa 03 f3 22 |..@... ........"|
0002ba8d ea 03 03 a9 42 8c f8 b6 30 ec d1 80 f8 b5 e0 30 |....B...0......0|
Принимая во внимание, что некоторые из наиболее распространенных параметров командной строки позволяют записать память, читать и гекс, более захватывающими функциями, вероятно, являются параметры -e и -a . Они разрешают выполнять код на устройстве.
Опция -e позволяет существующему коду прошивки разветвляться напрямую или пользовательский код после написания его в память устройства, используя опцию -w . Самый низкий бит аргумента address , переданный в утилиту командной строки retracker.py , указывает, использовать ли режим большого пальца (0: режим ARM, 1: режим большого пальца).
Аргумент -a командной строки принимает так называемые Polyps , которые представляют собой модули Python, содержащие патчи для Polyend Tracker в форме процедур сборки и смещений и данных.
Загрузка любого из этих модулей с использованием параметра -a строки приводит к их процедурам сборки
Пример:
# python retracker.py -a polyp.scroller
Connected to Polyend Tracker
Detected fw patch v0.3.0 on Tracker firmware v1.5.0
Assembling patch #1
Description: "Text scroller on the Tracker's pads"
Target address: 70100000
Mode: thumb
Patching memory
Running code...
Done
Это не только позволяет для удобной и ускоренной разработки пользовательского кода и функций, но и не требует, чтобы новая прошивка была прошит на Tracker для тестирования новых функциональных возможностей (но перезагрузка в худшем случае).
Пожалуйста, посмотрите на доступные модули в папке/ папке, которые содержит несколько начальных демонстраций, которые исчезают и выходят экран Tracker's или перепрофилируют его подушечки в виде холста текстового списколлера.
Считается, что Polyend Tracker основан на µC, аналогичном подростковому 3.6, из которых здесь доступны листы данных и другую техническую информацию. Обязательно ознакомьтесь с руководством MK66FX для карты памяти, чтобы избежать столкновения с сбоями устройства при сбрасывании памяти.
Изображение прошивки Tracker находится в формате IntelHex и может быть распаковано с использованием fwtool.py или загружено непосредственно разборщиками, поддерживающими формат IntelHex, такой как IDA Pro Disassembler и, вероятно, другие, такие как Ghidra или бинарная ниндзя. Модуль процессора для выбора-ARM / Little-Endian. Прошивка должна быть загружена по адресу 0. Адрес/Offset 4 - это вектор сброса с указателем на обработчик сброса вектора (запуск разборки там). Большинство, если не весь его код запускается в режиме большого пальца. Я нашел адрес 0x70100000 и выше, чтобы быть надежным адресом для посадки Polyp и запуска своего кода оттуда.
Если вы хотите сделать разработку прошивки, возьмите копию как Arduino, так и Adensyduino Addon, построите некоторые примеры и пропустите полученные файлы .hex на трекер (обязательно выберите Teensy 3.6 и переименованы в полученный .hex -файл в что -то вроде PolyendTracker_teensy.ptf ). Возвращение к оригинальной прошивке Polyend Tracker будет возможно в любое время, используя процедуру аварийного обновления трекера, поскольку она находится на отдельном чипе, который не затронут/перезаписывается обновлениями прошивки.

Вики -ретрокер можно найти здесь.
Пожалуйста, примите участие в дискуссиях и расскажите всем о своем опыте работы с ретрокжером и о том, как вы его используете!
Автор не несет никакой ответственности за какой -либо ущерб, который этот проект может нанести вашему трекеру полиэнд. Используя Retracker или любую полученную информацию, вы соглашаетесь с тем, что вы используете любой из кода этого проекта, данные и другую информацию на ваш собственный риск.