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

Target2.h

Committer:
va009039
Date:
2013-09-08
Revision:
3:d7a7cde0bfb8
Parent:
2:32e9437348ad
Child:
4:5e4107edcbdb

File content as of revision 3:d7a7cde0bfb8:

// Target2.h 2013/9/8
#pragma once
#include "mbed.h"
#include "SWD.h"

#define TARGET_RUNNING  (1<<0)
#define TARGET_HALTED   (1<<1)

class Target2;
class CoreReg {
public:
    void setup(Target2* target, uint8_t reg);
    uint32_t read();
    void write(uint32_t value);
    
    CoreReg& operator= (int value) {
        write(value);
        return *this;
    }

    CoreReg& operator= (CoreReg& rhs) {
        write(rhs.read());
        return *this;
    }

    operator uint32_t() {
        return read();
    }
protected:
    Target2* _target;
    uint8_t _reg;    
};

class Target2 {
public:
    Target2(PinName swdio, PinName swclk, PinName reset, Serial* usbpc);
    bool setup();
    uint32_t readMemory(uint32_t addr);
    void readMemory(uint32_t addr, uint32_t* data, int count);
    void writeMemory(uint32_t addr, uint32_t data);
    void writeMemory(uint32_t addr, uint32_t* data, int count);
    uint8_t readMemory8(uint32_t addr);
    void writeMemory8(uint32_t addr, uint8_t data);
    void halt();
    void resume();
    void step();
    void Abort();
    void HardwareReset();
    void SoftwareReset();
    int getStatus();
    bool wait_status(int status, int timeout_ms = 500);
    CoreReg r0;
    CoreReg r1; 
    CoreReg r2; 
    CoreReg r3; 
    CoreReg r4; 
    CoreReg r5; 
    CoreReg r6; 
    CoreReg r7; 
    CoreReg r8; 
    CoreReg r9; 
    CoreReg r10; 
    CoreReg r11; 
    CoreReg r12; 
    CoreReg sp; 
    CoreReg lr; 
    CoreReg pc;
    CoreReg xpsr;
    
    uint32_t idcode;
private:
    void _setaddr(uint32_t addr); 
    void _setaddr8(uint32_t addr); 
protected:
    SWD _swd;
    Serial* _pc;
};