大多數(shù)FPGA設(shè)計(jì)者從邏輯設(shè)計(jì)做起,對軟件級設(shè)計(jì)接觸不多,但目前的項(xiàng)目中都少不了處理器軟件C的設(shè)計(jì),下面接著看下《UltraFast 嵌入式設(shè)計(jì)方法指南》中關(guān)于軟件設(shè)計(jì)方面的內(nèi)容,主要分3部分:軟件設(shè)計(jì)需要考慮的事項(xiàng)、設(shè)計(jì)流程及調(diào)試等。
1. 軟件設(shè)計(jì)考慮事項(xiàng)
軟件設(shè)計(jì)時(shí),需要先搭建一個(gè)處理器到系統(tǒng)中,處理器可以是硬核(如ZYNQ的ARM),也可以是軟核(如NIOS II),所有的內(nèi)容均圍繞處理器方面設(shè)計(jì)展開:處理器配置,操作系統(tǒng)選擇,庫和中間件,啟動(dòng)加載器,軟件開發(fā)工具(SDK)。
-
處理器配置:配置核心頻率、多處理單元協(xié)調(diào)和數(shù)據(jù)程序存儲空間分配、中斷等;
-
操作系統(tǒng)選擇:選擇操作系統(tǒng)活著裸跑;
-
庫和中間件:方便設(shè)計(jì)者高效的使用底層硬件的過渡層接口;
-
啟動(dòng)加載器:方便操作系統(tǒng)的BOOT設(shè)計(jì);
-
軟件開發(fā)工具:C開發(fā)環(huán)境,類似NIOS IDE開發(fā)環(huán)境。
當(dāng)我們自己在邏輯部分設(shè)計(jì)了一個(gè)底層邏輯后通過接口(一般是總線接口)連接到處理器后,也可以自定義自己的操作接口,通過SDK來操作底層邏輯。如三角函數(shù)處理器運(yùn)算太慢,可以在邏輯中設(shè)計(jì)一個(gè)三角函數(shù)后SDK中只需將運(yùn)算的數(shù)據(jù)寫入對應(yīng)reg中后得到運(yùn)算結(jié)果,這就實(shí)現(xiàn)了硬軟件協(xié)調(diào)處理功能。
2. 軟件設(shè)計(jì)流程
軟件設(shè)計(jì)流程如下圖:
其中:
-
板啟動(dòng)開發(fā)工作包括開發(fā)低級固件、設(shè)置啟動(dòng)次序、針對接口和外設(shè)的基本測試,劃分了下列階段:PS 初始化 ,PL 配置 ,儲存器和外設(shè)測試,軟件和硬件調(diào)試;
-
驅(qū)動(dòng)開發(fā)為 SoC 和板載外設(shè)開發(fā)軟件驅(qū)動(dòng),用于為OS或裸機(jī)應(yīng)用等更高軟件層建立接口;
-
針對裸機(jī)或 Linux 或 FreeRTOS 等操作系統(tǒng)開發(fā)出了相關(guān)可運(yùn)行應(yīng)用。
設(shè)計(jì)中要注重層次,多學(xué)習(xí)C++等高級語言設(shè)計(jì)技巧,這樣可以保證設(shè)計(jì)的簡潔和可維護(hù)性,一般FPGA對C設(shè)計(jì)接觸比較少從業(yè)者寫的C代碼一團(tuán)亂麻。
3. 調(diào)試
系統(tǒng)調(diào)試中,PL部分就是我們常用的Modelsim仿真+在線邏輯分析儀等,PS部分就是斷點(diǎn)、單步,查看內(nèi)存等。關(guān)于調(diào)試的經(jīng)驗(yàn)技巧下次搞篇文章分享。
軟件調(diào)試中,需要在處理器配置配置合適的的選項(xiàng),SDK中靈活使用,同時(shí)需要注意:調(diào)試完成得到最終發(fā)行版本時(shí),記得去掉在線邏輯分析儀和處理器JTAG配置,因?yàn)檫@樣會省掉不少資源,時(shí)序和功耗當(dāng)然會更好。
4. 其它
理解啟動(dòng)加載器的流程對理解軟硬件協(xié)同+Linux有很大幫助:
在為SoC 加電時(shí),啟動(dòng)過程從BootROM 開始。啟動(dòng)過程先從片上儲存器 (OCM) 加載然后啟動(dòng)執(zhí)行第一階段啟動(dòng)加載器 (FSBL)。FSBL負(fù)責(zé)配置具體的初始化。
然后根據(jù)軟件架構(gòu),第二階段啟動(dòng)加載器,如使用嵌入式 Linux 時(shí)的 U-Boot進(jìn)行初始化并執(zhí)行。 FSBL 和/或 SSBL 啟動(dòng) RTOS 或嵌入式 Linux 以及應(yīng)用代碼。如果沒有操作系統(tǒng),則是裸跑,好多步都沒有。簡單說裸跑就是51單片機(jī)C程序開發(fā),而跑系統(tǒng)則是ARM高端應(yīng)用程序開發(fā),原理性相差不大,可以自己查閱資料了解,不需要馬上都懂,因?yàn)殡S著時(shí)間和經(jīng)驗(yàn)的積累,這些你會慢慢要了解并使用鞏固。
5. 總結(jié)
FPGA大多是邏輯開發(fā)者,但只做邏輯的話局限性太大,而且現(xiàn)在的趨勢也是FPGA軟件話了,SDSOC就是證明。所以,我們應(yīng)該提前擴(kuò)充知識面,而且你會發(fā)現(xiàn)復(fù)雜軟件設(shè)計(jì)和操作系統(tǒng)經(jīng)驗(yàn)上有很多技巧也可以借鑒,更好地借鑒能幫助我們軟+硬+系統(tǒng)結(jié)合,設(shè)計(jì)出更有成就感的架構(gòu)應(yīng)用于項(xiàng)目中。
-
FPGA
+關(guān)注
關(guān)注
1644文章
21989瀏覽量
615188 -
嵌入式
+關(guān)注
關(guān)注
5143文章
19571瀏覽量
315689 -
Linux
+關(guān)注
關(guān)注
87文章
11479瀏覽量
213021
原文標(biāo)題:《UltraFast 嵌入式設(shè)計(jì)方法指南》(3)——軟件級
文章出處:【微信號:fpga234,微信公眾號:fpga234】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
FPGA培訓(xùn)--FPGA高級邏輯設(shè)計(jì)研修班
FPGA高級邏輯設(shè)計(jì)培訓(xùn)
FPGA高級邏輯設(shè)計(jì)培訓(xùn)
急聘!FPGA邏輯設(shè)計(jì)部門經(jīng)理
基于FPGA技術(shù)的RS 232接口的時(shí)序邏輯設(shè)計(jì)實(shí)現(xiàn)
要使用哪種方法去驗(yàn)證 FPGA 的邏輯設(shè)計(jì)?
FPGA邏輯設(shè)計(jì)中的常見問題有哪些
如何利用FPGA芯片進(jìn)行簡化的PCI接口邏輯設(shè)計(jì)?
如何去實(shí)現(xiàn)FPGA的邏輯設(shè)計(jì)呢
基于FPGA的MDIO接口邏輯設(shè)計(jì)
MPEG-2編碼復(fù)用器中的FPGA邏輯設(shè)計(jì)

MPEG-2編碼復(fù)用器中的FPGA邏輯設(shè)計(jì)

多分辨率圖像實(shí)時(shí)采集系統(tǒng)的FPGA邏輯設(shè)計(jì)
FPGA視頻教程之FPGA設(shè)計(jì)中時(shí)序邏輯設(shè)計(jì)要點(diǎn)的詳細(xì)資料說明

評論