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
Flash.h
- Committer:
- va009039
- Date:
- 2014-06-22
- Revision:
- 18:5ed1759e863b
- Parent:
- 14:e6acf863207e
File content as of revision 18:5ed1759e863b:
// Flash.h 2014/2/18 #pragma once #include "Target2.h" /** Flash writer */ class Flash { public: Flash(Target2* target, Serial* usbpc); bool init(); bool write(const char* filename); bool write(int addr, const uint8_t* data, int size); bool verify(const char* filename); enum IAP_CMD { PREPARE_SECTOR = 50, COPY_RAM_TO_FLASH = 51, ERASE_SECTOR = 52, BLANK_CHECK = 53, READ_PART_ID = 54, READ_BOOT_CODE_VERSION = 55, COMPARE = 56, REINVOKE_ISP = 57, READ_UID = 58, }; enum IAP_STATUS { CMD_SUCCESS = 0, INVALID_COMMAND =1, SRC_ADDR_ERROR = 2, DST_ADDR_ERROR = 3, SRC_ADDR_NOT_MAPPED = 4, DST_ADDR_NOT_MAPPED = 5, COUNT_ERROR = 6, INVALID_SECTOR = 7, SECTOR_NOT_BLANK = 8, SECTOR_NOT_PREPARED_FOR_WRITE_OPERATION = 9, COMPARE_ERROR = 10, BUSY = 11, ADDR_ERROR = 13, }; IAP_STATUS remoteIAP(IAP_CMD cmd, uint32_t p0=0, uint32_t p1=0, uint32_t p2=0, uint32_t p3=0); uint32_t part_id; void attachEvent(void (*ptr)()) { if (ptr != NULL) { onUpdate = ptr; } } private: void _setup(); bool remoteREG(uint32_t addr, uint32_t value); bool init_lpc1114fn28_lpc810(int sector_size); bool flash_init_lpc1347(); bool flash_init_lpc1769(); int addr_to_sector(int addr); bool sector_head(int addr); bool _write_to_ram(int addr, int size, const uint8_t* buf); bool _patch(uint8_t* buf, int size, int addr); void (*onUpdate)(); void update() { if (onUpdate) { (*onUpdate)(); } } struct { int iap_cclk; int sector_size; } cfg; int ram_addr; int ram_size; protected: Target2* _target; Serial* _pc; };