電子產(chǎn)業(yè)一站式賦能平臺

PCB聯(lián)盟網(wǎng)

搜索
查看: 39|回復(fù): 0
收起左側(cè)

串行Flash Continuous read使能后軟復(fù)位啟動問題解決方案之RESET#

[復(fù)制鏈接]

302

主題

307

帖子

1896

積分

三級會員

Rank: 3Rank: 3

積分
1896
跳轉(zhuǎn)到指定樓層
樓主
發(fā)表于 2021-5-25 23:53:00 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
大家好,我是痞子衡,是正經(jīng)搞技術(shù)的痞子。今天痞子衡給大家介紹的是i.MXRT上使能NOR Flash的Continuous read模式在軟復(fù)位后無法正常啟動問題的解決經(jīng)驗。0 k# Q5 F0 p' L% f) E
前一篇文章 《在i.MXRT啟動頭FDCB里使能串行NOR Flash的Continuous read模式》 里,痞子衡簡單介紹了Flash的Continuous read模式作用與意義,并且在MIMXRT1170-EVK上嘗試使能了芯成IS25WP128的Continuous read模式做了一次實踐(主要是文中第三節(jié)FDCB啟動頭的改動)。( [7 j% ]: J3 }
但其實在i.MXRT上使能Flash的Continuous read模式是有點小陷阱的,如果你在App代碼里直接插一句 NVIC_SystemReset() 函數(shù)的調(diào)用,即對主控芯片做一次軟復(fù)位,你會發(fā)現(xiàn)芯片沒有從Flash正常啟動,這是因為Flash此時仍處于Continuous read模式,這種情況下BootROM有時不能正常配置讀取Flash內(nèi)容去啟動App。今天痞子衡就來跟大家探討解決這個問題。& o* X8 `8 |' D( _" B5 P" W
  • 本系列會有多篇文章,每篇文章均從一個核心切入點出發(fā),給出一系列具體實現(xiàn)方案。
  • 本系列均以MIMXRT1170-EVK板為示例目標(biāo)對象,板載Flash型號為芯成IS25WP128(其他i.MXRT芯片和Flash型號下實現(xiàn)流程也差不多,需查看對應(yīng)數(shù)據(jù)手冊)。一、解決思路我們知道無法啟動問題是由于主芯片發(fā)生軟復(fù)位但Flash仍處于Continuous read模式造成的,要解決這個問題無非如下三個角度,痞子衡會在后面具體實現(xiàn)方案里按這些角度全部搞一次(如果適用的話)。
    - e6 ~3 W0 S9 w$ s
  • 一、ROM方面不做任何相關(guān)處理,但App在調(diào)用NVIC_SystemReset()做復(fù)位前將Flash先切回到Normal模式;
  • 二、App方面不做任何相關(guān)處理,對BootROM相關(guān)配置做一些調(diào)整,讓BootROM也能正常處理處于Continuous read模式的Flash;
  • 三、ROM和App聯(lián)合對Flash模式切換做一些特殊處理。二、核心切入點(借助Flash的硬復(fù)位引腳功能)本文找的核心切入點是利用Flash的硬件復(fù)位引腳。Flash的硬件復(fù)位引腳有兩種:一種是獨立的,常見于SOIC-16封裝上(這種情況下對板級設(shè)計有要求,需要在板級設(shè)計時將Flash復(fù)位引腳連到主芯片i.MXRT的GPIO上);另一種是復(fù)用在IO3上的,常用于SOIC-8封裝上。
    8 `2 N3 t+ D5 ]1 r, S  Y! [如果是獨立的復(fù)位引腳(RESET#),則主芯片GPIO直接做拉低操作即可(注意低電平持續(xù)時間的要求,詳見Flash數(shù)據(jù)手冊);如果是復(fù)用的復(fù)位引腳(RESET#/IO3),則需要先激活I(lǐng)O3的復(fù)位功能,然后做拉低操作。
  • 回復(fù)

    使用道具 舉報

    發(fā)表回復(fù)

    您需要登錄后才可以回帖 登錄 | 立即注冊

    本版積分規(guī)則


    聯(lián)系客服 關(guān)注微信 下載APP 返回頂部 返回列表