add uf2 actual application size
This commit is contained in:
		| @@ -4,7 +4,10 @@ | ||||
| #include <string.h> | ||||
| #include "tusb.h" | ||||
|  | ||||
| #if 1 | ||||
| // to determine application size | ||||
| #include "bootloader_settings.h" | ||||
| #include "bootloader.h" | ||||
|  | ||||
| typedef struct { | ||||
|     uint8_t JumpInstruction[3]; | ||||
|     uint8_t OEMInfo[8]; | ||||
| @@ -78,36 +81,36 @@ static const struct TextFile info[] = { | ||||
| }; | ||||
| #define NUM_INFO (sizeof(info) / sizeof(info[0])) | ||||
|  | ||||
| #define UF2_SIZE (FLASH_SIZE * 2) | ||||
| #define UF2_SECTORS (UF2_SIZE / 512) | ||||
| #define UF2_FIRST_SECTOR (NUM_INFO + 1) | ||||
| #define UF2_LAST_SECTOR (UF2_FIRST_SECTOR + UF2_SECTORS - 1) | ||||
| #define UF2_SIZE           (get_flash_size() * 2) | ||||
| #define UF2_SECTORS        (UF2_SIZE / 512) | ||||
| #define UF2_FIRST_SECTOR   (NUM_INFO + 1) | ||||
| #define UF2_LAST_SECTOR    (UF2_FIRST_SECTOR + UF2_SECTORS - 1) | ||||
|  | ||||
| #define RESERVED_SECTORS 1 | ||||
| #define ROOT_DIR_SECTORS 4 | ||||
| #define SECTORS_PER_FAT ((NUM_FAT_BLOCKS * 2 + 511) / 512) | ||||
| #define RESERVED_SECTORS   1 | ||||
| #define ROOT_DIR_SECTORS   4 | ||||
| #define SECTORS_PER_FAT    ((NUM_FAT_BLOCKS * 2 + 511) / 512) | ||||
|  | ||||
| #define START_FAT0 RESERVED_SECTORS | ||||
| #define START_FAT1 (START_FAT0 + SECTORS_PER_FAT) | ||||
| #define START_ROOTDIR (START_FAT1 + SECTORS_PER_FAT) | ||||
| #define START_CLUSTERS (START_ROOTDIR + ROOT_DIR_SECTORS) | ||||
| #define START_FAT0         RESERVED_SECTORS | ||||
| #define START_FAT1         (START_FAT0 + SECTORS_PER_FAT) | ||||
| #define START_ROOTDIR      (START_FAT1 + SECTORS_PER_FAT) | ||||
| #define START_CLUSTERS     (START_ROOTDIR + ROOT_DIR_SECTORS) | ||||
|  | ||||
| static const FAT_BootBlock BootBlock = { | ||||
|     .JumpInstruction = {0xeb, 0x3c, 0x90}, | ||||
|     .OEMInfo = "UF2 UF2 ", | ||||
|     .SectorSize = 512, | ||||
|     .SectorsPerCluster = 1, | ||||
|     .ReservedSectors = RESERVED_SECTORS, | ||||
|     .FATCopies = 2, | ||||
|     .JumpInstruction      = {0xeb, 0x3c, 0x90}, | ||||
|     .OEMInfo              = "UF2 UF2 ", | ||||
|     .SectorSize           = 512, | ||||
|     .SectorsPerCluster    = 1, | ||||
|     .ReservedSectors      = RESERVED_SECTORS, | ||||
|     .FATCopies            = 2, | ||||
|     .RootDirectoryEntries = (ROOT_DIR_SECTORS * 512 / 32), | ||||
|     .TotalSectors16 = NUM_FAT_BLOCKS - 2, | ||||
|     .MediaDescriptor = 0xF8, | ||||
|     .SectorsPerFAT = SECTORS_PER_FAT, | ||||
|     .SectorsPerTrack = 1, | ||||
|     .Heads = 1, | ||||
|     .ExtendedBootSig = 0x29, | ||||
|     .VolumeSerialNumber = 0x00420042, | ||||
|     .VolumeLabel = VOLUME_LABEL, | ||||
|     .TotalSectors16       = NUM_FAT_BLOCKS - 2, | ||||
|     .MediaDescriptor      = 0xF8, | ||||
|     .SectorsPerFAT        = SECTORS_PER_FAT, | ||||
|     .SectorsPerTrack      = 1, | ||||
|     .Heads                = 1, | ||||
|     .ExtendedBootSig      = 0x29, | ||||
|     .VolumeSerialNumber   = 0x00420042, | ||||
|     .VolumeLabel          = VOLUME_LABEL, | ||||
|     .FilesystemIdentifier = "FAT16   ", | ||||
| }; | ||||
|  | ||||
| @@ -120,6 +123,18 @@ uint8_t flashBuf[FLASH_PAGE_SIZE] __attribute__((aligned(4))); | ||||
| bool firstFlush = true; | ||||
| bool hadWrite = false; | ||||
|  | ||||
|  | ||||
| static uint32_t get_flash_size(void) | ||||
| { | ||||
|   // return 1 block of 256 bytes | ||||
|   if ( !bootloader_app_is_valid(DFU_BANK_0_REGION_START) ) return 256; | ||||
|  | ||||
|   const bootloader_settings_t * boot_setting; | ||||
|   bootloader_util_settings_get(&boot_setting); | ||||
|  | ||||
|   return boot_setting->bank_0_size; | ||||
| } | ||||
|  | ||||
| #if 0 | ||||
| void flushFlash() { | ||||
|     if (flashAddr == NO_CACHE) | ||||
| @@ -322,5 +337,3 @@ void write_block(uint32_t block_no, uint8_t *data, bool quiet, WriteState *state | ||||
|     } | ||||
| } | ||||
| #endif | ||||
|  | ||||
| #endif | ||||
|   | ||||
		Reference in New Issue
	
	Block a user