![](/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:
- 9:ef9a58221fbe
- Parent:
- 6:41e64a077678
diff -r e41167fe6dd8 -r ef9a58221fbe main.cpp --- a/main.cpp Sat Apr 09 07:44:46 2016 +0000 +++ b/main.cpp Sat Apr 09 16:49:02 2016 +0900 @@ -1,4 +1,4 @@ -// main.cpp 2016/4/7 +// emu1114/main.cpp 2016/4/9 #if defined(TARGET_LPC1768) #include "EMU111x.h" #include "SDStorage.h" @@ -13,6 +13,7 @@ #else LocalFileSystem local("local"); #endif +ROMSLOT slot; class MyEMU1114 : public EMU111x { virtual void DigitalWrite_Callback(int port, int pin, int value) { @@ -26,20 +27,20 @@ virtual int SerialReadable_Callback(int ch) { return pc.readable(); } }; -uint8_t* load(uint32_t addr, uint32_t limit, const char* filename) { +uint8_t* load(size_t limit, const char* filename) { pc.printf("loading[%s]", filename); FileHandle* fh = local.open(filename, O_RDONLY); MBED_ASSERT(fh); - for(uint32_t fileSize = 0; fileSize <= limit;) { + uint32_t addr = slot.New(limit); + for(size_t n = 0; n <= limit;) { uint8_t buf[256]; - size_t n = fh->read(buf, sizeof(buf)); - if (n == 0) { - pc.printf(" %d bytes\n", fileSize); + size_t r = fh->read(buf, sizeof(buf)); + if (r == 0) { + pc.printf(" %u bytes\n", n); break; } - bool result = ROMSLOT::Write(addr + fileSize, (const uint8_t*)buf, sizeof(buf)); - MBED_ASSERT(result); - fileSize += n; + slot.Write(addr + n, (const uint8_t*)buf, sizeof(buf)); + n += r; pc.putc('.'); } fh->close(); @@ -48,10 +49,10 @@ int main() { pc.baud(115200); - pc.puts("mbed LPC1114 emulator pre-alpha version\n"); + pc.puts("mbed LPC1114 emulator pre-alpha version 0.01\n"); MyEMU1114 mcu; - mcu.assign_flash(load(0x00040000, 0x8000, "LPC1114.IMG")); + mcu.assign_flash(load(0x8000, "LPC1114.IMG")); mcu.reset(); for(;;) {