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" .
main.cpp@3:5df725af50e0, 2015-08-13 (annotated)
- Committer:
- va009039
- Date:
- Thu Aug 13 07:39:24 2015 +0900
- Revision:
- 3:5df725af50e0
- Parent:
- 1:913dfd59e25a
- Child:
- 4:6629544a482e
add LED2
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
va009039 |
3:5df725af50e0 | 1 | // main.cpp 2015/8/13 |
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 |
3:5df725af50e0 | 34 | pc.puts("LPC1114 emulator\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 |