implemennt uf2 family option #10
This commit is contained in:
		@@ -297,6 +297,11 @@ int write_block(uint32_t block_no, uint8_t *data, bool quiet/*, WriteState *stat
 | 
			
		||||
        return -1;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // only accept block with same family id
 | 
			
		||||
    if ( UF2_FAMILY_ID && !((bl->flags & UF2_FLAG_FAMILYID) && (bl->familyID == UF2_FAMILY_ID)) ) {
 | 
			
		||||
      return -1;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if ((bl->flags & UF2_FLAG_NOFLASH) || bl->payloadSize > 256 || (bl->targetAddr & 0xff) ||
 | 
			
		||||
        bl->targetAddr < USER_FLASH_START || bl->targetAddr + bl->payloadSize > USER_FLASH_END) {
 | 
			
		||||
#if USE_DBG_MSC
 | 
			
		||||
 
 | 
			
		||||
@@ -51,6 +51,7 @@ extern bool sdRunning;
 | 
			
		||||
 | 
			
		||||
// If set, the block is "comment" and should not be flashed to the device
 | 
			
		||||
#define UF2_FLAG_NOFLASH 0x00000001
 | 
			
		||||
#define UF2_FLAG_FAMILYID 0x00002000
 | 
			
		||||
 | 
			
		||||
#define MAX_BLOCKS (FLASH_SIZE / 256 + 100)
 | 
			
		||||
typedef struct {
 | 
			
		||||
@@ -68,7 +69,7 @@ typedef struct {
 | 
			
		||||
    uint32_t payloadSize;
 | 
			
		||||
    uint32_t blockNo;
 | 
			
		||||
    uint32_t numBlocks;
 | 
			
		||||
    uint32_t reserved;
 | 
			
		||||
    uint32_t familyID;
 | 
			
		||||
 | 
			
		||||
    // raw data;
 | 
			
		||||
    uint8_t data[476];
 | 
			
		||||
 
 | 
			
		||||
@@ -13,3 +13,5 @@
 | 
			
		||||
#define USER_FLASH_END     0xAD000 // Fat Fs start here
 | 
			
		||||
 | 
			
		||||
#define FLASH_PAGE_SIZE    4096
 | 
			
		||||
 | 
			
		||||
#define UF2_FAMILY_ID      0xADA52840
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user