調試代碼對于懂程序的你來說不難,但一定麻煩。尤其在初次接觸一個程序而又尚未能完全理解時,你可能不清楚要如何才能快速找準需要調試之處,全程設置斷點進入Debug模式是一種很糟心的做法。如果你有接觸英特爾?Max 10 開發套件片上閃存的代碼,會不會想要動手調試一些功能呢?
MAX 10 FPGA開發電路板
首先,我們需要了解英特爾?MAX 10 FPGA設備中片上閃存的結構與功能。它分為兩個部分:
配置閃存:用于存儲硬件配置數據
用戶閃存:用于存儲用戶數據/軟件應用
其中,片上閃存IP是用于訪問UFM的唯一IP。片上閃存IP內核在Quartus Prime安裝過程就可以完成安裝,我們可從英特爾?FPGA IP庫選擇這個IP并為其設置參數。UFM內存結構根據f片上閃存IP內核參數編輯器中指定的配置模式而改變。那么它總共有多少種內部配置模式呢?請看下圖。
5種內部配置模式
Nios II從UFM就地執行,能夠最大限度地降低RAM使用率。因此該啟動解決方案十分適合需要限制片上內存使用率的Nios II處理器應用。從UFM就地執行時,基于BSP設置,數據段(.radata、.rwdata或.eceptions)將從啟動內存復制到RAM中,而只讀代碼段仍存放在片上閃存區域。
如何調試存儲在Max 10開發套件片上閃存中的代碼
Nios II處理器復位向量指向UFM的基地址,因此系統重置后,代碼會從UFM執行,如果您使用源碼級調試工具調試應用,則需要使用硬件斷點進行調試,因為UFM不支持隨機內存存取。
那么具體該如何調試代碼呢?
我們可以創造一個從UFM就地執行的Nios II應用,并使用Nios II軟件構建工具中的調試工具調試存儲在UFM中的代碼。先創建一個Quartus項目和Qsys系統,如下圖,這是一個在Platform Designer中創建的設計。
如前所述,我們需要使用硬件斷點調試應用。因此,在Qsys設計中,我們需要啟用硬件斷點。具體操作步驟詳見視頻。【滑稽】不過一定要將硬件斷點要啟用到位,具體可通過選擇JTAG調試選項卡查看。同時要注意,我們最多可以啟用四個硬件斷點。此外,片上閃存IP一定要添加到設計中,這樣能便于訪問UFM閃存。
在上面這個設計中,我們選擇使用的配置模式是單個未壓縮映像。接下來,可以將Nios II處理器中復位向量設置為片上閃存IP內核,以通過從UFM就地執行啟動Nios應用。完成這些設置后,才能夠去生成系統。
接下來,我們可以在Quartus中編譯這個設計,創建SOF文件。同時,也可以在Nios II軟件構建工具中創建一個簡單的Nios II應用。在創建完硬件設計和軟件應用后,我們可以使用轉換編程文件工具,創建包含UFM數據和SOF文件的POF文件。然后,可以使用Quartus編程工具將POF文件編程至Max 10中。
如上圖,已將POF文件編程至Max 10中,并重啟電路板。接下來才是真正開始調試存儲在片上閃存中的代碼。插入斷點后,想要調試該應用,就得進行“應用”、“調試”、“選擇配置”等一系列操作。(如有不明白的,請詳細看上面的視頻)在調試配置中,由于代碼存儲在片上閃存中,所以可能沒有選項“將elf下載到選中的目標系統”選擇以啟動處理器并重置選中的目標系統。
重點來了!
這個時候如果選擇“啟動停止”,則最多用一個硬件斷點,這也意味著您只能在代碼上設置另外三個斷點。而如果插入斷點超過4個,就會在開始調試代碼時遇到錯誤,因為只能使用四個硬件斷點。
-
處理器
+關注
關注
68文章
19178瀏覽量
229200 -
代碼
+關注
關注
30文章
4753瀏覽量
68368 -
編輯器
+關注
關注
1文章
803瀏覽量
31128
原文標題:代碼怎么調?方法打包在此,拿走不謝~
文章出處:【微信號:FPGAer_Club,微信公眾號:FPGAer俱樂部】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論