答案揭曉之前,請容作者聊個閑篇,講講一個叫做科學(xué)方法的東西,看下怎么運用科學(xué)方法解決問題。
當我們發(fā)現(xiàn)I2S DMA不工作時,并且發(fā)現(xiàn)了I2S幀錯誤,會有一個假說,I2S幀錯誤導(dǎo)致DMA異常。假說是對一個問題作出的試探性解答,對一組觀察結(jié)果提出的解釋。作為工程師,我們不會假設(shè)超自然的力量作為DMA不工作的原因,但很多時,我們把一個很像結(jié)論的假說用腦補的方式作為問題的結(jié)論,而不進行實驗驗證。
回歸正題,上次講到我們嘗試通過I2S0 FIFO Overflow中斷重啟DMA1來解決問題,然而在重啟DMA1后,F(xiàn)IFO Overflow反復(fù)發(fā)生,意味著DMA1沒有能將數(shù)據(jù)從FIFO中搬移到內(nèi)存。
DMA1通過AHB總線從FLEXCOM FIFO讀取數(shù)據(jù)寫入SRAM的流程如下圖所示,從FIFO讀取數(shù)據(jù)用到AHB SLAVE PORT P13,寫入SRAM用到了SRAM不同地址塊的AHBSLAVE PORT。當個通路不通的時候,DMA1就無法將數(shù)據(jù)從P13讀到,或者寫入相應(yīng)的SRAM區(qū)域。
在這條路徑上,有以下懷疑點,P13上,CM33在和HiFi4 DSP通信中會存在輪詢MU狀態(tài)寄存器的情況。另外,CM33和DMA1存在同時訪問某SRAM端口的可能性。當CM33頻繁對AHB SLAVE 端口進行訪問時,會影響DMA1對相同AHB SLAVE端口的訪問,從而影響DMA1路徑的延遲(Latency)。
基于以上懷疑,作者建議提高DMA1的AHB總線優(yōu)先級。
AHB matrix priority (SYSCTL0_AHBMATRIXPRIOR)
AHB矩陣仲裁各個AHB 總線主設(shè)備,當這些AHB主設(shè)備同時訪問矩陣的從端口時,仲裁器可以調(diào)度各個總線主設(shè)備訪問。每一個AHB主設(shè)備對應(yīng)一個ID號和一個4bits的優(yōu)先級值,默認的優(yōu)先級設(shè)置各個MASTER 都是0(最高)。如果將除了DMA1以外的其他AHB 總線主設(shè)備的優(yōu)先級設(shè)置為1,而DMA1的優(yōu)先級保持為0,就保證了DMA1能夠優(yōu)先的訪問AHB從設(shè)備端口。
經(jīng)過新的優(yōu)先級設(shè)置,系統(tǒng)穩(wěn)定性問題解決。
除了調(diào)整AHB主機優(yōu)先級的“大招”,如果我們能盡量避免AHB訪問沖突,既可以提高系統(tǒng)的運行效率又可以增強系統(tǒng)穩(wěn)定性,下面是避免AHB總線沖突的一些經(jīng)驗。
1.SRAM通常根據(jù)地址范圍不同,使用不同的AHB SLAVE PORT。除了各個AHB Master共享內(nèi)存以外,每個AHB Master盡量不共享同一個AHB Port, 以避免多個AHB Master同時訪問相同的AHB Slave端口。
當多個AHB主機共享同一AHB Port內(nèi)存時,避免使用循環(huán)輪詢內(nèi)存變量。
2.避免長時間輪詢狀態(tài)寄存器等待狀態(tài)轉(zhuǎn)移,當狀態(tài)轉(zhuǎn)移需要較長時間,中斷是一個更有效的方式。
恩智浦致力于打造安全的連接和基礎(chǔ)設(shè)施解決方案,為智慧生活保駕護航。
恩智浦半導(dǎo)體NXP Semiconductors N.V.(納斯達克股票代碼:NXPI)是汽車、工業(yè)物聯(lián)網(wǎng)、移動設(shè)備和通信基礎(chǔ)設(shè)施市場值得信賴的合作伙伴,致力于提供創(chuàng)新解決方案。
-
mcu
+關(guān)注
關(guān)注
146文章
17974瀏覽量
366634 -
NXP
+關(guān)注
關(guān)注
61文章
1347瀏覽量
189321 -
dma
+關(guān)注
關(guān)注
3文章
576瀏覽量
103200 -
AHB
+關(guān)注
關(guān)注
0文章
26瀏覽量
10221 -
壓力測試
+關(guān)注
關(guān)注
0文章
28瀏覽量
13642
原文標題:工程師經(jīng)驗分享 -系統(tǒng)壓力測試出現(xiàn)的問題,怎么辦?(下)
文章出處:【微信號:NXP_SMART_HARDWARE,微信公眾號:恩智浦MCU加油站】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
系統(tǒng)壓力測試出現(xiàn)問題的原因和解決方法

TAS5630B測試出現(xiàn)OUTD和地短路現(xiàn)象,為什么?如何解決?
CDCLVD1204使用差分探頭測試出的信號幅值和單端無源探頭測試出的幅值會有多大的差異?
為什么測試DPDK基本環(huán)境會出現(xiàn)系統(tǒng)無法啟動的情況
TD-SCDMA測試出現(xiàn)不順暢插曲:設(shè)備互通出現(xiàn)問題(1)
PHP出現(xiàn)502錯誤的問題如何解決詳細資料說明

SpaceX飛船Starship原型SN1在壓力測試出現(xiàn)殼體破裂
模具電池溫度-壓力測試系統(tǒng)介紹
模具電池溫度-壓力測試系統(tǒng)介紹
激波管壓力傳感器測試系統(tǒng)
如何解決pogo pin測試出現(xiàn)不穩(wěn)定現(xiàn)象?

評論