![](/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" .
main.cpp@1:913dfd59e25a, 2015-08-10 (annotated)
- 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?
User | Revision | Line number | New 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 |