mirror of
				https://github.com/mfulz/qmk_firmware.git
				synced 2025-10-31 05:12:33 +01: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); | ||||
| } | ||||
| 
 | ||||
|  | ||||
| @ -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…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Dean Camera
						Dean Camera