Projekt

Allgemein

Profil

MMP » Historie » Revision 12

Revision 11 (Maximilian Seesslen, 09.09.2024 17:27) → Revision 12/14 (Maximilian Seesslen, 09.09.2024 17:57)

h1. Multipacket-Strings

There should be the posssibillity to write the complete SPI-Flash even if it takes forever.
Not every slave needs to be able to send super big blocks. But every slave should be able to
send e.g. descriptions.
There can not be multiple transfers at the same time from one node because there is no identification.
All slaves should be able to send description to multicast. Receiver should be able to sort messages.
First packet can contain flags so information about acknowledge is given.


|_. Size |_. Type |
| 0x1 | Package number (0: Data contains package count), overflowing |
| 0x3 | Source |
| 0x4 | Data |

h2. Header

|_. Size |_. Type |
| 0x4 | Object |
| 0x4 | Total size |
| 0x4 | Flags |
| 0x4 | CRC32 of data |

h2. Example: CANRec

PC requests an complete dump from single Node. Node will just stream it out.

h1. V2

|_. Size |_. Decription |_. Examples |
| 1 | Packet type | Standard TDT packet |
| 1 | Sub-Id; | Futher index; Sub-Sensor or more specifi kind of thing to be set |
| 1 | Data type | Int, Float, Time, Date, Percent, Promil, Multipacket-String |
| 1 | Unit | Hz, °C, Time, Date, PWM, CAN-ID, Name, Description, Room |
| 4 | Value | 32Bit |

h1. V3

|_. Size |_. Decription |_. Examples |
| 2 | Object | |
| 1 | Sub-Id; | Flags, Subid |
| 1 | Unit/Type | Hz_int, °C_centi, Time, Date, PWM_milli, CAN-ID, Name, Description, Room |
| 4 | Value | 32Bit |

h2. Flags

4 Bit multi message count
4 Bit multi message pos

Length in Bytes given via CAN?
Strings with max. 64 characters.

h2. Multimessage package

There should be the possibillity to write the complete SPI-Flash even if it takes forever.
Not every slave needs to be able to send super big blocks. But every slave should be able to
send e.g. descriptions.

h1. V4

Single block max.262144 bytes.

|_. Size |_. Decription |_. Examples |
| 2 | Object | |
| 2 | Counter | |
| 4 | Value | 32Bit |

The data has to be stored in memory anyways. So one block can not be infinite large.
Flash has to be written block by block. One erase sektor can be 2K. Limiting the packet size to 64K is ok for writing to flash.
Object: theoretically multiple blocks could be written at the same time. A slave could just send its whole SD-card.

h2. Header

First 0x10 Bytes are the Block header.

|_. Size |_. Type |
| 0x4 | Flags |
| 0x4 | Total Size
CRC32 of this block data |
| 0x4 0x2 | CRC32 of data Header version major |
| 0x4 0x2 | Header version code minor |
| 0x4 | Command Size of this block without head |
| 0x4 | Address Command |
| ... 0x4 | Data Subaddress |

Commands:
- readout data
- erase application flash
- erase flash sector
- erase external flash
- erase external flash sector
- write data

Subaddress: e.g. flash page
Type: MMP1

h2. Usecase

h3. Write to flash

Data size is 0x100.
Count of blocks: 1
Number of blocks: 1