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:
5:2774358f5e4f
Parent:
2:32e9437348ad
Child:
9:7e71c20c96e4
--- a/Semihost.h	Wed Sep 11 14:00:40 2013 +0000
+++ b/Semihost.h	Sat Sep 14 12:55:29 2013 +0000
@@ -1,8 +1,10 @@
-// Semihost.h 2013/9/4
+// Semihost.h 2013/9/14
 #pragma once
 #include "Target2.h"
 #include "mydebug.h"
 
+/** Semihosting
+ */
 class Semihost {
 public:
     Semihost(Target2* target, Serial* usbpc);
@@ -42,21 +44,21 @@
     template<typename T>
     void wr(uint32_t addr, T data) {
         TEST_ASSERT(addr <= 0x10001fff);
-        uint8_t buf[sizeof(T)];
-        *reinterpret_cast<T*>(buf) = data;
         for(int i = 0; i < sizeof(T); i++) {
-            _target->writeMemory8(addr+i, buf[i]);
+            _target->writeMemory8(addr+i, data);
+            data >>= 8;
         }
     }
 
     template<typename T>
     T rd(uint32_t addr) {
         TEST_ASSERT(addr <= 0x10001fff);
-        uint8_t buf[sizeof(T)];
-        for(int i = 0; i < sizeof(T); i++) {
-            buf[i] = _target->readMemory8(addr+i);
+        T data = 0;
+        for(int i = sizeof(T)-1; i >= 0; i--) {
+            data <<= 8;
+            data |= _target->readMemory8(addr+i);
         }
-        return *reinterpret_cast<T*>(buf);
+        return data;
     }
  
 protected: