|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機 | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
光盤上的flashdown程序有問題,到1100就出問題 |
| 作者:zyking 欄目:ARM技術(shù) |
光盤上的flashdown程序有問題,到0x1110就出問題,改s[1024]為2048出錯的地址為19a0,是不是在程序里沒清s,溢出了? |
| 2樓: | >>參與討論 |
| 作者: zlgarm 于 2005/12/12 8:50:00 發(fā)布:
re 降低你的串口波特率試試。 |
|
| 3樓: | >>參與討論 |
| 作者: zyking 于 2005/12/12 9:18:00 發(fā)布:
我降到了9600,還要降低嗎 |
|
| 4樓: | >>參與討論 |
| 作者: vcvcvcvc 于 2005/12/12 9:32:00 發(fā)布:
我改的flash.c,我用沒問題 #define IN_FLASH #include "config.h" volatile uint16 *GetAddr(INT32U addr) { uint32 TEMP; TEMP = 0x80000000; TEMP += (addr << 1); return (volatile uint16 *)TEMP; } uint8 WordProgram(uint32 Addr, uint16 Data) { volatile uint16 *ip; uint16 TEMP1,TEMP2; ip = GetAddr(0x5555); ip[0] = 0xaaaa; ip = GetAddr(0x2aaa); ip[0] = 0x5555; ip = GetAddr(0x5555); ip[0] = 0xa0a0; ip = ((volatile uint16 *)(Addr)); *ip = Data; while (1) { TEMP1 = *ip; TEMP2 = *ip; if (TEMP1 == TEMP2) { if (TEMP1 != Data) { return FALSE; } else { return TRUE; } } } return TRUE; } uint8 ChipErase(void) { volatile uint16 *ip; uint16 TEMP1,TEMP2; ip = GetAddr(0x5555); ip[0] = 0xaaaa; ip = GetAddr(0x2aaa); ip[0] = 0x5555; ip = GetAddr(0x5555); ip[0] = 0x8080; ip = GetAddr(0x5555); ip[0] = 0xaaaa; ip = GetAddr(0x2aaa); ip[0] = 0x5555; ip = GetAddr(0x5555); ip[0] = 0x1010; while (1) { TEMP1 = *ip; TEMP2 = *ip; if (TEMP1 == TEMP2) { if (TEMP1 != 0xffff) { return FALSE; } else { return TRUE; } } } return TRUE; } uint8 SectorErase(uint32 Index) { volatile uint16 *ip; uint16 TEMP1,TEMP2; ip = GetAddr(0x5555); ip[0] = 0xaaaa; ip = GetAddr(0x2aaa); ip[0] = 0x5555; ip = GetAddr(0x5555); ip[0] = 0x8080; ip = GetAddr(0x5555); ip[0] = 0xaaaa; ip = GetAddr(0x2aaa); ip[0] = 0x5555; ip = GetAddr(Index << 11); ip[0] = 0x3030; while (1) { TEMP1 = *ip; TEMP2 = *ip; if (TEMP1 == TEMP2) { if (TEMP1 != 0xffff) { return FALSE; } else { return TRUE; } } } return TRUE; } unsigned CHAR block_erase(unsigned LONG index) { volatile uint16 *ip; uint16 TEMP1,TEMP2; ip = GetAddr(0x5555); ip[0] = 0xaaaa; ip = GetAddr(0x2aaa); ip[0] = 0x5555; ip = GetAddr(0x5555); ip[0] = 0x8080; ip = GetAddr(0x5555); ip[0] = 0xaaaa; ip = GetAddr(0x2aaa); ip[0] = 0x5555; ip = GetAddr(index << 15); ip[0] = 0x5050; while (1) { TEMP1 = *ip; TEMP2 = *ip; if (TEMP1 == TEMP2) { if (TEMP1 != 0xffff) { return 0; } else { return 1; } } } return 1; } |
|
| 5樓: | >>參與討論 |
| 作者: zlgarm 于 2005/12/12 9:41:00 發(fā)布:
re 核對一下你的串口波特率設(shè)置是否和下載程序的串口設(shè)置一致。 |
|
| 6樓: | >>參與討論 |
| 作者: zyking 于 2005/12/12 11:02:00 發(fā)布:
一致 我在config.h里定義#define bps 9600 在寫到0x1100時錯,返回FILE_FOEMAT_ERR:我看了程序是*s!=':',是接收出了問題?我是在片內(nèi)ram運行程序的。在函數(shù)uint8 DownloadLine(CHAR *s)中 s++;是不是超出了1024,程序中沒有把s指回去。 |
|
|
|
| 免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |