Nxp:j-link燒寫(xiě)錯(cuò)誤及解決方法

Nxp:j-link燒寫(xiě)錯(cuò)誤及解決方法

芯片:MIMXRT1021CAF4A

內(nèi)核:Cortex-M7

出現(xiàn)的錯(cuò)誤:

1、用keil5進(jìn)行燒寫(xiě)時(shí),出現(xiàn)一下錯(cuò)誤:

No Algorithm found for: 00000000H - 00005CEBH

Error: Flash Download failed ?- ?"Cortex-M7"


[if !supportLists]2、[endif]用segger j-flash6.2和segger j-flash6.52進(jìn)行燒寫(xiě)時(shí),都出現(xiàn)在cpu中找不到MIMXRT1021CAF4A芯片,由于我知道其內(nèi)核是Cortex-M7,所以隨便在nxp中選擇了Cortex-M7的芯片,發(fā)現(xiàn)是可以連接上的,但是,程序缺下載不成功,而且還報(bào)出了一下的錯(cuò)誤:

No Algorithm found for: 00000000H - 00005CEBH

Error: Flash Download failed ?- ?"Cortex-M7"

錯(cuò)誤跟keil5出現(xiàn)的一樣。


Nxp開(kāi)發(fā)QQ群中,由一個(gè)大牛提供了一個(gè)帖子,帖子主要內(nèi)容如下:

鏈接:http://www.nxpic.org/module/forum/thread-615134-1-1.html

[if !supportLists]3、[endif]今天心情非常不錯(cuò),因?yàn)榍皫滋旃ぷ髁渴欠浅4蟮?,因此沒(méi)有過(guò)多的時(shí)間來(lái)玩RT1052,昨天下午才騰出一點(diǎn)兒空余時(shí)間出來(lái)研究。因?yàn)橐孓D(zhuǎn)RT1052首先了解外設(shè)和框架是非常重要的。不多扯,講一下幾個(gè)話題:①:如何用JLinkV9來(lái)下載用戶程序。如題首先你得保證你的燒錄設(shè)備是JlinkV9版本,因?yàn)榈桶姹静荒茏R(shí)別。第二用的Keil版本得5.21版本以上,否者編譯或者下載會(huì)出問(wèn)題。最后Jlink的驅(qū)動(dòng)版本必須是6.30以上,否則不能識(shí)別MCU的ID(那你做個(gè)P?。?。滿足以上三點(diǎn),即使你沒(méi)有DAP,你的JLink也能獨(dú)擋一面了。由于JLink不提供JTAG,因此一定要用SWD模式。筆者昨天在這上面下了不少瞎功夫,現(xiàn)在想想有點(diǎn)得不償失啊。后續(xù)給出一篇文檔進(jìn)行講解說(shuō)明,這里就不在冗余了;②:上面IDE與MCU的燒錄線路已有方向了,至于如何鋪路將在后續(xù)講解。首先我做了一個(gè)閃爍的LED燈,由飛凌給出的硬件資料可知LED的陰極接在了M11,即為(GPIO_AD_B0_02/GPIO1_IO02)。這里飛凌有一點(diǎn)沒(méi)給出還是我沒(méi)找到官方的IMX_RT1052_Core手冊(cè),這個(gè)是筆者在官網(wǎng)下的,作為附件分享給大家;③:還有就是筆者瞎鼓搗導(dǎo)致前期用飛凌提供的歷程燒錄不進(jìn)去MCU一直提示M7 fail錯(cuò)誤,這是Flash不知道怎么被弄卡死了,然后用BOOT的B0拉高,復(fù)位重新下載就能OK了,很神奇至此我也不是很明白,因此也要明白BOOT的撥碼的使用,極為重要;④:本人喜歡應(yīng)用程序的簡(jiǎn)單高效穩(wěn)定,因此飛凌提供的QSPI_norFLASH感覺(jué)不是很適合筆者,因此耍小聰明另辟蹊徑,問(wèn)了下原子哥,發(fā)現(xiàn)移植RT1052號(hào)令者的SYSTEM用起來(lái)還是很不錯(cuò)的,畢竟用STM32的函數(shù)都是優(yōu)先選用的。QSPI_norFLASH用起來(lái)是最直接,清楚的,簡(jiǎn)潔明了,但是我不喜歡哈哈。因此選用的MIMXRT1052_QuadSPI_4KB_SEC.FLM這種FLASH,聽(tīng)說(shuō)貌似更穩(wěn)定一點(diǎn),我也沒(méi)有去驗(yàn)證。就這樣而原子聯(lián)合周立功的RT跨界處理器使用的是分散加載的方法,其中太復(fù)雜筆者腦子笨只能了解點(diǎn)皮毛~,無(wú)所謂拿來(lái)能用就行了,其中修改了很多地方,不建議大家再去嘗試?yán)速M(fèi)時(shí)間了。因此不多做介紹了。就講到這里吧,帖子更新有點(diǎn)慢,但是這都是筆者一步一步摸索出來(lái)的,不喜勿噴!



j-link在線調(diào)試:

進(jìn)入調(diào)試頁(yè)面:

