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

Revision:
2:32e9437348ad
Parent:
0:27d35fa263b5
Child:
3:d7a7cde0bfb8
--- a/Flash.h	Mon Sep 02 17:33:08 2013 +0000
+++ b/Flash.h	Thu Sep 05 09:34:12 2013 +0000
@@ -1,27 +1,42 @@
-// Flash.h 2013/9/1
+// Flash.h 2013/9/5
 #pragma once
 #include "Target2.h"
 
-#define IAP_CMD_PREPARE_SECTOR    50
-#define IAP_CMD_COPY_RAM_TO_FLASH 51
-#define IAP_CMD_ERASE_SECTOR      52
-#define IAP_CMD_BLANK_CHECK       53
-#define IAP_CMD_READ_PART_ID      54
-#define IAP_CMD_COMPARE           56
-#define IAP_CMD_REINVOKE_ISP      57
-#define IAP_READ_UID              58
-
 #define IAP_CCLK 12000
 
-#define IAP_CMD_SUCCESS 0
-
 class Flash {
 public:
     Flash(Target2* target, Serial* usbpc);
     bool write(const char* filename);
     bool eraseAll();
     bool verify(const char* filename);
-    uint32_t remoteIAP(uint32_t cmd, uint32_t p0=0, uint32_t p1=0, uint32_t p2=0, uint32_t p3=0);
+    enum IAP_CMD {
+        PREPARE_SECTOR = 50,
+        COPY_RAM_TO_FLASH = 51,
+        ERASE_SECTOR = 52,
+        BLANK_CHECK = 53,
+        READ_PART_ID = 54,
+        READ_BOOT_CODE_VERSION = 55,
+        COMPARE = 56,
+        REINVOKE_ISP = 57,
+        READ_UID = 58,
+    };
+    enum IAP_STATUS {
+        CMD_SUCCESS = 0,
+        INVALID_COMMAND =1,
+        SRC_ADDR_ERROR = 2,
+        DST_ADDR_ERROR = 3,
+        SRC_ADDR_NOT_MAPPED = 4,
+        DST_ADDR_NOT_MAPPED = 5,
+        COUNT_ERROR = 6,
+        INVALID_SECTOR = 7,
+        SECTOR_NOT_BLANK = 8,
+        SECTOR_NOT_PREPARED_FOR_WRITE_OPERATION = 9,
+        COMPARE_ERROR = 10,
+        BUSY = 11,
+        ADDR_ERROR = 13,
+    };
+    IAP_STATUS remoteIAP(IAP_CMD cmd, uint32_t p0=0, uint32_t p1=0, uint32_t p2=0, uint32_t p3=0);
 private:
     void _setup();
     bool _write_to_ram(int addr, int size, uint8_t* buf);