經(jīng)過一個(gè)半月的努力,終于調(diào)通了七大借口:1、Mcbsp+EDMA3,2、SPI+EDMA3,3、UART+EDMA,4、UPP+EDMA3, 5、EMIF+NANDFLASH, 6、 NET。涉及到dsp,F(xiàn)PGA,單片機(jī)。有些注意的問題:
一、BIOS
在Dsp的程序設(shè)計(jì)時(shí),注意BIOS的配置,這個(gè)會(huì)影響到HW中斷的使用。
二、edma3
一般就用同步事件來同步,如果數(shù)據(jù)傳輸是變長(zhǎng)的,則可以用外部中斷,在中斷內(nèi),用讀取edma的狀態(tài)函數(shù),讀出這時(shí)的BCNT的值,那么傳輸完的個(gè)數(shù)就是原來的(bcnt-BCNT),如果是定長(zhǎng)的傳輸,那么就用edma傳輸完成中斷,注意每個(gè)edma都會(huì)進(jìn)入同一個(gè)中斷函數(shù),讀取int或者inth來判斷這個(gè)中斷函數(shù)是響應(yīng)哪一個(gè)edma的完成。
如果要多次發(fā)送同一個(gè)edma,要每次都要重新配置edma的參數(shù),不然的話,edma一旦被清理了后就不會(huì)再有參數(shù)了,無法進(jìn)行下一次的傳輸。
三、文檔
對(duì)每一個(gè)接口進(jìn)行編程時(shí),一定要仔細(xì)閱讀文檔,按照文檔的來做。
四、內(nèi)存
對(duì)L1、L2‘DDR3,edma的目標(biāo)地址不要去直接用它,內(nèi)存會(huì)保護(hù),edma傳輸會(huì)失敗,對(duì)ddr3要對(duì)其初始化。對(duì)目的內(nèi)存操作,最好用memcpy,拷到其他的內(nèi)存再操作。
五、程序
能用中斷時(shí),盡量不要用輪詢的方式,不然CPU會(huì)對(duì)其他的操作不能做出及時(shí)的響應(yīng)。程序簡(jiǎn)潔,效率高。
六、延時(shí)
延時(shí)在連續(xù)傳輸,連續(xù)啟動(dòng),while(1),都不能忽視,在DSP中斷點(diǎn)處,edma是能繼續(xù)傳輸?shù)模趩纹瑱C(jī)時(shí),cpu和edma可以同時(shí)停住。
七、nand flash
用FPGA配置nand時(shí),其實(shí)就是狀態(tài)機(jī)的書寫。
八、仿真器
接不上ccs,可能是由于沒有共地。
|