semihost server example program
Dependencies: SWD mbed USBLocalFileSystem BaseDAP USBDAP
LPCXpresso LPC11U68 | LPCXpresso LPC1549 | FRDM-KL46Z | EA LPC4088 QSB app-board | LPC1768 app-board | LPC810 | LPC1114FN28 | |
---|---|---|---|---|---|---|---|
server | server | server | server | server | client | client | |
SWDIO | D12 | D12 | D12 | p25 | p21 | p4(P0_2) | p12 |
SWCLK | D10 | D10 | D10 | p26 | p22 | p3(P0_3) | p3 |
nRESET *option | D6 | D6 | D6 | p34 | p30 | p1(P0_5) | p23 |
GND | GND | GND | GND | p1 | p1 | p7 | p22 |
3.3V | P3V3 | P3V3 | P3V3 | p44 | p40 | p6 | p21 |
flash write | SW2(P0_1) | SW3(P1_9) | SW1 | p14 joystick center | p14 joystick center |
client example:
Import programlpc810-semihost_helloworld
semihost client example program
main.cpp
- Committer:
- va009039
- Date:
- 2014-06-22
- Revision:
- 18:5ed1759e863b
File content as of revision 18:5ed1759e863b:
// main.cpp 2014/6/22 #if 1 #include "Target2.h" #include "Flash.h" #include "USBLocalFileSystem.h" #include "Semihost.h" #include "mydebug.h" #if defined(TARGET_KL46Z) #define TARGET_SWDIO D12 #define TARGET_SWCLK D10 #define TARGET_nRESET D6 #define SW_PIN SW1 #define SW_MODE PullUp #define LED_OFF 1 #elif defined(TARGET_LPC1549) #define TARGET_SWDIO D12 #define TARGET_SWCLK D10 #define TARGET_nRESET D6 #define SW_PIN P1_9 // SW3 #define SW_MODE PullUp #define LED_OFF 1 #elif defined(TARGET_LPC11U68) #define TARGET_SWDIO D12 #define TARGET_SWCLK D10 #define TARGET_nRESET D6 #define SW_PIN P0_1 // SW2 #define SW_MODE PullUp #define LED_OFF 1 #elif defined(TARGET_LPC1768) #define TARGET_SWDIO p21 #define TARGET_SWCLK p22 #define TARGET_nRESET p30 #define SW_PIN p14 // joystick mbed application board #define LED_OFF 0 #elif defined(TARGET_LPC4088) #define TARGET_SWDIO p25 #define TARGET_SWCLK p26 #define TARGET_nRESET p34 #define SW_PIN p14 // joystick mbed application board #define LED_OFF 0 #else #error "target error" #endif Serial pc(USBTX,USBRX); SWD swd(TARGET_SWDIO, TARGET_SWCLK, TARGET_nRESET); InterruptIn sw(SW_PIN); DigitalOut led_flash(LED1); void callback_flash() { led_flash = !led_flash; } __IO bool write_start = false; void swIRQ() { wait_ms(100); write_start = true; } int main() { TRACE(); pc.baud(9600); pc.printf("%s\n", __FILE__); led_flash = LED_OFF; #ifdef SW_MODE sw.mode(SW_MODE); #endif sw.rise(swIRQ); USBLocalFileSystem* usb_local = new USBLocalFileSystem(); // RamDisk(64KB) Target2* lpc = new Target2(&swd); if (!lpc->setup()) { pc.printf("*** SWD error.\n"); } Semihost semihost(lpc, &pc, usb_local); semihost.mount("/local"); lpc->resume(); // C_DEBUGEN ON while(1) { if (write_start) { usb_local->lock(true); usb_local->remount(); char filename[64]; if (usb_local->find(filename, sizeof(filename), "*.BIN")) { pc.printf("*** bin filename=[%s]\n", filename); if (!lpc->setup()) { pc.printf("*** SWD error.\n"); } else { Flash flash(lpc, &pc); flash.attachEvent(callback_flash); if (flash.init()) { flash.write(filename); flash.verify(filename); } } } else { pc.printf("*** binary image file not found.\n"); } usb_local->lock(false); lpc->SoftwareReset(); lpc->HardwareReset(); led_flash = LED_OFF; write_start = false; } semihost.poll(); } } #endif