Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
main.cpp@3:ccc673a10485, 2016-03-22 (annotated)
- 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?
User | Revision | Line number | New 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 |