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:
Mon Aug 10 22:52:48 2015 +0900
Revision:
1:913dfd59e25a
Parent:
0:e38daa7b1a22
Child:
3:5df725af50e0
add files.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
va009039 1:913dfd59e25a 1 // main.cpp 2015/8/10
va009039 1:913dfd59e25a 2 #include "EMU81x.h"
va009039 1:913dfd59e25a 3 #include "mbed_blinky_LPC812_bin.h"
va009039 0:e38daa7b1a22 4
va009039 0:e38daa7b1a22 5 DigitalOut led1(LED1);
va009039 0:e38daa7b1a22 6 RawSerial pc(USBTX,USBRX);
va009039 0:e38daa7b1a22 7
va009039 1:913dfd59e25a 8 LocalFileSystem local("local");
va009039 0:e38daa7b1a22 9 uint8_t flash[1024*16] __attribute__((section("AHBSRAM0")));
va009039 0:e38daa7b1a22 10 uint8_t rom[1024*8] __attribute__((section("AHBSRAM1")));
va009039 0:e38daa7b1a22 11
va009039 1:913dfd59e25a 12 class MyEMU812 : public EMU81x {
va009039 1:913dfd59e25a 13 virtual void DigitalWrite_Callback(int port, int pin, int value) {
va009039 1:913dfd59e25a 14 if (pin == 16) { // PIO0_16
va009039 1:913dfd59e25a 15 led1 = value;
va009039 1:913dfd59e25a 16 }
va009039 1:913dfd59e25a 17 }
va009039 1:913dfd59e25a 18 virtual void SerialPutc_Callback(int ch, uint8_t c) {
va009039 1:913dfd59e25a 19 pc.putc(c);
va009039 1:913dfd59e25a 20 }
va009039 1:913dfd59e25a 21 };
va009039 1:913dfd59e25a 22
va009039 0:e38daa7b1a22 23 int load(uint8_t* buf, int size, const char* filename) {
va009039 0:e38daa7b1a22 24 pc.printf("loading[%s]... ", filename);
va009039 0:e38daa7b1a22 25 FileHandle* fh = local.open(filename, O_RDONLY);
va009039 1:913dfd59e25a 26 if (fh == NULL) {
va009039 1:913dfd59e25a 27 pc.printf("fail\n");
va009039 1:913dfd59e25a 28 return -1;
va009039 1:913dfd59e25a 29 }
va009039 0:e38daa7b1a22 30 int n = fh->read(buf, size);
va009039 0:e38daa7b1a22 31 fh->close();
va009039 0:e38daa7b1a22 32 pc.printf("%d bytes\n", n);
va009039 0:e38daa7b1a22 33 return n;
va009039 0:e38daa7b1a22 34 }
va009039 1:913dfd59e25a 35
va009039 0:e38daa7b1a22 36 int main() {
va009039 0:e38daa7b1a22 37 pc.baud(115200);
va009039 1:913dfd59e25a 38 pc.puts("LPC812 emulator\n");
va009039 1:913dfd59e25a 39
va009039 1:913dfd59e25a 40 MyEMU812 mcu;
va009039 1:913dfd59e25a 41 mcu.assign_flash(mbed_blinky_LPC812_bin);
va009039 1:913dfd59e25a 42
va009039 0:e38daa7b1a22 43 if (load(flash, sizeof(flash), "LPC812.IMG") >= 0) {
va009039 1:913dfd59e25a 44 load(rom, sizeof(rom), "LPC812.ROM");
va009039 1:913dfd59e25a 45 mcu.assign_flash(flash);
va009039 1:913dfd59e25a 46 mcu.assign_rom(rom);
va009039 0:e38daa7b1a22 47 }
va009039 1:913dfd59e25a 48
va009039 1:913dfd59e25a 49 mcu.reset();
va009039 1:913dfd59e25a 50 for(;;) {
va009039 1:913dfd59e25a 51 mcu.run(100);
va009039 1:913dfd59e25a 52 mcu.clock_in(20000);
va009039 0:e38daa7b1a22 53 }
va009039 1:913dfd59e25a 54 /* NOTREACHED */
va009039 0:e38daa7b1a22 55 }
va009039 1:913dfd59e25a 56