-
Notifications
You must be signed in to change notification settings - Fork 0
NewMCU
Sebastian edited this page Jun 18, 2019
·
3 revisions
This page will explain how to add a new microcontroller to the bootloader
The following additions must be made on the client side
All json files which contain infromation about a microcontroller must be saved under "config/Devices". The name of the json file will be the identifier for the newly added mcu. It should be unique across all microcontrollers. You can use subfolders to organize your json files, but these will be ignored for identification of a microcontroller.
The following table will use a hierarchy format to identify json values. The following example will explain the structure:
{
"device": {
"general": {
"id": "atmega328p",
"vendor": "Microchip",
"arch": "AVR",
"subarch": "ATMega",
"name": "Atmega328p"
}
}
}
The arch value will be identified by the string "/device/general/arch"
Value | Description | Example Value |
---|---|---|
/device/general/id | A unique identifier for the microcontroller. It is recommended to use the same value as the filename | atmega328p |
/device/general/vendor | Device Vendor of the Microcontroller | Microchip |
/device/general/arch | The Architecture of the Microcontroller | AVR |
/device/general/subarch | The Sub Category of the Microcontroller, can be empty if non-existent | ATmega |
/device/general/name | The full Name of the microcontroller in "human readable form" | Atmega328p |
/device/flash/total | Total flash space of the device | 1KB |
/device/flash/available | Available flash of the device. This value must be the flash size which the bootloader can access and write to. | 2GB |
/device/eeprom/total | Total EEPROM size of the Microcontroller (can be 0 if there is none) | 0B |
/device/eeprom/available | Available EEPROM size of the Microcontroller (can be 0 if there is none) | 42KB |
/serial/general/mode | Serial mode. (see Serial conventional notation ) | 8N1 |
/serial/general/bytesPerBurst | Bytes sent within one burst of data. This value must also be configured on the microcontroller bootloader. Setting this value too low will cause slow transfers and can cause (implementation dependent) a smaller addressable flash size. Setting this value too high will cause wasted flash space. | 2 |
/serial/general/metadataByteSize | This is the size of bytes which metadata will use for a transmission. This metadata will be used for different values and therefore there should be enough space to fit a full flash flash size width (e.g. 128kB Flash don't fit in a 2 Byte type and need 3 Bytes or more) | 2 |
/serial/general/minBaudrate | Minimum allowed baud rate for communication. If the implementation doesn't need this set to 0 | 9600 |
/serial/maxBaudrate | Maximum allowed baud rate for communication | 115200 |
/serial/write/waitTimeForReset | For this duration the timer will sent sync bytes after startup to allow the microcontroller to sync and not jump directly to the current user program. This should be long enough for a user to press the reset button of the microcontroller to enable flash writing | 1s |
/serial/write/eepromBurstDelay | Delay between every EEPROM send burst (can be 0 if there is no eeprom) | 100ms |
/serial/write/flashBurstDelay | Delay between every Flash send burst | 10ms |
serial/sync/syncByteAmount | Number of sync bytes sent to have a high likelihood of a stable connection | 3 |
/serial/sync/syncByte | Byte value used for synchronization | 0xCC |
/serial/sync/preamble | Preamble used to signalize the start of user data (will be sent directly after the synchronisation is finished) | 0x55 |
/serial/sync/resyncAfterBurst | Is a resync needed after one burst of data? | true |
/binary/format | Format of the binary file | Intel Hex |
/binary/unusedFlashByte/ | Byte used to signalize that the following flash data is unused (Microcontroller dependent) | 0xFF |