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:
17:4e1205ce031f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main_LPC1768_LPC4088.cpp	Sat May 03 12:54:55 2014 +0000
@@ -0,0 +1,82 @@
+// main_LPC1768_LPC4088.cpp 2014/5/3
+#if defined(TARGET_LPC1768)||defined(TARGET_LPC4088)
+#include "Target2.h"
+#include "Flash.h"
+#include "USBLocalFileSystem.h"
+#include "Semihost.h"
+
+#if defined(TARGET_LPC1768)
+#define TARGET_SWDIO p21
+#define TARGET_SWCLK p22
+#define TARGET_nRESET p30
+#elif defined(TARGET_LPC4088)
+#define TARGET_SWDIO p25
+#define TARGET_SWCLK p26
+#define TARGET_nRESET p34
+#else
+#error "target error"
+#endif
+
+Serial pc(MBED_UARTUSB);
+SWD swd(TARGET_SWDIO, TARGET_SWCLK, TARGET_nRESET);
+InterruptIn sw_center(p14); // joystick mbed application board
+DigitalOut led_disk(LED1);
+DigitalOut led_flash(LED2);
+#define LED_ON  1
+#define LED_OFF 0
+
+void callback_disk() {
+    led_disk = !led_disk;
+}
+
+void callback_flash() {
+    led_flash = !led_flash;
+}
+
+__IO bool write_start = false;
+void swIRQ() {
+    wait_ms(100);
+    write_start = true;
+}
+
+int main() {
+    pc.baud(9600);
+    pc.printf("%s\n", __FILE__);
+    led_disk = LED_OFF;
+    led_flash = LED_OFF;
+
+    sw_center.rise(swIRQ);
+        
+    USBLocalFileSystem* usb_local = new USBLocalFileSystem(); // RamDisk(64KB)
+    usb_local->attachEvent(callback_disk);
+    Target2* lpc = new Target2(&swd);
+    lpc->setup();
+    Semihost semihost(lpc, &pc, usb_local);
+    semihost.mount("/local");
+    lpc->resume(); // C_DEBUGEN ON
+    while(1) {
+        if (write_start) {
+            usb_local->remount();
+            mystring filename;
+            if (LocalStorage::find_bin(filename)) {
+                pc.printf("*** bin filename=[%s]\n", filename.c_str());
+                lpc->setup();
+                Flash flash(lpc, &pc);
+                flash.attachEvent(callback_flash);
+                if (flash.init()) {
+                    flash.write(filename.c_str());
+                    flash.verify(filename.c_str());
+                }
+            } else {
+                pc.printf("*** binary image file not found.\n");
+            }
+            lpc->SoftwareReset();    
+            lpc->HardwareReset();
+            led_flash = LED_OFF;
+            write_start = false;
+        }
+        semihost.poll();
+    }        
+}
+#endif // TARGET_LPC1768, TARGET_LPC4088
+