Выражения и память: evaluate, memory, symbol

Значение выражения нужного типа; байты SRAM/Flash по адресу символа.

с 0.3.0

Методы

ЭлементСигнатураДоступен сAPI 3
evaluateevaluate(expression, *, as_type=None)0.3.0без вызовов в выражении
memorymemory(address, size | data, *, verify=None)0.3.0без изменений
symbolsymbol(name) -> dict0.3.0без изменений

Изменения API 3 (0.5.0)

await не нужен. memory ограничена окнами SRAM и Flash; неполный ответ — ошибка.

Правильно

Снимок объекта байтами до воздействия и восстановление после.

version = t.evaluate("app_info.version", as_type=str)
state = t.symbol("app_state")
snapshot = t.memory(state["address"], state["size"])
t.call("app_step", timeout=2)               # changes app_state
t.memory(state["address"], snapshot)

Не рекомендуется

memory по адресу периферии отклоняется: это не обход MMIO. Вызов функции внутри evaluate отклоняется — используйте call.

t.memory(0x40020014, 4)           # peripheral window: refused
t.evaluate("crc32(buffer, 16)")   # hidden call: refused

Фрагменты показывают отклонённые или нежелательные приёмы, а не рабочий рецепт.

Фрагменты для тела сценария; символы прошивки условные.

← ДанныеВсе группыРегистры →