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

Files at this revision

API Documentation at this revision

Comitter:
va009039
Date:
Fri Feb 21 07:05:53 2014 +0000
Parent:
9:7e71c20c96e4
Child:
11:ad8af1047350
Commit message:
run on LPC1768

Changed in this revision

main_LPC1768.cpp Show annotated file Show diff for this revision Revisions of this file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main_LPC1768.cpp	Fri Feb 21 07:05:53 2014 +0000
@@ -0,0 +1,75 @@
+// main_LPC1768.cpp 2014/2/21
+#if defined(TARGET_LPC1768)
+#include "Target2.h"
+#include "Flash.h"
+#include "RamDisk.h"
+#include "Storage.h"
+#include "Semihost.h"
+
+Serial pc(MBED_UARTUSB);
+SWD swd(p21, p22, p30); // SWDIO,SWCLK,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);
+        
+    RamDisk* ramdisk = new RamDisk;
+    ramdisk->attachEvent(callback_disk);
+    USBStorage2* usb = new USBStorage2(ramdisk);
+    LocalStorage* local = NULL;
+    Target2* lpc = new Target2(&swd);
+    lpc->setup();
+    Semihost semihost(lpc, &pc, usb);
+    semihost.mount("/local");
+    lpc->resume(); // C_DEBUGEN ON
+    while(1) {
+        if (write_start) {
+            if (local) {
+                delete local;
+            }    
+            local = new LocalStorage(ramdisk);     
+            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