mbed LPC1114 emulator pre-alpha version

Dependencies:   BaseV6M mbed F12RFileSystem F32RFileSystem ROMSLOT SDStorage

Fork of emu812 by Norimasa Okamoto

480
TOYOSHIKI TINY BASIC mbed Edition TTB_mbed_LPC1114.bin save as "LPC1114.IMG" .

Committer:
va009039
Date:
Wed Aug 19 16:51:47 2015 +0900
Revision:
4:6629544a482e
Parent:
3:5df725af50e0
Child:
6:41e64a077678
add DLAB.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
va009039 4:6629544a482e 1 // main.cpp 2015/8/19
va009039 3:5df725af50e0 2 #include "EMU111x.h"
va009039 0:e38daa7b1a22 3
va009039 3:5df725af50e0 4 DigitalOut led1(LED1),led2(LED2);
va009039 0:e38daa7b1a22 5 RawSerial pc(USBTX,USBRX);
va009039 0:e38daa7b1a22 6
va009039 1:913dfd59e25a 7 LocalFileSystem local("local");
va009039 3:5df725af50e0 8 uint8_t* flash = (uint8_t*)0x2007c000; // AHBSRAM0,AHBSRAM1
va009039 0:e38daa7b1a22 9
va009039 3:5df725af50e0 10 class MyEMU1114 : public EMU111x {
va009039 1:913dfd59e25a 11 virtual void DigitalWrite_Callback(int port, int pin, int value) {
va009039 3:5df725af50e0 12 switch(port<<8|pin) {
va009039 3:5df725af50e0 13 case 1<<8|5: led1 = value; break; // PIO1_5(LED1)
va009039 3:5df725af50e0 14 case 0<<8|7: led2 = value; break; // PIO0_7(LED2)
va009039 1:913dfd59e25a 15 }
va009039 1:913dfd59e25a 16 }
va009039 3:5df725af50e0 17 virtual void SerialPutc_Callback(int ch, uint8_t c) { pc.putc(c); }
va009039 3:5df725af50e0 18 virtual int SerialGetc_Callback(int ch) { return pc.getc(); }
va009039 3:5df725af50e0 19 virtual int SerialReadable_Callback(int ch) { return pc.readable(); }
va009039 1:913dfd59e25a 20 };
va009039 1:913dfd59e25a 21
va009039 3:5df725af50e0 22 uint8_t* load(uint8_t* buf, int size, const char* filename) {
va009039 0:e38daa7b1a22 23 pc.printf("loading[%s]... ", filename);
va009039 0:e38daa7b1a22 24 FileHandle* fh = local.open(filename, O_RDONLY);
va009039 3:5df725af50e0 25 MBED_ASSERT(fh);
va009039 0:e38daa7b1a22 26 int n = fh->read(buf, size);
va009039 3:5df725af50e0 27 pc.printf("%d bytes\n", n);
va009039 0:e38daa7b1a22 28 fh->close();
va009039 3:5df725af50e0 29 return buf;
va009039 0:e38daa7b1a22 30 }
va009039 1:913dfd59e25a 31
va009039 0:e38daa7b1a22 32 int main() {
va009039 0:e38daa7b1a22 33 pc.baud(115200);
va009039 4:6629544a482e 34 pc.puts("LPC1114 emulator pre-alpha version\n");
va009039 1:913dfd59e25a 35
va009039 3:5df725af50e0 36 MyEMU1114 mcu;
va009039 3:5df725af50e0 37 mcu.assign_flash(load(flash, 32*1024, "LPC1114.IMG"));
va009039 1:913dfd59e25a 38
va009039 1:913dfd59e25a 39 mcu.reset();
va009039 1:913dfd59e25a 40 for(;;) {
va009039 1:913dfd59e25a 41 mcu.run(100);
va009039 3:5df725af50e0 42 mcu.clock_in(250);
va009039 0:e38daa7b1a22 43 }
va009039 1:913dfd59e25a 44 /* NOTREACHED */
va009039 0:e38daa7b1a22 45 }
va009039 1:913dfd59e25a 46