semihost server example program

Dependencies:   SWD mbed USBLocalFileSystem BaseDAP USBDAP

/media/uploads/va009039/kl46z-lpc800-360x480.jpg

LPCXpresso
LPC11U68
LPCXpresso
LPC1549
FRDM-KL46ZEA LPC4088 QSB
app-board
LPC1768
app-board
LPC810LPC1114FN28
serverserverserverserverserverclientclient
SWDIOD12D12D12p25p21p4(P0_2)p12
SWCLKD10D10D10p26p22p3(P0_3)p3
nRESET
*option
D6D6D6p34p30p1(P0_5)p23
GNDGNDGNDGNDp1p1p7p22
3.3VP3V3P3V3P3V3p44p40p6p21
flash writeSW2(P0_1)SW3(P1_9)SW1p14
joystick
center
p14
joystick
center

client example:

Import programlpc810-semihost_helloworld

semihost client example program

Committer:
va009039
Date:
Thu Sep 05 09:34:12 2013 +0000
Revision:
2:32e9437348ad
Parent:
0:27d35fa263b5
Child:
3:d7a7cde0bfb8
bug fix sys_writec,sys_exit not resume.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
va009039 2:32e9437348ad 1 // Flash.h 2013/9/5
va009039 0:27d35fa263b5 2 #pragma once
va009039 0:27d35fa263b5 3 #include "Target2.h"
va009039 0:27d35fa263b5 4
va009039 0:27d35fa263b5 5 #define IAP_CCLK 12000
va009039 0:27d35fa263b5 6
va009039 0:27d35fa263b5 7 class Flash {
va009039 0:27d35fa263b5 8 public:
va009039 0:27d35fa263b5 9 Flash(Target2* target, Serial* usbpc);
va009039 0:27d35fa263b5 10 bool write(const char* filename);
va009039 0:27d35fa263b5 11 bool eraseAll();
va009039 0:27d35fa263b5 12 bool verify(const char* filename);
va009039 2:32e9437348ad 13 enum IAP_CMD {
va009039 2:32e9437348ad 14 PREPARE_SECTOR = 50,
va009039 2:32e9437348ad 15 COPY_RAM_TO_FLASH = 51,
va009039 2:32e9437348ad 16 ERASE_SECTOR = 52,
va009039 2:32e9437348ad 17 BLANK_CHECK = 53,
va009039 2:32e9437348ad 18 READ_PART_ID = 54,
va009039 2:32e9437348ad 19 READ_BOOT_CODE_VERSION = 55,
va009039 2:32e9437348ad 20 COMPARE = 56,
va009039 2:32e9437348ad 21 REINVOKE_ISP = 57,
va009039 2:32e9437348ad 22 READ_UID = 58,
va009039 2:32e9437348ad 23 };
va009039 2:32e9437348ad 24 enum IAP_STATUS {
va009039 2:32e9437348ad 25 CMD_SUCCESS = 0,
va009039 2:32e9437348ad 26 INVALID_COMMAND =1,
va009039 2:32e9437348ad 27 SRC_ADDR_ERROR = 2,
va009039 2:32e9437348ad 28 DST_ADDR_ERROR = 3,
va009039 2:32e9437348ad 29 SRC_ADDR_NOT_MAPPED = 4,
va009039 2:32e9437348ad 30 DST_ADDR_NOT_MAPPED = 5,
va009039 2:32e9437348ad 31 COUNT_ERROR = 6,
va009039 2:32e9437348ad 32 INVALID_SECTOR = 7,
va009039 2:32e9437348ad 33 SECTOR_NOT_BLANK = 8,
va009039 2:32e9437348ad 34 SECTOR_NOT_PREPARED_FOR_WRITE_OPERATION = 9,
va009039 2:32e9437348ad 35 COMPARE_ERROR = 10,
va009039 2:32e9437348ad 36 BUSY = 11,
va009039 2:32e9437348ad 37 ADDR_ERROR = 13,
va009039 2:32e9437348ad 38 };
va009039 2:32e9437348ad 39 IAP_STATUS remoteIAP(IAP_CMD cmd, uint32_t p0=0, uint32_t p1=0, uint32_t p2=0, uint32_t p3=0);
va009039 0:27d35fa263b5 40 private:
va009039 0:27d35fa263b5 41 void _setup();
va009039 0:27d35fa263b5 42 bool _write_to_ram(int addr, int size, uint8_t* buf);
va009039 0:27d35fa263b5 43 int _sector(int addr);
va009039 0:27d35fa263b5 44 bool _patch(uint8_t* buf, int size, int addr);
va009039 0:27d35fa263b5 45 protected:
va009039 0:27d35fa263b5 46 Target2* _target;
va009039 0:27d35fa263b5 47 Serial* _pc;
va009039 0:27d35fa263b5 48 };