fwflash taking over fwbc, lpcload taking over fwdump
[my-code/arm.git] / betty / fwflash.c
index 8b89941..4fa0479 100644 (file)
@@ -59,7 +59,8 @@ void uart0_init(void) {
        PINSEL0=0x05;                   // pin select -> tx, rx
        UART0_FCR=0x07;                 // enable fifo
        UART0_LCR=0x83;                 // set dlab + word length
-       UART0_DLL=0x10;                 // br: 9600 @ 10/4 mhz
+       //UART0_DLL=0x10;                       // br: 9600 @ 10/4 mhz
+       UART0_DLL=0x04;                 // br: 38400 @ 10/4 mhz
        UART0_DLM=0x00;
        UART0_LCR=0x03;                 // unset dlab
 }
@@ -97,7 +98,7 @@ void uart0_send_buf16(u16 *buf,int len) {
 
        i=0;
 
-       for(i=0;i<len;i++) {
+       for(i=0;i<len/2;i++) {
                if(!(i%8))
                        while(!(UART0_LSR&(1<<6)))
                                continue;
@@ -112,7 +113,7 @@ void uart0_send_buf32(u32 *buf,int len) {
 
        i=0;
 
-       for(i=0;i<len;i++) {
+       for(i=0;i<len/4;i++) {
                if(!(i%4))
                        while(!(UART0_LSR&(1<<6)))
                                continue;
@@ -189,16 +190,12 @@ int main(void) {
                                datalen=1;
                                break;
                        default:
-                               uart0_send_byte('f');
                                txrx=0;
                                break;
                }
 
-               if(txrx) {
-                       /* send an ack */
-                       uart0_send_byte(cmd);
+               if(txrx)
                        break;
-               }
        }
 
        /* receive (only if there is) more data from uart0 */
@@ -217,11 +214,11 @@ int main(void) {
                        /* data length to read */
                        datalen=buf[0]<<24|buf[1]<<16|buf[2]<<8|buf[3];
                        /* check addr and datalen */
-                       if((addr>=BANK0)&(addr+datalen<BANK0+BANK_SIZE))
+                       if((addr>=BANK0)&(addr+datalen<=BANK0+BANK_SIZE))
                                uart0_send_buf16((u16 *)addr,datalen);
-                       if((addr>=BANK2)&(addr+datalen<BANK2+BANK_SIZE))
+                       if((addr>=BANK2)&(addr+datalen<=BANK2+BANK_SIZE))
                                uart0_send_buf16((u16 *)addr,datalen);
-                       if((addr>=BOOTLOADER)&(addr+datalen<BOOTLOADER+BL_SIZE))
+                       if((addr>=BOOTLOADER)&(addr+datalen<=BOOTLOADER+BL_SIZE))
                                uart0_send_buf32((u32 *)addr,datalen);
                        break;
                case CMD_CHIP_ERASE: