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