![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
mbed LPC1114 emulator pre-alpha version
Dependencies: BaseV6M mbed F12RFileSystem F32RFileSystem ROMSLOT SDStorage
Fork of emu812 by
TOYOSHIKI TINY BASIC mbed Edition TTB_mbed_LPC1114.bin save as "LPC1114.IMG" .
Diff: main.cpp
- Revision:
- 6:41e64a077678
- Parent:
- 4:6629544a482e
- Child:
- 9:ef9a58221fbe
--- a/main.cpp Thu Aug 20 18:44:46 2015 +0900 +++ b/main.cpp Fri Apr 08 10:55:51 2016 +0900 @@ -1,11 +1,18 @@ -// main.cpp 2015/8/19 +// main.cpp 2016/4/7 +#if defined(TARGET_LPC1768) #include "EMU111x.h" +#include "SDStorage.h" +#include "F32RFileSystem.h" +#include "ROMSLOT.h" DigitalOut led1(LED1),led2(LED2); -RawSerial pc(USBTX,USBRX); - +RawSerial pc(MBED_UARTUSB); +#ifdef USE_SD +SDStorage storage(MBED_SPI0); +F32RFileSystem local(&storage, "local"); +#else LocalFileSystem local("local"); -uint8_t* flash = (uint8_t*)0x2007c000; // AHBSRAM0,AHBSRAM1 +#endif class MyEMU1114 : public EMU111x { virtual void DigitalWrite_Callback(int port, int pin, int value) { @@ -19,22 +26,32 @@ virtual int SerialReadable_Callback(int ch) { return pc.readable(); } }; -uint8_t* load(uint8_t* buf, int size, const char* filename) { - pc.printf("loading[%s]... ", filename); +uint8_t* load(uint32_t addr, uint32_t limit, const char* filename) { + pc.printf("loading[%s]", filename); FileHandle* fh = local.open(filename, O_RDONLY); MBED_ASSERT(fh); - int n = fh->read(buf, size); - pc.printf("%d bytes\n", n); + for(uint32_t fileSize = 0; fileSize <= limit;) { + uint8_t buf[256]; + size_t n = fh->read(buf, sizeof(buf)); + if (n == 0) { + pc.printf(" %d bytes\n", fileSize); + break; + } + bool result = ROMSLOT::Write(addr + fileSize, (const uint8_t*)buf, sizeof(buf)); + MBED_ASSERT(result); + fileSize += n; + pc.putc('.'); + } fh->close(); - return buf; + return (uint8_t*)addr; } int main() { pc.baud(115200); - pc.puts("LPC1114 emulator pre-alpha version\n"); + pc.puts("mbed LPC1114 emulator pre-alpha version\n"); MyEMU1114 mcu; - mcu.assign_flash(load(flash, 32*1024, "LPC1114.IMG")); + mcu.assign_flash(load(0x00040000, 0x8000, "LPC1114.IMG")); mcu.reset(); for(;;) { @@ -43,4 +60,5 @@ } /* NOTREACHED */ } +#endif // TARGET_LPC1768