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:
9:7e71c20c96e4
Parent:
8:d7f5d80531e4
Child:
11:ad8af1047350
--- a/main_KL46Z.cpp	Tue Feb 18 09:32:40 2014 +0000
+++ b/main_KL46Z.cpp	Thu Feb 20 09:43:03 2014 +0000
@@ -1,46 +1,52 @@
-// main_kl46z.cpp 2014/2/18
+// main_KL46Z.cpp 2014/2/20
 #if defined(TARGET_KL46Z)
 #include "Target2.h"
 #include "Flash.h"
-#include "Semihost.h"
 #include "RamDisk.h"
 #include "Storage.h"
+#include "Semihost.h"
 
 Serial pc(USBTX, USBRX);
-SWD swd(PTE2,PTE3,PTE6);       // SWDIO(dp12),SWCLK(dp3),nReset(dp23)
-Serial target_uart(PTE22,PTE23); // RXD(dp15),TXD(dp16)
+SWD swd(PTE2,PTE3,PTE6); // SWDIO,SWCLK,nReset
 InterruptIn sw1(SW1);
 InterruptIn sw3(SW3);
-DigitalOut led_sw(PTD5);
-DigitalOut led_tx(PTE29);
+DigitalOut led_disk(PTD5);
+DigitalOut led_flash(PTE29);
 #define LED_ON  0
 #define LED_OFF 1
 
+void callback_disk() {
+    led_disk = !led_disk;
+}
+
+void callback_flash() {
+    led_flash = !led_flash;
+}
+
 __IO bool write_start = false;
 void swIRQ() {
-    led_sw = LED_ON;
     wait_ms(100);
-    led_sw = LED_OFF;
     write_start = true;
 }
 
 int main() {
     pc.baud(9600);
     pc.printf("%s\n", __FILE__);
-    led_sw = LED_OFF;
-    led_tx = LED_OFF;
+    led_disk = LED_OFF;
+    led_flash = LED_OFF;
 
     sw1.rise(swIRQ);
     sw3.rise(swIRQ);
         
     RamDisk* ramdisk = new RamDisk;
+    ramdisk->attachEvent(callback_disk);
     USBStorage2* usb = new USBStorage2(ramdisk);
     LocalStorage* local = NULL;
     Target2* lpc = new Target2(&swd);
-    pc.printf("*** dumb-terminal ***\n\n");
     lpc->setup();
-    Semihost semihost(lpc, &pc);
+    Semihost semihost(lpc, &pc, usb);
     semihost.mount("/local");
+    lpc->resume(); // C_DEBUGEN ON
     while(1) {
         if (write_start) {
             if (local) {
@@ -52,6 +58,7 @@
                 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());
@@ -61,14 +68,9 @@
             }
             lpc->SoftwareReset();    
             lpc->HardwareReset();
+            led_flash = LED_OFF;
             write_start = false;
         }
-        if (target_uart.readable()) {
-            pc.putc(target_uart.getc());
-        }
-        if(pc.readable()) {
-            target_uart.putc(pc.getc());
-        }
         semihost.poll();
     }        
 }