forked from mfulz_github/qmk_firmware
Add API support signature to the CDC and DFU class bootloaders, so that the application can detect the bootloader's API support.
This commit is contained in:
parent
3dacb73af3
commit
43a3350981
|
@ -71,4 +71,3 @@ void BootloaderAPI_WriteLock(const uint8_t LockBits)
|
|||
{
|
||||
boot_lock_bits_set_safe(LockBits);
|
||||
}
|
||||
|
||||
|
|
|
@ -32,12 +32,17 @@
|
|||
.section .apitable, "ax"
|
||||
.org 0
|
||||
|
||||
; API function jump table
|
||||
.global BootloaderAPI_JumpTable
|
||||
BootloaderAPI_JumpTable:
|
||||
jmp BootloaderAPI_ErasePage
|
||||
jmp BootloaderAPI_WritePage
|
||||
jmp BootloaderAPI_FillWord
|
||||
jmp BootloaderAPI_ReadSignature
|
||||
jmp BootloaderAPI_ReadFuse
|
||||
jmp BootloaderAPI_ReadLock
|
||||
jmp BootloaderAPI_WriteLock
|
||||
rjmp BootloaderAPI_ErasePage
|
||||
rjmp BootloaderAPI_WritePage
|
||||
rjmp BootloaderAPI_FillWord
|
||||
rjmp BootloaderAPI_ReadSignature
|
||||
rjmp BootloaderAPI_ReadFuse
|
||||
rjmp BootloaderAPI_ReadLock
|
||||
rjmp BootloaderAPI_WriteLock
|
||||
|
||||
; Bootloader table signature
|
||||
.org 30
|
||||
.word 0xDCFB
|
||||
|
|
|
@ -103,8 +103,15 @@
|
|||
* uint8_t (*BootloaderAPI_ReadFuse)(uint16_t Address) = BOOTLOADER_API_START(4);
|
||||
* uint8_t (*BootloaderAPI_ReadLock)(void) = BOOTLOADER_API_START(5);
|
||||
* void (*BootloaderAPI_WriteLock)(uint8_t LockBits) = BOOTLOADER_API_START(6);
|
||||
*
|
||||
* #define BOOTLOADER_SIG_START (FLASHEND - 32)
|
||||
* #define BOOTLOADER_SIGNATURE 0xDCFB
|
||||
* \endcode
|
||||
*
|
||||
* Bootloaders reporting a device release revision number of 1.00 or greater are bootloader API enabled. From the application
|
||||
* the API support of the bootloader can be detected by reading the FLASH memory bytes located at address \c BOOTLOADER_SIG_START
|
||||
* and comparing them to the value \c BOOTLOADER_SIGNATURE.
|
||||
*
|
||||
* \section Sec_Options Project Options
|
||||
*
|
||||
* The following defines can be found in this demo, which can control the demo behaviour when defined, or changed in value.
|
||||
|
|
|
@ -55,7 +55,7 @@ const USB_Descriptor_Device_t DeviceDescriptor =
|
|||
|
||||
.VendorID = 0x03EB,
|
||||
.ProductID = 0x204A,
|
||||
.ReleaseNumber = VERSION_BCD(00.01),
|
||||
.ReleaseNumber = VERSION_BCD(01.00),
|
||||
|
||||
.ManufacturerStrIndex = NO_DESCRIPTOR,
|
||||
.ProductStrIndex = 0x01,
|
||||
|
|
|
@ -32,12 +32,17 @@
|
|||
.section .apitable, "ax"
|
||||
.org 0
|
||||
|
||||
; API function jump table
|
||||
.global BootloaderAPI_JumpTable
|
||||
BootloaderAPI_JumpTable:
|
||||
jmp BootloaderAPI_ErasePage
|
||||
jmp BootloaderAPI_WritePage
|
||||
jmp BootloaderAPI_FillWord
|
||||
jmp BootloaderAPI_ReadSignature
|
||||
jmp BootloaderAPI_ReadFuse
|
||||
jmp BootloaderAPI_ReadLock
|
||||
jmp BootloaderAPI_WriteLock
|
||||
rjmp BootloaderAPI_ErasePage
|
||||
rjmp BootloaderAPI_WritePage
|
||||
rjmp BootloaderAPI_FillWord
|
||||
rjmp BootloaderAPI_ReadSignature
|
||||
rjmp BootloaderAPI_ReadFuse
|
||||
rjmp BootloaderAPI_ReadLock
|
||||
rjmp BootloaderAPI_WriteLock
|
||||
|
||||
; Bootloader table signature
|
||||
.org 30
|
||||
.word 0xDCFB
|
||||
|
|
|
@ -108,8 +108,14 @@
|
|||
* uint8_t (*BootloaderAPI_ReadFuse)(uint16_t Address) = BOOTLOADER_API_START(4);
|
||||
* uint8_t (*BootloaderAPI_ReadLock)(void) = BOOTLOADER_API_START(5);
|
||||
* void (*BootloaderAPI_WriteLock)(uint8_t LockBits) = BOOTLOADER_API_START(6);
|
||||
*
|
||||
* #define BOOTLOADER_SIG_START (FLASHEND - 32)
|
||||
* #define BOOTLOADER_SIGNATURE 0xDCFB
|
||||
* \endcode
|
||||
*
|
||||
* From the application the API support of the bootloader can be detected by reading the FLASH memory bytes located at address
|
||||
* \c BOOTLOADER_SIG_START and comparing them to the value \c BOOTLOADER_SIGNATURE.
|
||||
*
|
||||
* \section Sec_Options Project Options
|
||||
*
|
||||
* The following defines can be found in this demo, which can control the demo behaviour when defined, or changed in value.
|
||||
|
|
|
@ -31,6 +31,7 @@
|
|||
* - Altered the Mass Storage Host class driver so that SCSI data STALLs from the attached device can be recovered from automatically without
|
||||
* having to reset the Mass Storage interface
|
||||
* - USB_CONFIG_ATTR_BUSPOWERED constant renamed to USB_CONFIG_ATTR_RESERVED, as this was misnamed (thanks to NXP Semiconductors)
|
||||
* - Reordered board name definition indexes so that a mispelled BOARD compile option will default to BOARD_USER rather than BOARD_USBKEY
|
||||
* - Library Applications:
|
||||
* - Altered the Mass Storage Host LowLevel demo so that SCSI data STALLs from the attached device can be recovered from automatically without
|
||||
* having to reset the Mass Storage interface
|
||||
|
|
Loading…
Reference in New Issue