大多數FPGA設計者從邏輯設計做起,對軟件級設計接觸不多,但目前的項目中都少不了處理器軟件C的設計,下面接著看下《UltraFast 嵌入式設計方法指南》中關于軟件設計方面的內容,主要分3部分:軟件設計需要考慮的事項、設計流程及調試等。
1. 軟件設計考慮事項
軟件設計時,需要先搭建一個處理器到系統中,處理器可以是硬核(如ZYNQ的ARM),也可以是軟核(如NIOS II),所有的內容均圍繞處理器方面設計展開:處理器配置,操作系統選擇,庫和中間件,啟動加載器,軟件開發工具(SDK)。

-
處理器配置:配置核心頻率、多處理單元協調和數據程序存儲空間分配、中斷等;
-
操作系統選擇:選擇操作系統活著裸跑;
-
庫和中間件:方便設計者高效的使用底層硬件的過渡層接口;
-
啟動加載器:方便操作系統的BOOT設計;
-
軟件開發工具:C開發環境,類似NIOS IDE開發環境。
當我們自己在邏輯部分設計了一個底層邏輯后通過接口(一般是總線接口)連接到處理器后,也可以自定義自己的操作接口,通過SDK來操作底層邏輯。如三角函數處理器運算太慢,可以在邏輯中設計一個三角函數后SDK中只需將運算的數據寫入對應reg中后得到運算結果,這就實現了硬軟件協調處理功能。
2. 軟件設計流程
軟件設計流程如下圖:


其中:
-
板啟動開發工作包括開發低級固件、設置啟動次序、針對接口和外設的基本測試,劃分了下列階段:PS 初始化 ,PL 配置 ,儲存器和外設測試,軟件和硬件調試;
-
驅動開發為 SoC 和板載外設開發軟件驅動,用于為OS或裸機應用等更高軟件層建立接口;
設計中要注重層次,多學習C++等高級語言設計技巧,這樣可以保證設計的簡潔和可維護性,一般FPGA對C設計接觸比較少從業者寫的C代碼一團亂麻。
3. 調試
系統調試中,PL部分就是我們常用的Modelsim仿真+在線邏輯分析儀等,PS部分就是斷點、單步,查看內存等。關于調試的經驗技巧下次搞篇文章分享。
軟件調試中,需要在處理器配置配置合適的的選項,SDK中靈活使用,同時需要注意:調試完成得到最終發行版本時,記得去掉在線邏輯分析儀和處理器JTAG配置,因為這樣會省掉不少資源,時序和功耗當然會更好。
4. 其它
理解啟動加載器的流程對理解軟硬件協同+Linux有很大幫助:

在為SoC 加電時,啟動過程從BootROM 開始。啟動過程先從片上儲存器 (OCM) 加載然后啟動執行第一階段啟動加載器 (FSBL)。FSBL負責配置具體的初始化。
然后根據軟件架構,第二階段啟動加載器,如使用嵌入式 Linux 時的 U-Boot進行初始化并執行。 FSBL 和/或 SSBL 啟動 RTOS 或嵌入式 Linux 以及應用代碼。如果沒有操作系統,則是裸跑,好多步都沒有。簡單說裸跑就是51單片機C程序開發,而跑系統則是ARM高端應用程序開發,原理性相差不大,可以自己查閱資料了解,不需要馬上都懂,因為隨著時間和經驗的積累,這些你會慢慢要了解并使用鞏固。
5. 總結
FPGA大多是邏輯開發者,但只做邏輯的話局限性太大,而且現在的趨勢也是FPGA軟件話了,SDSOC就是證明。所以,我們應該提前擴充知識面,而且你會發現復雜軟件設計和操作系統經驗上有很多技巧也可以借鑒,更好地借鑒能幫助我們軟+硬+系統結合,設計出更有成就感的架構應用于項目中。
-
FPGA
+關注
關注
1660文章
22408瀏覽量
636252 -
嵌入式
+關注
關注
5198文章
20443瀏覽量
333990 -
Linux
+關注
關注
88文章
11758瀏覽量
219009
原文標題:《UltraFast 嵌入式設計方法指南》(3)——軟件級
文章出處:【微信號:fpga234,微信公眾號:fpga234】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
FPGA培訓--FPGA高級邏輯設計研修班
急聘!FPGA邏輯設計部門經理
如何利用FPGA芯片進行簡化的PCI接口邏輯設計?
如何去實現FPGA的邏輯設計呢
基于FPGA的MDIO接口邏輯設計
MPEG-2編碼復用器中的FPGA邏輯設計
MPEG-2編碼復用器中的FPGA邏輯設計
FPGA視頻教程之FPGA設計中時序邏輯設計要點的詳細資料說明
FPGA開發從邏輯設計做起,結合軟+硬+系統很重要

評論