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
					
				
					 7 changed files with 39 additions and 16 deletions
				
			
		| 
						 | 
				
			
			@ -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.
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue