diff --git a/avr/usbload/dir.c b/avr/usbload/dir.c index db3aed1..56e346d 100644 --- a/avr/usbload/dir.c +++ b/avr/usbload/dir.c @@ -39,8 +39,13 @@ void dir_add_entry(uint16_t id, uint8_t file_name,uint32_t file_size,uint8_t fil addr = DIR_ENTRY_LOC + (positon << DIR_ENTRY_SIZE_SHIFT ); sram_bulk_copy(addr, (uint8_t *) &ent, DIR_ENTRY_SIZE ); positon++; +} +void dir_add_header(uint16_t position, uint8_t * header){ + uint32_t addr; + dir_ent_t ent; + addr = DIR_ENTRY_LOC + ( position << DIR_ENTRY_SIZE_SHIFT ) + DIR_ENTRY_HEADER_OFF; + sram_bulk_copy(addr, (uint8_t *) header, DIR_ENTRY_HEADER_SIZE); } - diff --git a/avr/usbload/dir.h b/avr/usbload/dir.h index 6e82c30..f9307d2 100644 --- a/avr/usbload/dir.h +++ b/avr/usbload/dir.h @@ -28,7 +28,8 @@ #define DIR_ENTRY_LOC 0x010000 #define DIR_ENTRY_SIZE 64 #define DIR_ENTRY_SIZE_SHIFT 6 - +#define DIR_ENTRY_HEADER_SIZE 44 +#define DIR_ENTRY_HEADER_OFF 20 typedef struct { uint16_t id; // 1 @@ -40,7 +41,6 @@ typedef struct { void dir_entry_start(); void dir_entry_add_(uint16_t id, uint8_t file_name,uint32_t file_size,uint8_t file_attr); -void dir_entry_header(uint16_t id, uint8_t header); - +void dir_entry_header(uint16_t position, uint8_t * header); #endif diff --git a/avr/usbload/file.c b/avr/usbload/file.c index 6ed89f9..fae69cd 100644 --- a/avr/usbload/file.c +++ b/avr/usbload/file.c @@ -178,6 +178,7 @@ void ffls(void) uint16_t s; // fat16 root dir sektoren if (fat.dir == 0 && fat.fatType == 16) { // IM ROOTDIR. fat16 + printf("Fat16\n"); for (s = 0; s < (uint16_t) (fat.dataDirSec + 2 - fat.rootDir); s++) { // zählt durch RootDir sektoren (errechnet anzahl // rootDir sektoren). lsRowsOfClust(fat.rootDir + s); // zeigt reihen eines root dir clust an @@ -185,6 +186,7 @@ void ffls(void) } else { + printf("Fat32\n"); if (fat.dir == 0 && fat.fatType == 32) clust = fat.rootDir; // IM ROOTDIR. fat32 else