Раб ота c TMPM370
RAM loader
Для работы с TMPM370 используется кастомный 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 24C04 на шине I2C, а некоторые также EEPROM 93C66 на шине SPI.
Это означает, что нет необходимости разбирать модуль, менять подключение - работа с каждым target (TMPM, 24C04, 93C66) идёт с одного разъёма. Для выбора target в Target Selector-e выбираем либо TMPM370, либо TMPM370 + нужный вид EEPROM.
Для примера 24C04. RAM Loader здесь работает следующим образом:
- TMPM находится под нашим управлением - там наш RAM Loader.
- TMPM получает от TGSN команду прочитать например 24C04.
- Он обращается на шину I2C и читает или пишет 24C04.
- При отсутствии на шине I2C 24C04 мы получим ошибку.
С SPI (93C66) все сложнее.
93С66 с завода не имеет никакой обратной связи на Connect, Read - только на Write/Erase.
93C66:
- TMPM получает от TGSN команду прочитать например 93C66.
- Он обращается на шину SPI, технически нет н икакой возможности определить есть там 93C66 или нет.
- Он читает шину SPI, eсли например 93C66 нет на плате, на шине может быть что угодно, но обычно мы получим нули.
- Проверить 93C66 можно только командами Write/Erase.
Обязательно ли стирать EEPROM перед записью?
Да, обязательно или будет Target BlankCheck error.
Такова наша концепция: перед записью пользователь должен стереть память, чтобы нивелировать риски случайной перезаписи.
Подключение
