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:
Sun Jun 22 12:04:16 2014 +0000
Revision:
18:5ed1759e863b
Parent:
14:e6acf863207e
add LPC11U68 interface.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
va009039 8:d7f5d80531e4 1 // Flash.h 2014/2/18
va009039 0:27d35fa263b5 2 #pragma once
va009039 0:27d35fa263b5 3 #include "Target2.h"
va009039 0:27d35fa263b5 4
va009039 5:2774358f5e4f 5 /** Flash writer
va009039 5:2774358f5e4f 6 */
va009039 0:27d35fa263b5 7 class Flash {
va009039 0:27d35fa263b5 8 public:
va009039 0:27d35fa263b5 9 Flash(Target2* target, Serial* usbpc);
va009039 3:d7a7cde0bfb8 10 bool init();
va009039 0:27d35fa263b5 11 bool write(const char* filename);
va009039 6:5da6ad51a18f 12 bool write(int addr, const uint8_t* data, int size);
va009039 0:27d35fa263b5 13 bool verify(const char* filename);
va009039 2:32e9437348ad 14 enum IAP_CMD {
va009039 2:32e9437348ad 15 PREPARE_SECTOR = 50,
va009039 2:32e9437348ad 16 COPY_RAM_TO_FLASH = 51,
va009039 2:32e9437348ad 17 ERASE_SECTOR = 52,
va009039 2:32e9437348ad 18 BLANK_CHECK = 53,
va009039 2:32e9437348ad 19 READ_PART_ID = 54,
va009039 2:32e9437348ad 20 READ_BOOT_CODE_VERSION = 55,
va009039 2:32e9437348ad 21 COMPARE = 56,
va009039 2:32e9437348ad 22 REINVOKE_ISP = 57,
va009039 2:32e9437348ad 23 READ_UID = 58,
va009039 2:32e9437348ad 24 };
va009039 2:32e9437348ad 25 enum IAP_STATUS {
va009039 2:32e9437348ad 26 CMD_SUCCESS = 0,
va009039 2:32e9437348ad 27 INVALID_COMMAND =1,
va009039 2:32e9437348ad 28 SRC_ADDR_ERROR = 2,
va009039 2:32e9437348ad 29 DST_ADDR_ERROR = 3,
va009039 2:32e9437348ad 30 SRC_ADDR_NOT_MAPPED = 4,
va009039 2:32e9437348ad 31 DST_ADDR_NOT_MAPPED = 5,
va009039 2:32e9437348ad 32 COUNT_ERROR = 6,
va009039 2:32e9437348ad 33 INVALID_SECTOR = 7,
va009039 2:32e9437348ad 34 SECTOR_NOT_BLANK = 8,
va009039 2:32e9437348ad 35 SECTOR_NOT_PREPARED_FOR_WRITE_OPERATION = 9,
va009039 2:32e9437348ad 36 COMPARE_ERROR = 10,
va009039 2:32e9437348ad 37 BUSY = 11,
va009039 2:32e9437348ad 38 ADDR_ERROR = 13,
va009039 2:32e9437348ad 39 };
va009039 2:32e9437348ad 40 IAP_STATUS remoteIAP(IAP_CMD cmd, uint32_t p0=0, uint32_t p1=0, uint32_t p2=0, uint32_t p3=0);
va009039 8:d7f5d80531e4 41 uint32_t part_id;
va009039 8:d7f5d80531e4 42
va009039 9:7e71c20c96e4 43 void attachEvent(void (*ptr)()) {
va009039 9:7e71c20c96e4 44 if (ptr != NULL) {
va009039 9:7e71c20c96e4 45 onUpdate = ptr;
va009039 9:7e71c20c96e4 46 }
va009039 9:7e71c20c96e4 47 }
va009039 9:7e71c20c96e4 48
va009039 0:27d35fa263b5 49 private:
va009039 0:27d35fa263b5 50 void _setup();
va009039 8:d7f5d80531e4 51 bool remoteREG(uint32_t addr, uint32_t value);
va009039 8:d7f5d80531e4 52 bool init_lpc1114fn28_lpc810(int sector_size);
va009039 8:d7f5d80531e4 53 bool flash_init_lpc1347();
va009039 8:d7f5d80531e4 54 bool flash_init_lpc1769();
va009039 8:d7f5d80531e4 55 int addr_to_sector(int addr);
va009039 8:d7f5d80531e4 56 bool sector_head(int addr);
va009039 6:5da6ad51a18f 57 bool _write_to_ram(int addr, int size, const uint8_t* buf);
va009039 0:27d35fa263b5 58 bool _patch(uint8_t* buf, int size, int addr);
va009039 9:7e71c20c96e4 59 void (*onUpdate)();
va009039 9:7e71c20c96e4 60 void update() {
va009039 9:7e71c20c96e4 61 if (onUpdate) {
va009039 9:7e71c20c96e4 62 (*onUpdate)();
va009039 9:7e71c20c96e4 63 }
va009039 9:7e71c20c96e4 64 }
va009039 8:d7f5d80531e4 65 struct {
va009039 8:d7f5d80531e4 66 int iap_cclk;
va009039 8:d7f5d80531e4 67 int sector_size;
va009039 8:d7f5d80531e4 68 } cfg;
va009039 14:e6acf863207e 69 int ram_addr;
va009039 14:e6acf863207e 70 int ram_size;
va009039 9:7e71c20c96e4 71
va009039 0:27d35fa263b5 72 protected:
va009039 0:27d35fa263b5 73 Target2* _target;
va009039 0:27d35fa263b5 74 Serial* _pc;
va009039 0:27d35fa263b5 75 };