USBLocalFileSystem.lib testing program for LPC11U35
Dependencies: BaseDAP SWD USBDAP USBLocalFileSystem mbed DA14580 SWSPI W25X40BV
USB memory + Writer for DA14580 BLE chip + CMSIS-DAP debugger + USB-UART functions in one chip
One button input loads your application into DA14580 or DA14580 included BLE modules
Quote:
Current compatible hardware description can be found at https://github.com/K4zuki/da14580/releases/tag/MurataBLEr04
Diff: main.cpp
- Revision:
- 12:417eb27c4146
- Parent:
- 11:f6a0c6b3cc7d
- Child:
- 13:9a2f6902f4f1
diff -r f6a0c6b3cc7d -r 417eb27c4146 main.cpp --- a/main.cpp Thu Jul 07 01:49:59 2016 +0000 +++ b/main.cpp Fri Aug 12 06:37:48 2016 +0000 @@ -4,7 +4,7 @@ #include "USB_HID.h" #include "DA14580.h" #include "W25X40BV.h" -#include "loader.h" +//#include "loader.h" #include "mystorage.h" /** r0.4_aef7891 @@ -60,14 +60,6 @@ DigitalOut running(P0_4); /* -- 580 - -MOSI = P0_9 -MISO = P0_7 -SCK = P0_8 -CS = P0_21 -*/ -W25X40BV memory(P0_9, P0_7, P0_8, P0_21); // mosi, miso, sclk, cs -/* - UART - TX = P0_19 RX = P0_18 @@ -102,27 +94,27 @@ CS = P1_15 */ MyStorage LocalFS(P0_16, P0_23, P0_15, P1_15); // mosi, miso, sclk, cs -//MyStorage LocalFS(P0_15, P0_13, P0_14, P0_16); int main() { - USBLocalFileSystem* usb_local = new USBLocalFileSystem(&LocalFS, "local"); //PinName mosi, PinName miso, PinName sclk, PinName cs, const char* name + USBLocalFileSystem* usb_local = new USBLocalFileSystem(&LocalFS, "local"); + //PinName mosi, PinName miso, PinName sclk, PinName cs, const char* name USB_HID* _hid = usb_local->getUsb()->getHID(); HID_REPORT recv_report; HID_REPORT send_report; myDAP* dap = new myDAP(&swd); -// USBLocalFileSystem* usb_local = new USBLocalFileSystem(P0_8, P0_10, P0_9, P0_7, "local"); //PinName mosi, PinName miso, PinName sclk, PinName cs, const char* name -// USBLocalFileSystem* usb_local = new USBLocalFileSystem(&LocalFS, "local"); //PinName mosi, PinName miso, PinName sclk, PinName cs, const char* name running.write(1); TGT_RST_IN.mode(PullUp); - memory.frequency(SPI_FREQ); - char hex[]="0123456789ABCDEF"; //DEBUG + char* STAT_MSG[6]={ + "SUCCESS", + "NOT CONNECTED", + "FILE NOT FOUND", + "STX TIMEOUT", + "NO ACKNOWLEDGE", + "CRC MISMATCHED" + }; - int appleCount = 10; - char buf[ 1024 ]; - - int read = 0; int result = 0; TGT_RST_IN.mode(PullUp); TGT_RST_IN.fall(&TGT_RST_IN_int); @@ -135,129 +127,26 @@ connected.write(1); if(isISP) { - sprintf( buf, "I have %d apples.\r\n", appleCount ); - char *ptr = buf; - while( *ptr != (char)0 ) { - usb_local->putc(*ptr++); - } - sprintf( &buf[0], "\r\nWriting "TARGET_FILE" into SPI flash" ); - ptr = &buf[0]; - while( *ptr != (char)0 ) { - usb_local->putc(*ptr++); - } -// usb_local->puts("\n\r"); -// usb_local->puts("Writing "TARGET_FILE" into SPI flash"); -// BLE.copy_to_flash(&memory); - - int _filesize; - uint8_t Headerbuffer[8] = {0x70,0x50,0x00,0x00,0x00,0x00,0x00,0x00}; - char _data[256]; - FILE* _fp = fopen(TARGET_FILE, "r" ); - if (_fp) { - BLE.init(); - //erase 64KByte - memory.block32Erase(0); - memory.block32Erase(1); - - _filesize = file_size(_fp); - usb_local->puts("\n\r"); - usb_local->puts("filesize: "); - read= 0x0f& (_filesize>>12); - usb_local->putc(hex[read]); - read= 0x0f& (_filesize>>8); - usb_local->putc(hex[read]); - read= 0x0f& (_filesize>>4); - usb_local->putc(hex[read]); - read= 0x0f& (_filesize); - usb_local->putc(hex[read]); - usb_local->puts("\n\r"); - Headerbuffer[6]= (uint8_t)( (_filesize >> 8) & 0xff); - Headerbuffer[7]= (uint8_t)(_filesize & 0xff); - - for(int i=0; i<8; i++) { - read= 0x0f& (Headerbuffer[i]>>4); - usb_local->putc(hex[read]); - read= 0x0f& (Headerbuffer[i]); - usb_local->putc(hex[read]); - usb_local->puts("\n\r"); - } - - memory.writeStream(0, Headerbuffer, 8); - wait_ms(1); - memory.readStream(0, (uint8_t*)_data, 8); - - for(int i=0; i<8; i++) { - read= 0x0f& (_data[i]>>4); - usb_local->putc(hex[read]); - read= 0x0f& (_data[i]); - usb_local->putc(hex[read]); - usb_local->puts("\n\r"); - } - - if(_filesize >= 248) { - fgets(_data, 248,_fp); - memory.writeStream(8, (uint8_t*)_data, (248)); - _filesize -= (256-8); - } else { - fgets(_data, _filesize ,_fp); - memory.writeStream(8, (uint8_t*)_data, (_filesize)); - _filesize = 0; - } - - int i=1; - while(_filesize >= 256) { - fgets(_data, (256), _fp); - memory.writeStream(256*i, (uint8_t*)_data, (256)); - usb_local->putc(hex[i%10]); - i++; - _filesize -= (256); - } - if(_filesize > 0) { - fgets(_data, _filesize, _fp); - memory.writeStream(256*i, (uint8_t*)_data, (_filesize)); - } - } - fclose(_fp); -#if defined(__MICROLIB) && defined(__ARMCC_VERSION) // with microlib and ARM compiler -#warning "free(_fp)" - free(_fp); -#endif - - usb_local->puts("\n\r"); - usb_local->puts("Try BLE.load(): "); running.write(0); - result = BLE.load(); + result = BLE.load(TARGET_FILE); running.write(1); - usb_local->putc(result); + usb_local->puts(STAT_MSG[result]); usb_local->putc(0x07); //bell usb_local->puts("\n\r"); isISP = false; - /* - while(BLE._ble.readable()) { - usb_local->putc(BLE._ble.getc()); - } - */ - } else { - ; -// usb_local->putc('.'); } - usb_local->lock(false); + _hidresult = _hid->readNB(&recv_report); + if( _hidresult ) { -// int i=10; -// while(i>0) { -// i--; - _hidresult = _hid->readNB(&recv_report); - if( _hidresult ) { - dap->Command(recv_report.data, send_report.data); - send_report.length = 64; - _hid->send(&send_report); - } - if(BLE._ble.readable()) { - usb_local->putc(BLE._ble.getc()); - } - wait_us(1000); -// } + dap->Command(recv_report.data, send_report.data); + send_report.length = 64; + _hid->send(&send_report); + } + if(BLE._ble.readable()) { + usb_local->putc(BLE._ble.getc()); + } + wait_us(1000); connected = 0; } }