+ /* open dump files */
+ if(open_dumpfiles(&lpc)<0)
+ goto end;
+
+ /* parse intel hex file and write to ram */
+ printf("write firmware to ram ...\n");
+ firmware_to_mem(&lpc,RAM);
+
+ /* unlock go cmd */
+ printf("unlock go command ...\n");
+ unlock_go(&lpc);
+
+ /* go! */
+ printf("go ...\n");
+ ret=go(&lpc);
+
+ /* flush the lpc2220 tx buf */
+ lpc_txbuf_flush(&lpc);
+
+ /* reconfigure the serial port */
+ if(reconfig_serial_device(&lpc)<0)
+ goto end;
+
+ /* download flash/bootloader content */
+ if(lpc.info&BANK0)
+ dump_files(lpc.sfd,lpc.b0fd,BANK0_ADDR,BANK_SIZE);
+ if(lpc.info&BANK2)
+ dump_files(lpc.sfd,lpc.b2fd,BANK2_ADDR,BANK_SIZE);
+ if(lpc.info&BL)
+ dump_files(lpc.sfd,lpc.blfd,BL_ADDR,BL_SIZE);
+
+ /* write a firmware to the lpc flash */
+ if(lpc.info&FLASHFW) {
+ send_cmd(lpc.sfd,0,0,CMD_CHIP_ERASE);
+ lpc.roff=BANK0_ADDR;
+ firmware_to_mem(&lpc,FLASH);
+ }