X-Git-Url: https://hackdaworld.org/gitweb/?p=my-code%2Farm.git;a=blobdiff_plain;f=betty%2Flpcload.c;h=38d53864c778ab7922392c2327c326955bc3cec6;hp=e1e12b75f1733e66d5bf18260b508671b8328787;hb=3e0847553a5d514589116f8cf933d454a0db491c;hpb=a46c0ecf2bd18049cd2fd75d0ab57fe24a62d951 diff --git a/betty/lpcload.c b/betty/lpcload.c index e1e12b7..38d5386 100644 --- a/betty/lpcload.c +++ b/betty/lpcload.c @@ -556,6 +556,9 @@ int send_cmd(int sfd,u32 addr,u32 len,u8 cmd) { cnt+=ret; } + /* flush */ + tcflush(sfd,TCIOFLUSH); + return 0; } @@ -563,7 +566,6 @@ int write_to_flash(t_lpc *lpc,u8 *buf,u32 addr,int len) { int cnt,ret; u8 cksml,cksmr; - u8 check; int i; /* prepare addr */ @@ -575,39 +577,6 @@ int write_to_flash(t_lpc *lpc,u8 *buf,u32 addr,int len) { /* transfer data */ cnt=0; cksml=0; - while(len) { - for(i=0;i<2;i++) { - while(1) { - ret=write(lpc->sfd,buf+cnt+i,1); - if(ret<0) { - perror("transmit flash content (w)"); - return ret; - } - if(ret==1) - break; - } - while(1) { - ret=read(lpc->sfd,&check,1); - if(ret<0) { - perror("transmit flash content (r)"); - return ret; - } - if(ret==1) - break; - } - if(buf[cnt+i]!=check) - printf("FATAL: write to flash (transfer)\n"); - } - cksml+=buf[cnt]; - cksml+=buf[cnt+1]; - cnt+=2; - len-=2; - } - - - /* - cnt=0; - cksml=0; while(len) { ret=write(lpc->sfd,buf+cnt,len); if(ret<0) { @@ -619,7 +588,7 @@ int write_to_flash(t_lpc *lpc,u8 *buf,u32 addr,int len) { len-=ret; cnt+=ret; } - */ + /* check ack */ while(1) { @@ -931,6 +900,10 @@ int main(int argc,char **argv) { if(lpc.info&FLASHFW) { printf("writing firmware to flash ...\n"); send_cmd(lpc.sfd,0,'0',CMD_CHIP_ERASE); + /* ack */ + ret=0; + while(!ret) + read(lpc.sfd,&ret,1); lpc.roff=BANK0_ADDR; firmware_to_mem(&lpc,FLASH); }