Примеры скриптов
Встроены в MultiProg в scripts/examples/:
| Скрипт | Что делает |
|---|---|
hello.lua | Показывает конфигурацию и регионы памяти |
bsh_pmm.lua | Чтение строки модели из буфера МК, экспорт S19 с именем модели |
read_and_verify.lua | Чтение прошивки и верификация |
batch_flash.lua | Полный цикл прошивки с таймером |
firmware_analysis.lua | Анализ прошивки: ARM vectors, строки, CRC, использование flash |
hex_patch.lua | Find / replace, заливка, контрольные суммы |
mass_production.lua | Серийное программирование с серийниками и CSV-логом |
target_search.lua | Поиск таргетов в базе по ключевому слову |
search_and_compare.lua | Multi-pattern поиск + сравнение таргетов |
create_target.lua | Создание кастомного таргета со схемой подключения |
create_tgsn_target.lua | Создание TGSN-таргета |
renesas_nec_checksum.lua | Калькулятор SUM-RL78 (см. Чексум-скрипты) |
stm32_g0_g4_export_mot.lua | Экспорт буфера STM32 G0 / G4 в .mot для J-Link |
stm32f7_option_bytes_stvp_convert.lua | Конвертация Option Bytes STM32F7 ↔ STVP S19 |
extended_ops_smoke.lua | Smoke-тест расширенных write / erase операций |
debug_test.lua | Демо отладчика: breakpoints, инспекция переменных |
Learning Lua
Lua — компактный, быстрый, легко изучаемый скриптовый язык. Если хочется выучить или потестировать Lua вне MultiProg:
Онлайн (без установки)
- Lua в браузере: https://www.lua.org/demo.html
- Учебник: https://www.lua.org/pil/contents.html (Programming in Lua, бесплатное онлайн-издание)
Локальная установка (Windows)
- Скачайте https://github.com/rjpcomputing/luaforwindows (Lua for Windows — включает редактор).
- Или через Scoop:
scoop install lua. - Запустите
lua54.exeв терминале для интерактивного режима.
Ключевые отличия от других языков
- Массивы начинаются с индекса 1 (не с 0).
~=для «не равно» (не!=)...для конкатенации строк (не+).localдля локальных переменных (без него — глобальные).nilвместоnull.- Таблицы — единственная структура данных (и массивы, и словари, и объекты).
#tableдаёт длину массивоподобной таблицы.- Точки с запятой не нужны.
Краткий справочник
-- Переменные
local x = 42
local name = "MultiProg"
local ok = true
-- Строки
local s = "Hello " .. "World" -- конкатенация
local len = #s -- длина
local sub = string.sub(s, 1, 5) -- "Hello"
-- Таблицы (массивы)
local arr = {10, 20, 30}
for i, v in ipairs(arr) do print(i, v) end
-- Таблицы (словари)
local cfg = {target = "STM32", power = "3v3"}
print(cfg.target)
-- Функции
local function add(a, b) return a + b end
-- If / else
if x > 10 then
print("big")
elseif x > 0 then
print("small")
else
print("zero or negative")
end
-- For
for i = 1, 10 do print(i) end
-- While
while x > 0 do x = x - 1 end
-- Множественный возврат
local ok, err = mp.backend.connect()
-- Форматирование строк
local s = string.format("Value: 0x%04X (%d bytes)", 0xFF, 16)