Добавить загрузку F28335 по ProtoCAN и сервисные команды клиента
This commit is contained in:
@@ -63,6 +63,10 @@ BlockIndex = 0x0000…0xFFFF
|
||||
| `0x09` | `REBOOT` | 0 | отсутствует | активная сессия |
|
||||
| `0x0A` | `ABORT` | 0 | отсутствует | активная сессия |
|
||||
| `0x0B` | `QUERY_PROGRESS` | 0 | отсутствует | активная сессия |
|
||||
| `0x0C` | `PING` | 0 | отсутствует | любое |
|
||||
| `0x0D` | `CAPABILITIES` | 0 | отсутствует | любое, при поддержке порта |
|
||||
| `0x0E` | `DEVICE_NAME` | 1 | номер страницы имени | любое, при поддержке порта |
|
||||
| `0x0F` | `MEMORY_INFO` | 1 | номер страницы памяти | любое, при поддержке порта |
|
||||
|
||||
### `BEGIN_IMAGE`
|
||||
|
||||
@@ -81,7 +85,8 @@ DATA[4..7] FirmwareVersion, uint32 little-endian
|
||||
```
|
||||
|
||||
До `ERASE` прибор обязан получить обе части метаданных и проверить размер,
|
||||
тип изделия, аппаратную ревизию, версию и политику anti-rollback.
|
||||
тип изделия и аппаратную ревизию. Проверка версии/anti-rollback выполняется
|
||||
только при наличии соответствующей политики платформы (callback authorize).
|
||||
|
||||
## `BOOT_STATUS`
|
||||
|
||||
@@ -181,3 +186,16 @@ Boot metadata должна атомарно хранить:
|
||||
5. ПМ выполняет `ERASE` и передаёт `BOOT_DATA_A` либо `BOOT_DATA_B`.
|
||||
6. ПМ выполняет `VERIFY`, затем `COMMIT` и `REBOOT`.
|
||||
7. Новое приложение после самопроверки выполняет `CONFIRM`.
|
||||
|
||||
## F28335 M95M02
|
||||
|
||||
Реализованы отдельный Flash-загрузчик, A/B по 130560 байт, журнал, пробный запуск
|
||||
и откат. Подробная раскладка памяти, сервисных ответов и первичная установка:
|
||||
[README порта](../ports/tms320f28335/README.md).
|
||||
|
||||
Общий discovery: Route=0, DeviceType=7, DeviceID=15, MsgType=D, Body=0, DLC=0.
|
||||
Он только запрашивает IDENTIFY; операции изменения всегда адресные.
|
||||
ENTER_BOOT может отложить ACK до готовности отдельного загрузчика после reset.
|
||||
CONFIRM с ненулевой session может обрабатываться приложением без ENTER_BOOT.
|
||||
`pcan_boot_poll` обслуживает задержку discovery и тайм-аут сессии, если он задан
|
||||
портом. Старым портам с timeout=0 периодический вызов нужен только для discovery.
|
||||
|
||||
Reference in New Issue
Block a user