Работа c TMPM370 / TMPM470
RAM loader
Для работы с TMPM370 и TMPM470 используется кастомный RAM Loader. Что это такое?
Bootloader, ram loader, flash routine — базовые понятия программирования устройств.
RAM (ОЗУ) — оперативная память, память с произвольным доступом.
Loader, Bootloader (Загрузчик) — специальная программа, которая
может перезаписать Flash-память. Обычно контроллер стартует с запуска
Bootloader (Boot — загрузка), далее переключается на пользовательский
код. Чтобы не было путаницы, загрузчик, который загружен уже после
запуска, называют Loader.
Flash routine, flash algorithm (Flash-алгоритм) — подпрограмма
в загрузчике для непосредственной записи Flash-памяти. Уровень ниже,
чем загрузчик; часто инкапсулирована, то есть мы имеем доступ только
к загрузчику.
Почему Loader (загрузчик) загружают в RAM?
RAM позволяет записать произвольный код (не определённого размера, не по секторам) и сохранить его до выключения питания или reset. Этот код также можно выполнить.
Получается, мы написали код, загрузили его в RAM MCU и дальше он его выполняет?
Да, верно.
А зачем писать свой Loader (загрузчик)?
Свой загрузчик даёт полный контроль, позволяет реализовать любой
функционал в удобном варианте. Часто заводской загрузчик (причём
это уже Bootloader) ограничен по функционалу, имеет неудобные
команды управления, какие-то команды могут быть не реализованы.
Что кастомный RAM Loader даёт в контексте TMPM?
Например, EEPROM: платы, для которых был создан модуль TMPM, имеют на борту EEPROM рядом с МК.
| МК | EEPROM 1 (I2C) | EEPROM 2 (SPI) |
|---|---|---|
| TMPM370 | 24C04 | 93C66 |
| TMPM470 | — | 93C86 |
- TMPM370 — на платах обычно стоит 24C04 (I2C) и иногда 93C66 (SPI).
- TMPM470 (поддерживается с MultiProg 2.3.0) — только 93C86 SPI EEPROM. I2C-EEPROM на TMPM470 не поддерживается.
Это означает, что нет необходимости разбирать модуль, менять подключение — работа с каждым target (МК и его EEPROM) идёт с одного разъёма. В Target Selector выбираем:
- TMPM370 / TMPM370_24C04 / TMPM370_93C66, либо
- TMPM470 / TMPM470_93C86.
Как работает RAM Loader (на примере 24C04)
- TMPM находится под нашим управлением — там наш RAM Loader.
- TMPM получает от TGSN команду прочитать, например, 24C04.
- Он обращается на шину I2C и читает или пишет 24C04.
- При отсутствии на шине I2C 24C04 мы получим ошибку.
С SPI (93C66 / 93C86) всё сложнее.
93C66 / 93C86 с завода не имеет никакой обратной связи на Connect, Read — только на Write / Erase.
93C66 / 93C86
- TMPM получает от TGSN команду прочитать SPI EEPROM.
- Он обращается на шину SPI; технически нет никакой возможности определить, есть там EEPROM или нет.
- Он читает шину SPI; если EEPROM нет на плате, на шине может быть что угодно, но обычно мы получим нули.
- Проверить наличие EEPROM можно только кома ндами Write / Erase.
Обязательно ли стирать EEPROM перед записью?
Да, обязательно — иначе будет Target BlankCheck error. Такова наша
концепция: перед записью пользователь должен стереть память, чтобы
нивелировать риски случайной перезаписи.
Подключение

Подключение по 5-проводной AbstractTable одинаково для обоих
семейств: BOOT → GND, TxD → TOOL0, RxD → RX, +5V → 5V,
GND → GND. RESET не используется.