Перейти на компактные 12-словные записи v4 и сохранять 10 процентов банка после отключения. Добавить трёхсекундное ожидание роста ЗПТ и настраиваемый лимит пусков. Явно инициализировать состояние UART и гарантировать публикацию параметров EEPROM перед запуском Timer2. Сохранить воспроизводимые сборки, регрессионные проверки, документацию и обновлённые результаты сборки; исключить временные артефакты.
19 lines
2.6 KiB
Python
19 lines
2.6 KiB
Python
import re # Разбирает инструкции текстового дизассемблера TI C2000.
|
||
import sys # Получает путь к проверяемому листингу OUT.
|
||
from pathlib import Path # Читает сохранённый результат dis2000.
|
||
text = Path(sys.argv[1]).read_text(encoding="utf-8-sig") # Использует UTF-8-вывод дизассемблера.
|
||
for name in ("Seeprom_read", "Seeprom_write"): # Проверяет оба пути публикации задания Timer2.
|
||
match = re.search(r"^\w+\s+_" + name + r":$", text, re.M) # Находит начало настоящей функции в готовом OUT.
|
||
assert match, "Missing function: " + name # Не допускает успешной проверки неполного листинга.
|
||
body = text[match.end():] # Отделяет инструкции от заголовка функции.
|
||
end = re.search(r"^\w+\s+_\w+:$", body, re.M) # Ограничивает анализ следующим именованным символом.
|
||
body = body[:end.start()] if end else body # Не учитывает записи из другой функции.
|
||
request = re.search(r"\bOR\s+\*\+XAR\d\[2\], #0x000[12]", body) # Находит установку запроса чтения 2 или записи 1 в csr.
|
||
assert request, "Missing request publication: " + name # Требует известную форму TI O3, иначе проверку нужно пересмотреть.
|
||
stores = re.findall(r"\bMOVL\s+\*\+XAR(\d)\[(0|2|4)\],", body[:request.start()]) # Собирает только записи, выполненные до публикации запроса.
|
||
groups = {} # Группирует смещения полей по базовому регистру дескриптора.
|
||
for register, offset in stores: # Обрабатывает каждую инструкцию записи 32-битного поля.
|
||
groups.setdefault(register, set()).add(int(offset)) # Отмечает указатель 0, длину 2 и адрес 4 в словах C28x.
|
||
assert any({0, 2, 4} <= offsets for offsets in groups.values()), "Descriptor stores follow request/wait: " + name # Отвергает установленный дефект с отложенными до выхода из ожидания параметрами.
|
||
print("PASS TI O3 publication: " + name) # Подтверждает порядок инструкций конкретной функции в данном OUT.
|