diff --git a/c/protocan-boot/README.md b/c/protocan-boot/README.md index ab6c0d7..3bf5c26 100644 --- a/c/protocan-boot/README.md +++ b/c/protocan-boot/README.md @@ -52,9 +52,21 @@ STM32 HAL / другой MCU / host-тест ```text offset = MsgBody * 8 -65536 * 8 = 512 КиБ на слот +512 КиБ = 512 * 1024 = 524 288 байт +524 288 / 8 = 65 536 блоков на слот ``` +| `MsgBody` | Номер блока | Смещение | Байты слота | +|---:|---:|---:|---:| +| `0x0000` | 0 | `0x00000` | `0x00000..0x00007` | +| `0x0001` | 1 | `0x00008` | `0x00008..0x0000F` | +| `0xFFFF` | 65 535 | `0x7FFF8` | `0x7FFF8..0x7FFFF` | + +Последний блок заканчивается на смещении `0x7FFFF`. Значение `0x80000` +равно размеру слота и является первой позицией за его границей. В коде эти +границы заданы константами `PCAN_BOOT_BLOCK_COUNT=65536` и +`PCAN_BOOT_SLOT_SIZE=524288`. + Последний кадр дополняется `0xFF`; ядро передаёт во Flash только оставшиеся байты фактического образа и включает в CRC только их.