基于ARM處理器的HDLC通信的DMA實現(xiàn)
目前在嵌入式產(chǎn)品開發(fā)設(shè)計中,通常是在OS(Operating System)廠商提供的BSP基礎(chǔ)上進行開發(fā)工作;對于底層硬件的操作,程序設(shè)計人員很少關(guān)注或只是少量的修改。實際上很多產(chǎn)品,我們完全可以拋開操作系統(tǒng)的模式,避免不必要的系統(tǒng)開銷,而對底層的硬件直接進行處理。這樣,可以節(jié)省資源提高利用率。當(dāng)然,這樣也會人為地增加系統(tǒng)開發(fā)設(shè)計的難度。但是從長遠的角度看,進行這樣的設(shè)計思考還是非常必要的。現(xiàn)在一些產(chǎn)品的設(shè)計開發(fā)中,所缺少的實際上就是深入了解底層操作,這樣往往使我們丟失了創(chuàng)新的機會。
(2)DMA模式
使用緩沖描述符BD(Buffer Descriptor)結(jié)構(gòu),可以實現(xiàn)以幀為單位對數(shù)據(jù)進行接收和發(fā)送控制。程序設(shè)計人員只需要填寫相應(yīng)BD結(jié)構(gòu)的域信息,配置收發(fā)模式,具體的執(zhí)行細節(jié)交給DMA單元控制完成。CPU只是對每一幀進行處理,這樣在一幀收發(fā)的過程中,系統(tǒng)可以去處理其它的任務(wù),有效地利用CPU資源。關(guān)鍵在于構(gòu)建BD循環(huán)鏈表。同時應(yīng)該注意,BD及其對應(yīng)的緩沖數(shù)據(jù)區(qū)必須放在系統(tǒng)存儲區(qū)的非緩存區(qū)(NonCache),這可以通過設(shè)置地址的第26位為1來實現(xiàn)。
評論