mirror of
https://github.com/qmk/qmk_firmware.git
synced 2025-06-05 07:52:42 +00:00
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);
|
boot_lock_bits_set_safe(LockBits);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -32,12 +32,17 @@
|
|||||||
.section .apitable, "ax"
|
.section .apitable, "ax"
|
||||||
.org 0
|
.org 0
|
||||||
|
|
||||||
|
; API function jump table
|
||||||
.global BootloaderAPI_JumpTable
|
.global BootloaderAPI_JumpTable
|
||||||
BootloaderAPI_JumpTable:
|
BootloaderAPI_JumpTable:
|
||||||
jmp BootloaderAPI_ErasePage
|
rjmp BootloaderAPI_ErasePage
|
||||||
jmp BootloaderAPI_WritePage
|
rjmp BootloaderAPI_WritePage
|
||||||
jmp BootloaderAPI_FillWord
|
rjmp BootloaderAPI_FillWord
|
||||||
jmp BootloaderAPI_ReadSignature
|
rjmp BootloaderAPI_ReadSignature
|
||||||
jmp BootloaderAPI_ReadFuse
|
rjmp BootloaderAPI_ReadFuse
|
||||||
jmp BootloaderAPI_ReadLock
|
rjmp BootloaderAPI_ReadLock
|
||||||
jmp BootloaderAPI_WriteLock
|
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_ReadFuse)(uint16_t Address) = BOOTLOADER_API_START(4);
|
||||||
* uint8_t (*BootloaderAPI_ReadLock)(void) = BOOTLOADER_API_START(5);
|
* uint8_t (*BootloaderAPI_ReadLock)(void) = BOOTLOADER_API_START(5);
|
||||||
* void (*BootloaderAPI_WriteLock)(uint8_t LockBits) = BOOTLOADER_API_START(6);
|
* void (*BootloaderAPI_WriteLock)(uint8_t LockBits) = BOOTLOADER_API_START(6);
|
||||||
|
*
|
||||||
|
* #define BOOTLOADER_SIG_START (FLASHEND - 32)
|
||||||
|
* #define BOOTLOADER_SIGNATURE 0xDCFB
|
||||||
* \endcode
|
* \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
|
* \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.
|
* 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,
|
.VendorID = 0x03EB,
|
||||||
.ProductID = 0x204A,
|
.ProductID = 0x204A,
|
||||||
.ReleaseNumber = VERSION_BCD(00.01),
|
.ReleaseNumber = VERSION_BCD(01.00),
|
||||||
|
|
||||||
.ManufacturerStrIndex = NO_DESCRIPTOR,
|
.ManufacturerStrIndex = NO_DESCRIPTOR,
|
||||||
.ProductStrIndex = 0x01,
|
.ProductStrIndex = 0x01,
|
||||||
|
@ -32,12 +32,17 @@
|
|||||||
.section .apitable, "ax"
|
.section .apitable, "ax"
|
||||||
.org 0
|
.org 0
|
||||||
|
|
||||||
|
; API function jump table
|
||||||
.global BootloaderAPI_JumpTable
|
.global BootloaderAPI_JumpTable
|
||||||
BootloaderAPI_JumpTable:
|
BootloaderAPI_JumpTable:
|
||||||
jmp BootloaderAPI_ErasePage
|
rjmp BootloaderAPI_ErasePage
|
||||||
jmp BootloaderAPI_WritePage
|
rjmp BootloaderAPI_WritePage
|
||||||
jmp BootloaderAPI_FillWord
|
rjmp BootloaderAPI_FillWord
|
||||||
jmp BootloaderAPI_ReadSignature
|
rjmp BootloaderAPI_ReadSignature
|
||||||
jmp BootloaderAPI_ReadFuse
|
rjmp BootloaderAPI_ReadFuse
|
||||||
jmp BootloaderAPI_ReadLock
|
rjmp BootloaderAPI_ReadLock
|
||||||
jmp BootloaderAPI_WriteLock
|
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_ReadFuse)(uint16_t Address) = BOOTLOADER_API_START(4);
|
||||||
* uint8_t (*BootloaderAPI_ReadLock)(void) = BOOTLOADER_API_START(5);
|
* uint8_t (*BootloaderAPI_ReadLock)(void) = BOOTLOADER_API_START(5);
|
||||||
* void (*BootloaderAPI_WriteLock)(uint8_t LockBits) = BOOTLOADER_API_START(6);
|
* void (*BootloaderAPI_WriteLock)(uint8_t LockBits) = BOOTLOADER_API_START(6);
|
||||||
|
*
|
||||||
|
* #define BOOTLOADER_SIG_START (FLASHEND - 32)
|
||||||
|
* #define BOOTLOADER_SIGNATURE 0xDCFB
|
||||||
* \endcode
|
* \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
|
* \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.
|
* 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
|
* - 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
|
* 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)
|
* - 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:
|
* - Library Applications:
|
||||||
* - Altered the Mass Storage Host LowLevel demo so that SCSI data STALLs from the attached device can be recovered from automatically without
|
* - 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
|
* having to reset the Mass Storage interface
|
||||||
|
Loading…
Reference in New Issue
Block a user