調(diào)試代碼對(duì)于懂程序的你來說不難,但一定麻煩。尤其在初次接觸一個(gè)程序而又尚未能完全理解時(shí),你可能不清楚要如何才能快速找準(zhǔn)需要調(diào)試之處,全程設(shè)置斷點(diǎn)進(jìn)入Debug模式是一種很糟心的做法。如果你有接觸英特爾?Max 10 開發(fā)套件片上閃存的代碼,會(huì)不會(huì)想要?jiǎng)邮终{(diào)試一些功能呢?
MAX 10 FPGA開發(fā)電路板
首先,我們需要了解英特爾?MAX 10 FPGA設(shè)備中片上閃存的結(jié)構(gòu)與功能。它分為兩個(gè)部分:
配置閃存:用于存儲(chǔ)硬件配置數(shù)據(jù)
用戶閃存:用于存儲(chǔ)用戶數(shù)據(jù)/軟件應(yīng)用
其中,片上閃存IP是用于訪問UFM的唯一IP。片上閃存IP內(nèi)核在Quartus Prime安裝過程就可以完成安裝,我們可從英特爾?FPGA IP庫選擇這個(gè)IP并為其設(shè)置參數(shù)。UFM內(nèi)存結(jié)構(gòu)根據(jù)f片上閃存IP內(nèi)核參數(shù)編輯器中指定的配置模式而改變。那么它總共有多少種內(nèi)部配置模式呢?請看下圖。

5種內(nèi)部配置模式
Nios II從UFM就地執(zhí)行,能夠最大限度地降低RAM使用率。因此該啟動(dòng)解決方案十分適合需要限制片上內(nèi)存使用率的Nios II處理器應(yīng)用。從UFM就地執(zhí)行時(shí),基于BSP設(shè)置,數(shù)據(jù)段(.radata、.rwdata或.eceptions)將從啟動(dòng)內(nèi)存復(fù)制到RAM中,而只讀代碼段仍存放在片上閃存區(qū)域。
如何調(diào)試存儲(chǔ)在Max 10開發(fā)套件片上閃存中的代碼
Nios II處理器復(fù)位向量指向UFM的基地址,因此系統(tǒng)重置后,代碼會(huì)從UFM執(zhí)行,如果您使用源碼級(jí)調(diào)試工具調(diào)試應(yīng)用,則需要使用硬件斷點(diǎn)進(jìn)行調(diào)試,因?yàn)閁FM不支持隨機(jī)內(nèi)存存取。
那么具體該如何調(diào)試代碼呢?
我們可以創(chuàng)造一個(gè)從UFM就地執(zhí)行的Nios II應(yīng)用,并使用Nios II軟件構(gòu)建工具中的調(diào)試工具調(diào)試存儲(chǔ)在UFM中的代碼。先創(chuàng)建一個(gè)Quartus項(xiàng)目和Qsys系統(tǒng),如下圖,這是一個(gè)在Platform Designer中創(chuàng)建的設(shè)計(jì)。
如前所述,我們需要使用硬件斷點(diǎn)調(diào)試應(yīng)用。因此,在Qsys設(shè)計(jì)中,我們需要啟用硬件斷點(diǎn)。具體操作步驟詳見視頻?!净坎贿^一定要將硬件斷點(diǎn)要啟用到位,具體可通過選擇JTAG調(diào)試選項(xiàng)卡查看。同時(shí)要注意,我們最多可以啟用四個(gè)硬件斷點(diǎn)。此外,片上閃存IP一定要添加到設(shè)計(jì)中,這樣能便于訪問UFM閃存。
在上面這個(gè)設(shè)計(jì)中,我們選擇使用的配置模式是單個(gè)未壓縮映像。接下來,可以將Nios II處理器中復(fù)位向量設(shè)置為片上閃存IP內(nèi)核,以通過從UFM就地執(zhí)行啟動(dòng)Nios應(yīng)用。完成這些設(shè)置后,才能夠去生成系統(tǒng)。
接下來,我們可以在Quartus中編譯這個(gè)設(shè)計(jì),創(chuàng)建SOF文件。同時(shí),也可以在Nios II軟件構(gòu)建工具中創(chuàng)建一個(gè)簡單的Nios II應(yīng)用。在創(chuàng)建完硬件設(shè)計(jì)和軟件應(yīng)用后,我們可以使用轉(zhuǎn)換編程文件工具,創(chuàng)建包含UFM數(shù)據(jù)和SOF文件的POF文件。然后,可以使用Quartus編程工具將POF文件編程至Max 10中。
如上圖,已將POF文件編程至Max 10中,并重啟電路板。接下來才是真正開始調(diào)試存儲(chǔ)在片上閃存中的代碼。插入斷點(diǎn)后,想要調(diào)試該應(yīng)用,就得進(jìn)行“應(yīng)用”、“調(diào)試”、“選擇配置”等一系列操作。(如有不明白的,請?jiān)敿?xì)看上面的視頻)在調(diào)試配置中,由于代碼存儲(chǔ)在片上閃存中,所以可能沒有選項(xiàng)“將elf下載到選中的目標(biāo)系統(tǒng)”選擇以啟動(dòng)處理器并重置選中的目標(biāo)系統(tǒng)。
重點(diǎn)來了!
這個(gè)時(shí)候如果選擇“啟動(dòng)停止”,則最多用一個(gè)硬件斷點(diǎn),這也意味著您只能在代碼上設(shè)置另外三個(gè)斷點(diǎn)。而如果插入斷點(diǎn)超過4個(gè),就會(huì)在開始調(diào)試代碼時(shí)遇到錯(cuò)誤,因?yàn)橹荒苁褂盟膫€(gè)硬件斷點(diǎn)。
-
處理器
+關(guān)注
關(guān)注
68文章
20339瀏覽量
255338 -
代碼
+關(guān)注
關(guān)注
30文章
4977瀏覽量
74417 -
編輯器
+關(guān)注
關(guān)注
1文章
829瀏覽量
33076
原文標(biāo)題:代碼怎么調(diào)?方法打包在此,拿走不謝~
文章出處:【微信號(hào):FPGAer_Club,微信公眾號(hào):FPGAer俱樂部】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評(píng)論請先 登錄
【xG24 Matter開發(fā)套件試用體驗(yàn)】初識(shí)xG24 Matter開發(fā)套件
【xG24 Matter開發(fā)套件試用體驗(yàn)】深入了解Silicon Labs xG24 Matter開發(fā)套件
FRDM-KL25Z開發(fā)套件接口說明
NI GOOP開發(fā)套件
GPIO和LED閃爍代碼上做簡單的程序應(yīng)買什么開發(fā)套件
CANstarter-2開發(fā)套件
GDBServer編譯指南_基于 EasyARM-i.MX287A 開發(fā)套件
TI LaunchPad 開發(fā)套件中的 Sidekick 系列套件
如何在 Arria 10 開發(fā)套件構(gòu)建 RLDRAM3 EMIF 設(shè)計(jì)
用以太網(wǎng) Ping的方式對(duì) MAX10 FPGA 開發(fā)套件進(jìn)行測試
如何調(diào)試存儲(chǔ)在Max 10開發(fā)套件片上閃存中的代碼
評(píng)論