Norimasa Okamoto / Mbed 2 deprecated emuISP

Dependencies:   mbed

Committer:
va009039
Date:
Tue Mar 22 16:25:41 2016 +0900
Revision:
3:ccc673a10485
Parent:
2:e3c085ac77f1
Child:
4:05f33cc747fd
lpc1114fn28

Who changed what in which revision?

UserRevisionLine numberNew contents of line
va009039 3:ccc673a10485 1 // main.cpp 2016/3/22
va009039 2:e3c085ac77f1 2 // UART ISP emulator
va009039 1:4ff199bddbc1 3 #include "mbed.h"
va009039 1:4ff199bddbc1 4 #include "SimpleSerial.h"
va009039 1:4ff199bddbc1 5 #include "Memory.h"
va009039 1:4ff199bddbc1 6 #include "BaseEmuISP.h"
va009039 1:4ff199bddbc1 7
va009039 3:ccc673a10485 8 #if defined(TARGET_LPC1768)
va009039 1:4ff199bddbc1 9 SimpleSerial uart(USBTX, USBRX);
va009039 2:e3c085ac77f1 10 RawSerial dbg(p9, p10);
va009039 2:e3c085ac77f1 11
va009039 3:ccc673a10485 12 #elif defined(TARGET_NUCLEO_L152RE)
va009039 3:ccc673a10485 13 SimpleSerial uart(USBTX, USBRX);
va009039 2:e3c085ac77f1 14 RawSerial dbg(PB_10, PB_11);
va009039 2:e3c085ac77f1 15
va009039 2:e3c085ac77f1 16 #else
va009039 2:e3c085ac77f1 17 #error "target error"
va009039 1:4ff199bddbc1 18 #endif
va009039 1:4ff199bddbc1 19
va009039 3:ccc673a10485 20 #ifndef LPC1114FN28_ISP
va009039 3:ccc673a10485 21 #define LPC810FN8_ISP
va009039 3:ccc673a10485 22 #endif
va009039 1:4ff199bddbc1 23
va009039 3:ccc673a10485 24 #if defined(LPC810FN8_ISP)
va009039 1:4ff199bddbc1 25 class emuISP : public BaseEmuISP {
va009039 3:ccc673a10485 26 public:
va009039 3:ccc673a10485 27 emuISP():mem(0x4000, 0x1000) {}
va009039 3:ccc673a10485 28 virtual int BootCodeVersion() { return 4<<8|13; } // 4.13
va009039 3:ccc673a10485 29 virtual int PartID() { return 0x00008100; } // LPC810M021FN8
va009039 1:4ff199bddbc1 30 virtual int Getch() {return uart.readable() ? uart.getc() : -1;}
va009039 1:4ff199bddbc1 31 virtual void Putch(int c) {uart.putc(c);}
va009039 1:4ff199bddbc1 32 virtual void DebugPutch(int c) {dbg.putc(c);}
va009039 3:ccc673a10485 33 virtual bool WriteData(int addr, int c) { return mem.Write(addr, c);}
va009039 1:4ff199bddbc1 34 virtual int ReadData(int addr) {return mem.Read(addr);}
va009039 3:ccc673a10485 35 virtual bool CopyData(int dst, int src, int count) { return mem.Copy(dst, src, count);}
va009039 3:ccc673a10485 36 Memory mem;
va009039 1:4ff199bddbc1 37 } isp;
va009039 1:4ff199bddbc1 38
va009039 3:ccc673a10485 39 #elif defined(LPC1114FN28_ISP)
va009039 3:ccc673a10485 40 class emuISP : public BaseEmuISP {
va009039 3:ccc673a10485 41 public:
va009039 3:ccc673a10485 42 emuISP():mem(0x8000, 0x4000) {}
va009039 3:ccc673a10485 43 virtual int BootCodeVersion() { return 1<<8|7; } // 1.7
va009039 3:ccc673a10485 44 virtual int PartID() { return 0x1a40902b; } // LPC1114FN28/102
va009039 3:ccc673a10485 45 virtual bool UuencodeMode() { return true; }
va009039 3:ccc673a10485 46 virtual int Getch() {return uart.readable() ? uart.getc() : -1;}
va009039 3:ccc673a10485 47 virtual void Putch(int c) {uart.putc(c);}
va009039 3:ccc673a10485 48 virtual void DebugPutch(int c) {dbg.putc(c);}
va009039 3:ccc673a10485 49 virtual bool WriteData(int addr, int c) { return mem.Write(addr, c);}
va009039 3:ccc673a10485 50 virtual int ReadData(int addr) {return mem.Read(addr);}
va009039 3:ccc673a10485 51 virtual bool CopyData(int dst, int src, int count) { return mem.Copy(dst, src, count);}
va009039 3:ccc673a10485 52 Memory mem;
va009039 3:ccc673a10485 53 } isp;
va009039 3:ccc673a10485 54 #endif
va009039 3:ccc673a10485 55
va009039 3:ccc673a10485 56
va009039 1:4ff199bddbc1 57 int main() {
va009039 1:4ff199bddbc1 58 uart.baud(9600);
va009039 2:e3c085ac77f1 59 dbg.baud(115200);
va009039 2:e3c085ac77f1 60
va009039 1:4ff199bddbc1 61 isp.Reset();
va009039 1:4ff199bddbc1 62 for(;;) {
va009039 1:4ff199bddbc1 63 isp.Poll();
va009039 1:4ff199bddbc1 64 }
va009039 1:4ff199bddbc1 65 }
va009039 1:4ff199bddbc1 66