diff --git a/Device.md b/Device.md index 14f9383..707951b 100644 --- a/Device.md +++ b/Device.md @@ -275,7 +275,7 @@ gantt section Id BOOT_EE :id7, 0, 1 BOOT_DEF :id6, after bit7 , 2 - - :id5, after bit6 , 3 + UPDATE_FIRMWARE :id5, after bit6 , 3 - :id4, after bit5 , 4 NAME_TO_DEFAULT :id3, after bit4 , 5 SAVE :id2, after bit3 , 6 @@ -297,9 +297,11 @@ gantt * **RST_EE [Bit 1]:** If this bit is set and non-volatile memory is available, the device MUST reset and reboot with all core and application registers set to the values saved in persistent storage, usually an EEPROM. Any currently stored values MUST remain the permanent boot option. If this bit is set and non-volatile memory is not available, the device MUST respond with an `Error` message. When sending a response to a `Read` command, the device MUST clear this bit in the response payload. -* **SAVE [Bit 3]:** If this bit is set and non-volatile memory is available, the device MUST save any non-volatile core and application registers to persistent storage, and reboot. The non-volatile memory should be configured as the permanent boot option. If this bit is set and non-volatile memory is not available, the device MUST respond with an `Error` message. When sending a response to a `Read` command, the device MUST clear this bit in the response payload. +* **SAVE [Bit 2]:** If this bit is set and non-volatile memory is available, the device MUST save any non-volatile core and application registers to persistent storage, and reboot. The non-volatile memory should be configured as the permanent boot option. If this bit is set and non-volatile memory is not available, the device MUST respond with an `Error` message. When sending a response to a `Read` command, the device MUST clear this bit in the response payload. + +* **NAME_TO_DEFAULT [Bit 3]:** If this bit is set, the device MUST reboot and restore the value of [`R_DEVICE_NAME`](#r_device_name-25-bytes--devices-name) to its default value. When sending a response to a `Read` command, the device MUST clear this bit in the response payload. -* **NAME_TO_DEFAULT [Bit 4]:** If this bit is set, the device MUST reboot and restore the value of [`R_DEVICE_NAME`](#r_device_name-25-bytes--devices-name) to its default value. When sending a response to a `Read` command, the device MUST clear this bit in the response payload. +* **UPDATE_FIRMWARE [Bit 5]:** If this bit is set, the device MUST enter firmware update mode. In this mode the device MAY NOT respond to any commands until the update completes. Once completed, the device MUST reset. A `Read` from this register should always return 0. * **BOOT_DEF [Bit 6]:** When sending a response to a `Read` command, the device MUST set this bit if the device booted with its default register values. If non-volatile memory is not available, the device MUST always set this bit when sending a response to a `Read` command. This bit is read-only state, so if this bit is set on a command message, the device MUST respond with an `Error` message. diff --git a/schema/core.yml b/schema/core.yml index e7a1cbd..acc6949 100644 --- a/schema/core.yml +++ b/schema/core.yml @@ -132,6 +132,7 @@ bitMasks: RestoreEeprom: {value: 0x2, description: The device will boot and restore all the registers to the values stored in non-volatile memory.} Save: {value: 0x4, description: The device will boot and save all the current register values to non-volatile memory.} RestoreName: {value: 0x8, description: The device will boot with the default device name.} + FirmwareUpdate: {value: 0x20, description: The device will trigger firmware update mode.} BootFromDefault: {value: 0x40, description: Specifies that the device has booted from default factory values.} BootFromEeprom: {value: 0x80, description: Specifies that the device has booted from non-volatile values stored in EEPROM.} ClockConfigurationFlags: