diff --git a/filesystem/at45db041d.c b/filesystem/at45db041d.c index 2f3e711..0c6fe37 100644 --- a/filesystem/at45db041d.c +++ b/filesystem/at45db041d.c @@ -117,7 +117,8 @@ DRESULT dataflash_random_write(const BYTE *buff, DWORD offset, DWORD length) { do { wait_for_ready(); - DWORD pageaddr = ((offset/256) << 9) | (offset%256); + DWORD pageaddr = (offset/256) << 9; + DWORD buffaddr = (offset%256); DWORD remaining = 256 - offset%256; if (remaining > length) { remaining = length; @@ -137,9 +138,9 @@ DRESULT dataflash_random_write(const BYTE *buff, DWORD offset, DWORD length) { // write bytes into the dataflash buffer CS_LOW(); xmit_spi(OP_BUFFER1WRITE); - xmit_spi(0x00); - xmit_spi(0x00); - xmit_spi(0x00); + xmit_spi((BYTE)(buffaddr >> 16)); + xmit_spi((BYTE)(buffaddr >> 8)); + xmit_spi((BYTE)buffaddr); do { xmit_spi(*buff++); } while (--remaining); diff --git a/modules/fs.c b/modules/fs.c index 39cf0a0..fa7a639 100644 --- a/modules/fs.c +++ b/modules/fs.c @@ -9,6 +9,8 @@ #include "filesystem/ff.h" #include "filesystem/diskio.h" +#include "usb/usbmsc.h" + #include "core/ssp/ssp.h" void incBacklight(void); @@ -44,6 +46,7 @@ const struct MENU_DEF menu_list = {"FS List", &fs_list}; const struct MENU_DEF menu_create = {"FS Create", &fs_create}; const struct MENU_DEF menu_format = {"FS format", &fs_format}; const struct MENU_DEF menu_read = {"FS read", &fs_read}; +const struct MENU_DEF menu_usb = {"USB mount", &usbMSCInit}; const struct MENU_DEF menu_nop = {"---", NULL}; static menuentry menu[] = { @@ -55,6 +58,8 @@ static menuentry menu[] = { &menu_nop, &menu_format, &menu_nop, + &menu_usb, + &menu_nop, &menu_ISP, &menu_incBL, &menu_decBL, diff --git a/usb/usbmsc.c b/usb/usbmsc.c index 9a34e51..fdb7a4c 100644 --- a/usb/usbmsc.c +++ b/usb/usbmsc.c @@ -14,11 +14,11 @@ MSC_DEVICE_INFO MscDevInfo; ROM ** rom = (ROM **)0x1fff1ff8; void usbMSCWrite(uint32_t offset, uint8_t src[], uint32_t length) { - dataflash_random_write(src, offset+1, length); + dataflash_random_write(src, offset, length); } void usbMSCRead(uint32_t offset, uint8_t dst[], uint32_t length) { - dataflash_random_read(dst, offset+1, length); + dataflash_random_read(dst, offset, length); } void usbMSCInit(void) {