匯編窗口:是將c語(yǔ)言轉(zhuǎn)化為匯編的顯示情況,其中,黃色箭頭是代表著程序現(xiàn)在運(yùn)行到的位置和狀態(tài)。

C語(yǔ)言窗口:顯示的是我們正常寫(xiě)代碼的C語(yǔ)言,其中,黃色箭頭是代表著程序運(yùn)行到的狀態(tài)。

寄存器窗口:是顯示單片機(jī)內(nèi)部的一些寄存器的當(dāng)前值和系統(tǒng)信息。

(仿真調(diào)試頁(yè)面最左邊顯示的是單片機(jī)內(nèi)部的一些寄存器的當(dāng)前值和系統(tǒng)信息,右邊是keil將C語(yǔ)言轉(zhuǎn)換成匯編的代碼,中間就是我們編寫(xiě)的C程序了)

調(diào)試工具欄的按鈕:

[if !supportLists]1、[endif]

標(biāo)有rst按鈕:是軟復(fù)位,單擊之后,程序會(huì)到最開(kāi)始的位置運(yùn)行。

[if !supportLists]2、[endif]

全速運(yùn)行,單擊之后程序就會(huì)全速跑起來(lái)

[if !supportLists]3、[endif]

當(dāng)程序全速運(yùn)行起來(lái)的時(shí)候,單擊停止按鈕就會(huì)立即停止,可以觀察程序運(yùn)行到哪里去了。

[if !supportLists]4、[endif]

執(zhí)行進(jìn)去:該函數(shù)用來(lái)實(shí)現(xiàn)執(zhí)行到某個(gè)函數(shù)里面去的功能,在沒(méi)有函數(shù)的情況下,是等同于執(zhí)行過(guò)去按鈕的。

[if !supportLists]5、[endif]

執(zhí)行過(guò)去:在碰到有函數(shù)的地方,通過(guò)該按鈕就可以單步執(zhí)行過(guò)這個(gè)函數(shù),而不進(jìn)入這個(gè)函數(shù)單步執(zhí)行。

[if !supportLists]6、[endif]

執(zhí)行出去:已經(jīng)進(jìn)入該函數(shù)了,當(dāng)不要執(zhí)行該函數(shù)的剩余部分時(shí),單擊該按鈕,則跳出該函數(shù)

[if !supportLists]7、[endif]

執(zhí)行到光標(biāo)處:該功能是單擊時(shí),會(huì)迅速執(zhí)行到光標(biāo)處,跟斷點(diǎn)的功能類(lèi)似,不同是斷點(diǎn)可以有多個(gè),但光標(biāo)只有一個(gè)。

[if !supportLists]8、[endif]

匯編窗口:可以查看匯編代碼

[if !supportLists]9、[endif]

觀察窗口:mdk5提供2個(gè)觀察窗口(下拉選擇),該按鈕按下,會(huì)彈出一個(gè)顯示變量的窗口,輸入你所想要觀察的變量/表達(dá)式,即可查看其值,是常用的一個(gè)調(diào)試窗口。

[if !supportLists]10、[endif]

串口打印窗口:MDK5提供了4個(gè)串口打印窗口(下拉選擇),該按鈕按下,會(huì)彈出一個(gè)類(lèi)似串口調(diào)試助手界面的窗口,用來(lái)顯示從串口打印出來(lái)的內(nèi)容。

[if !supportLists]11、[endif]

邏輯分析儀窗口:該圖標(biāo)有3個(gè)選項(xiàng)(下拉選擇),我們一般用第一個(gè),也就是邏輯分析

其中:下拉中的Logic Analyzer窗口,點(diǎn)擊即可調(diào)出該窗口,通過(guò)SETUP按鈕新建一些IO口,就可以直觀這些IO的電頻情況,以多種形式顯示出來(lái),比較直觀。

[if !supportLists]12、[endif]系統(tǒng)查看窗口:該按鈕可以提供各種外設(shè)寄存器的查看窗口(通過(guò)下拉選擇),選擇對(duì)應(yīng)的外設(shè),即可調(diào)出該外設(shè)的相關(guān)寄存器表,并顯示這些寄存器的值,方便產(chǎn)看設(shè)置的是否正確

DEBUG的工具條其他按鈕:


[if !supportLists]13、[endif]設(shè)置斷點(diǎn)中,為什么有的地方可以設(shè)置而有的不可以設(shè)置:

解釋?zhuān)簡(jiǎn)螕魪?fù)位之后,可以看到C語(yǔ)言程序的窗口左側(cè)有灰色或aq者保持著原來(lái)的顏色,其中有灰色的地方是我們可以設(shè)置斷點(diǎn)的地方,至于為啥有些地方不能設(shè)置斷點(diǎn)呢,主要是因?yàn)閗eil具有程序優(yōu)化的功能,如果我們想在任何地方都可以設(shè)置斷點(diǎn)的話,我們需要更改工程選項(xiàng)里的優(yōu)化等級(jí),把等級(jí)設(shè)置為0即可,即高速keil不要對(duì)程序進(jìn)行優(yōu)化。其他的按鈕就是關(guān)于子函數(shù)或者循環(huán)是否進(jìn)入的操作了,具體自己可以試試看。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容