forked from mfulz_github/qmk_firmware
Fix off-by-one error in the Mass Storage bootloader file size, add missing Volume Label directory entry. Remove incorrect reference to "printer" in the bootloader documentation.
This commit is contained in:
parent
de9d05f32a
commit
68c317c4e9
|
@ -57,7 +57,7 @@
|
||||||
*
|
*
|
||||||
* \section Sec_Installation Driver Installation
|
* \section Sec_Installation Driver Installation
|
||||||
*
|
*
|
||||||
* This bootloader uses the Mass Storage printer drivers inbuilt into all modern operating systems, thus no additional
|
* This bootloader uses the Mass Storage drivers inbuilt into all modern operating systems, thus no additional
|
||||||
* drivers need to be supplied for correct operation.
|
* drivers need to be supplied for correct operation.
|
||||||
*
|
*
|
||||||
* \section Sec_HostApp Host Controller Application
|
* \section Sec_HostApp Host Controller Application
|
||||||
|
|
|
@ -72,16 +72,34 @@ static const FATBootBlock_t BootBlock =
|
||||||
};
|
};
|
||||||
|
|
||||||
/** FAT 8.3 style directory entry, for the virtual FLASH contents file. */
|
/** FAT 8.3 style directory entry, for the virtual FLASH contents file. */
|
||||||
static FATDirectoryEntry_t FirmwareFileEntry =
|
static FATDirectoryEntry_t FirmwareFileEntries[2] =
|
||||||
{
|
{
|
||||||
.Filename = "FIRMWARE",
|
/* Root volume label entry; disk label is contained in the Filename and
|
||||||
.Extension = "BIN",
|
* Extension fields (concantenated) with a special attribute flag - other
|
||||||
.Attributes = 0,
|
* fields are ignored. Should be the same as the label in the boot block.
|
||||||
.Reserved = {0},
|
*/
|
||||||
.CreationTime = FAT_TIME(1, 1, 0),
|
{
|
||||||
.CreationDate = FAT_DATE(14, 2, 1989),
|
.Filename = "LUFA BOO",
|
||||||
.StartingCluster = 2,
|
.Extension = "T ",
|
||||||
.FileSizeBytes = FIRMWARE_FILE_SIZE_BYTES,
|
.Attributes = (1 << 3),
|
||||||
|
.Reserved = {0},
|
||||||
|
.CreationTime = 0,
|
||||||
|
.CreationDate = 0,
|
||||||
|
.StartingCluster = 0,
|
||||||
|
.FileSizeBytes = 0,
|
||||||
|
},
|
||||||
|
|
||||||
|
/* File entry for the virtual Firmware image. */
|
||||||
|
{
|
||||||
|
.Filename = "FIRMWARE",
|
||||||
|
.Extension = "BIN",
|
||||||
|
.Attributes = 0,
|
||||||
|
.Reserved = {0},
|
||||||
|
.CreationTime = FAT_TIME(1, 1, 0),
|
||||||
|
.CreationDate = FAT_DATE(14, 2, 1989),
|
||||||
|
.StartingCluster = 2,
|
||||||
|
.FileSizeBytes = FIRMWARE_FILE_SIZE_BYTES,
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -101,8 +119,8 @@ static void UpdateFAT12ClusterEntry(uint8_t* const FATTable,
|
||||||
const uint16_t ChainEntry)
|
const uint16_t ChainEntry)
|
||||||
{
|
{
|
||||||
/* Calculate the starting offset of the cluster entry in the FAT12 table */
|
/* Calculate the starting offset of the cluster entry in the FAT12 table */
|
||||||
uint8_t FATOffset = (Index * 3) / 2;
|
uint8_t FATOffset = (Index + (Index >> 1));
|
||||||
bool UpperNibble = (((Index * 3) % 2) != 0);
|
bool UpperNibble = ((Index & 1) != 0);
|
||||||
|
|
||||||
/* Check if the start of the entry is at an upper nibble of the byte, fill
|
/* Check if the start of the entry is at an upper nibble of the byte, fill
|
||||||
* out FAT12 entry as required */
|
* out FAT12 entry as required */
|
||||||
|
@ -195,7 +213,7 @@ static void ReadVirtualBlock(const uint16_t BlockNumber)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 3: /* Block 3: Root file entries */
|
case 3: /* Block 3: Root file entries */
|
||||||
memcpy(BlockBuffer, &FirmwareFileEntry, sizeof(FATDirectoryEntry_t));
|
memcpy(BlockBuffer, FirmwareFileEntries, sizeof(FirmwareFileEntries));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default: /* Blocks 4 onwards: Data allocation section */
|
default: /* Blocks 4 onwards: Data allocation section */
|
||||||
|
|
|
@ -39,7 +39,7 @@
|
||||||
|
|
||||||
/* Macros: */
|
/* Macros: */
|
||||||
/** Size of the virtual FIRMWARE.BIN file in bytes. */
|
/** Size of the virtual FIRMWARE.BIN file in bytes. */
|
||||||
#define FIRMWARE_FILE_SIZE_BYTES (FLASHEND - (FLASHEND - BOOT_START_ADDR) + 1UL)
|
#define FIRMWARE_FILE_SIZE_BYTES (FLASHEND - (FLASHEND - BOOT_START_ADDR))
|
||||||
|
|
||||||
/** Number of sectors that comprise a single logical disk cluster. */
|
/** Number of sectors that comprise a single logical disk cluster. */
|
||||||
#define SECTOR_PER_CLUSTER 4
|
#define SECTOR_PER_CLUSTER 4
|
||||||
|
|
Loading…
Reference in New Issue