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

Работа 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)
TMPM37024C0493C66
TMPM47093C86
  • 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)

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

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

warning

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

93C66 / 93C86

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

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

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

Подключение

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

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