德州儀器DSP開發常見問題寶典
1)程序沒有結尾或不是循環的程序。
2)nmi管腳沒有上拉。
3)在看門狗動作的時候程序會經常跑飛。
4)程序編制不當也會引起程序跑飛。
5)硬件系統有問題。
四十四。并行FLASH引導的一點經驗
最近BBS上關于FLASH和BOOT的討論很活躍,我也多次來此請教。前幾天自制的DSP板引導成功,早就打算寫寫這方面的東西。我用的DSP是 5416,以其為核心,做了一個相對獨立的子系統(硬件、軟件、算法),目前都已基本做好。下面把在FLASH引導方面做的工作向大家匯報一下,希望能對大家有所幫助。本人經驗和文筆都有限,寫的不好請大家諒解。
硬件環境:
DSP:TMS320VC5416PGE160
FLASH:SST39VF400A-70-4C-EK 都是貼片的,FLASH映射在DSP數據空間的0x8000-0xFFFF
軟件環境: CCS v2.12.01
主程序(要燒入FLASH的程序): DEBUG版,程序占用空間0x28000-0x2FFFF(片內SARAM),中斷向量表在0x0080-0x00FF(片內DARAM),數據空間使用0x0100-0x7FFF(片內DARAM)。因為FLASH是貼片的,所以需要自己編一個數據搬移程序,把要主程序搬移到FLASH中。在寫入 FLASH數據時,還應寫入引導表的格式數據。最后在數據空間的0xFFFF處寫入引導表的起始地址(這里為0x8000)。
搬移程序: DEBUG版,程序空間0x38000-0x3FFFF(片內SARAM),中斷向量表在0x7800-0x78FF(片內DARAM),數據空間使用 0x5000-0x77FF(片內DARAM)。搬移程序不能使用與主程序的程序空間和中斷向量表重合的物理空間,以免覆蓋。燒寫時,同時打開主程序和搬移程序的PROJECT,先LOAD主程序,再LOAD搬移程序,然后執行搬移程序,燒寫OK! 附:搬移程序(僅供參考)
volatile unsigned int *pTemp=(unsigned int *)0x7e00; unsigned int iFlashAddr;
int iLoop;
iFlashAddr=0x8000;
WriteFlash(iFlashAddr,0x10aa);
iFlashAddr++;
WriteFlash(iFlashAddr,0x7e00);
iFlashAddr++;
WriteFlash(iFlashAddr,0x8006);
iFlashAddr++;
WriteFlash(iFlashAddr,0x0002);
iFlashAddr++;

評論