Перейти к основному содержимому

Работа 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 здесь работает следующим образом:

  1. TMPM находится под нашим управлением - там наш RAM Loader.
  2. TMPM получает от TGSN команду прочитать например 24C04.
  3. Он обращается на шину I2C и читает или пишет 24C04.
  4. При отсуствии на шине I2C 24C04 мы получим ошибку.

С SPI (93C66) все сложнее.

warning

93С66 с завода не имеет никакой обратной связи на Connect, Read - только на Write/Erase.

93C66:

  1. TMPM получает от TGSN команду прочитать например 93C66.
  2. Он обращается на шину SPI, технически нет никакой возможности определить есть там 93C66 или нет.
  3. Он читает шину SPI, сли например 93C66 нет на плате, на шине может быть что угодно, но обычно мы получим нули.
  4. Проверить 93C66 можно только командами Write/Erase.

Обязательно ли стирать EEPROM перед записью?

Да, обязательно или будет Target BlankCheck error. Такова наша концепция: перед записью пользователь должен стереть память, чтобы нивелировать риски случайной перезаписи.

Подключение

Базовое подключение