介紹本教程介紹了如何使用μC/ OS BSP建立在ZYNQ基本應(yīng)用程序?使用Vivado -7000 ? IDE和賽靈思? SDK。在本教程中,您將使用Vivado IP集成器配置ZYNQ處理器系統(tǒng)以及FPGA架構(gòu)集成軟外設(shè)。然后,您將使用μC/ OS BSP來生成使用一個基本的應(yīng)用程序μC/ OS-III實(shí)時內(nèi)核。 本教程的視頻版本也可在Micrium的YouTube頻道: class='youtube-player' type='text/html' src='https://www./embed/mFOnxEBrXC8?wmode=opaque' frameborder='0' style='width: 400px; height: 300px;'> 本教程將讓您體驗(yàn)以下概念:
圖標(biāo) 本教程是不是意味著作為Vivado設(shè)計流程的演示。讀者建議先通過官方賽靈思教程和文檔嘗試本教程之前。 軟件要求
圖標(biāo) Vivado設(shè)計套件2014.3版本在本教程中使用。截圖和設(shè)計步驟可能會有所不同在其他版本。 硬件要求本教程的編寫和賽靈思ZC702,安富利ZedBoard測試?和MicroZed ?。然而,大多數(shù)如果不是全部基于ZYNQ開發(fā)平臺應(yīng)該是適合本教程。為了達(dá)到最佳效果董事會應(yīng)該有一個可用的UART輸出連接到PS UART。 確保你有適當(dāng)?shù)恼{(diào)試器或調(diào)試電纜連接,并且板載跳線進(jìn)行相應(yīng)配置。 硬件設(shè)計在寫任何賽靈思可編程器件的軟件應(yīng)用程序是創(chuàng)建硬件設(shè)計首先需要。本教程的目的是建立一個硬件設(shè)計具有下列組件。
步驟1.調(diào)用Vivado IDE和創(chuàng)建項(xiàng)目1.打開Vivado IDE作為起始頁。 圖- Vivado起始頁 圖 - Vivado起始頁 2.從入門頁面中點(diǎn)擊“創(chuàng)建新項(xiàng)目”。這應(yīng)該打開新項(xiàng)目向?qū)А?nbsp;圖- Vivado新建項(xiàng)目向?qū)?/a>點(diǎn)擊下一步。 圖 - Vivado新建項(xiàng)目向?qū)?/div> 3.輸入項(xiàng)目名稱和位置。確保“創(chuàng)建項(xiàng)目的子目錄”被選中。點(diǎn)擊下一步。 4.選擇“RTL工程”作為項(xiàng)目類型,并檢查“不要指定此時來源”復(fù)選框。點(diǎn)擊下一步。 5.在默認(rèn)部分對話框中選擇你板或部分。點(diǎn)擊下一步。 6.在項(xiàng)目摘要頁面單擊Finish。 這應(yīng)該在一個空白的項(xiàng)目主要Vivado IDE項(xiàng)目視圖為您帶來。 圖- Vivado項(xiàng)目視圖 圖 - Vivado項(xiàng)目視圖 步驟2.創(chuàng)建一個IP集成器設(shè)計1.在流動導(dǎo)航器中選擇“創(chuàng)建模塊設(shè)計”項(xiàng)目 圖-模塊化設(shè)計流程的項(xiàng)目 圖 - 模塊化設(shè)計流程的項(xiàng)目 2.指定塊設(shè)計一個名稱,然后單擊確定。 第3步:添加和設(shè)置ZYNQ處理器系統(tǒng)的IP塊1.通過右鍵單擊程序框圖畫布,選擇“添加IP ......”添加IP對話框。 圖-添加IP上下文菜單 圖 - 添加IP上下文菜單 2.在搜索字段中鍵入“ZYNQ”,然后選擇ZYNQ7處理系統(tǒng),最后按回車鍵的ZYNQ IP模塊添加到設(shè)計 圖-添加IP ZYNQ 圖 - 添加IP ZYNQ 您現(xiàn)在應(yīng)該看到ZYNQ塊單獨(dú)的程序段設(shè)計原理圖的中間。 圖-座ZYNQ 圖 - 座ZYNQ 3.調(diào)用的ZYNQ塊自動化對話框。這應(yīng)該高亮顯示為綠色的畫布上,并可以通過點(diǎn)擊“運(yùn)行座自動化”啟動。 圖- ZYNQ座自動化援助 圖標(biāo) 座自動化為Zynq7處理系統(tǒng)將只可當(dāng)Vivado知道你正在使用的電路板。 圖 - ZYNQ座自動化援助 4.在“運(yùn)行座自動化”對話框中選擇“應(yīng)用預(yù)設(shè)董事會”,并留下了交叉觸發(fā)設(shè)置為禁用 。點(diǎn)擊OK。 圖- ZYNQ座自動化對話 圖 - ZYNQ座自動化對話 如果一切順利阻止自動化應(yīng)該連接外部存儲器和固定的I / O自動。 圖- ZYNQ座自動化結(jié)果 圖 - ZYNQ座自動化結(jié)果 步驟4.自定義ZYNQ塊我們的設(shè)計在上一步驟的Zynq7 IP模塊加入到設(shè)計中。在這個步驟中,您將定制ZYNQ塊教程設(shè)計和連接將用于軟件演示兩個AXI定時器。 對于軟件演示,需要許多組件。 UART - 輸出字符串消息的UART必須連接到外部源。 參考時鐘 - 該ZYNQ可以導(dǎo)出多達(dá)四個時鐘信號FPGA架構(gòu)。一個是需要時鐘AXI定時器和互連。 通用主端口 - 要訪問位于PS的AXI4主端口的FPGA一個軟外設(shè)必須被激活。 中斷 - 要路由的定時器到PS對PS-PL中斷必須啟用的背面的中斷。 1.打開Zynq7通過右鍵單擊自定義對話框中的塊,然后選擇“自定義模塊”。 圖- ZYNQ塊上下文菜單 圖 - ZYNQ塊上下文菜單 重新定義IP對話框的Zynq7現(xiàn)在應(yīng)該打開。 圖- ZYNQ塊上下文菜單 圖 - ZYNQ塊上下文菜單 2.確保AXI通用主端口0是啟用的PS-PL配置部分。。調(diào)用ZYNQ塊時,這通常是完成默認(rèn) ZYNQ PS-PL配置-圖 圖 - ZYNQ PS-PL配置 3.安裝一個UART輸出。大多數(shù)板都會有這樣的配置為默認(rèn)的“外設(shè)I / O引腳”部分中。 圖- ZYNQ外圍IO配置 圖 - ZYNQ外圍IO配置 4.Setup從PS到PL一個50MHz的時鐘。這通常是“時鐘配置”部分中的默認(rèn)設(shè)置。 圖- ZYNQ時鐘配置 圖 - ZYNQ時鐘配置 5.Enable FPGA來PS中斷線路的“中斷”一節(jié)中。這將使路由多達(dá)16個獨(dú)立的中斷從FPGA到了Cortex-A9中斷控制器。 圖- ZYNQ中斷配置 圖 - ZYNQ中斷配置 在“重新定制IP”對話框6.依次點(diǎn)擊確定。 第5步:添加軟外設(shè)現(xiàn)在,ZYNQ塊被正確配置它的時間來添加軟定時器。這些定時器隨后將通過AXI互連連接到ZYNQ主端口和映射到主要的ARM互連地址空間。 1.添加兩個AXI定時器,以塊設(shè)計。這可以以類似的方式為ZYNQ塊通過右鍵單擊在畫布上完成,然后選擇添加IP。從添加IP對話框搜索“AXI定時器”,并將其添加到設(shè)計中。重復(fù)一次,第二次計時。 圖- ZYNQ和未連接定時器示意圖 圖 - ZYNQ和未連接定時器示意圖 2.連接自動化,可從突出綠色條,可用于自動連接定時器。 圖-定時器連接自動化 圖 - 定時器連接自動化 定時器現(xiàn)在應(yīng)該經(jīng)由一個新的AXI互連由連接自動化設(shè)計協(xié)助自動添加連接到ZYNQ塊。您可能會注意到一個復(fù)位處理系統(tǒng)也是設(shè)計的一部分了。 圖-定時器連接完成 圖 - 定時器連接完成 連接自動化還自動連接的外設(shè)分配地址范圍。您可以咨詢所產(chǎn)生的地址映射在框圖編輯器的“地址編輯器”窗格中。 圖-定時器地址配置 圖 - 定時器地址配置 3.從“添加IP”對話框中添加一個“Concat的”塊實(shí)例。該塊可以被用于聚合路由給PS的中斷信號。該塊的輸出應(yīng)連接到IRQ_F2P [0:0] ZYNQ塊的端口。然后axi_timer_0連接的中斷行腳0 Concat的塊。同樣應(yīng)該做axi_timer_1并連接到管腳1塊的毗連的。最終的原理應(yīng)該像 圖-最終的硬件設(shè)計原理圖 圖 - 最終的硬件設(shè)計原理圖 4.設(shè)計可以檢查通過點(diǎn)擊“驗(yàn)證設(shè)計”按鈕的錯誤。 第6步:生成HDL設(shè)計文件1.在源樹中右擊該塊設(shè)計文件,然后選擇“生成輸出文件”。 圖-生成輸出文件背景 圖 - 生成輸出文件背景 2.右鍵單擊再次選擇“創(chuàng)建HDL封裝”這個時候。當(dāng)系統(tǒng)提示選擇“讓Vivado管理創(chuàng)建包裝器”。 第7步合成,實(shí)施和生成流1.要進(jìn)行綜合,實(shí)現(xiàn)和位流生成一次全部單擊“生成流”中的“程序和調(diào)試”的流程導(dǎo)航部分。當(dāng)提示運(yùn)行前一代點(diǎn)擊合成和實(shí)施步驟是肯定的。 圖-生成流 圖 - 生成流 之后,它的完成你呈現(xiàn)一個對話框,您可以選擇打開實(shí)現(xiàn)的設(shè)計。從那里,你就可以查看資源的使用情況,定時信息和最終實(shí)施的布局規(guī)劃。該設(shè)計現(xiàn)在是準(zhǔn)備出口到Xilinx SDK。 2.要導(dǎo)出的設(shè)計選擇文件菜單中的“導(dǎo)出硬件”選項(xiàng)。請確保選擇“包含比特流”。 圖-導(dǎo)出硬件對話 圖 - 導(dǎo)出硬件對話 3.在文件菜單中選擇了“勞克SDK”選項(xiàng),再次啟動SDK。 這結(jié)束了本教程的硬件設(shè)計部分。 軟件設(shè)計本教程的軟件部分的目標(biāo)是創(chuàng)建一個基本的μC/ OS-III項(xiàng)目。然后證明同時使用Micrium公司定制的驅(qū)動程序和Xilinx獨(dú)立的驅(qū)動程序與AXI定時器接口。 步驟1.安裝了μC/ OS系統(tǒng)信息庫完整的安裝說明在現(xiàn)有的用戶手冊。 1.要安裝存儲庫將其添加到從Xilinx工具-當(dāng)前的工作空間>系統(tǒng)信息庫菜單。 圖-賽靈思SDK庫首選項(xiàng) 圖 - 賽靈思SDK庫首選項(xiàng) 第2步:生成μC/ OS BSP第一步驟是生成的C / OS的BSP的硬件平臺和一個簡單的C / OS的“Hello World”類型的項(xiàng)目。 1.打開賽靈思SDK。這應(yīng)該已經(jīng)完成的硬件設(shè)計節(jié)的最后一步。 圖-賽靈思SDK主屏幕 圖 - 賽靈思SDK主屏幕 2.打開“新的應(yīng)用項(xiàng)目對話框”。它可以從文件 - >新建 - >應(yīng)用程序項(xiàng)目菜單進(jìn)行訪問。 在此對話框中,輸入項(xiàng)目名稱,然后選擇“UCOS”作為操作系統(tǒng)平臺。點(diǎn)擊下一步。 圖-新的應(yīng)用項(xiàng)目對話框 圖 - 新的應(yīng)用項(xiàng)目對話框 3.新項(xiàng)目模板對話框應(yīng)該會出現(xiàn)下一個。選擇的uC / OS-III的Hello World然后單擊Finish。 圖-新建項(xiàng)目對話框的模板 圖 - 新建項(xiàng)目對話框的模板 您現(xiàn)在應(yīng)該看到在IDE中板級支持包的摘要。 4.打開板支持包設(shè)置通過單擊對話框中的“修改這個BSP的設(shè)置”。 5.選擇必要的庫ucos_common,ucos_osiii和ucos_standalone。 圖- BSP設(shè)置概述 該ucos_common庫始終需要由BSP以及內(nèi)核之一或者ucos_osii或ucos_osiii但不能同時使用。該ucos_standalone包是一個兼容性組件能夠使用賽靈思獨(dú)立的驅(qū)動程序。在庫組件的詳細(xì)信息可以在中找到支持Micrium公司產(chǎn)品的鏈接到該文檔中,用戶手冊部分。 圖 - BSP設(shè)置概述 6.在“UCOS”配置section.For的ZC702和ZedBoard這應(yīng)該是ps7_uart_1選擇STDOUT提供商。 圖- BSP標(biāo)準(zhǔn)輸出設(shè)置 圖 - BSP標(biāo)準(zhǔn)輸出設(shè)置 7.配置的驅(qū)動程序AXI定時器。在本教程中axi_timer_0將與μC/ OS定制驅(qū)動程序進(jìn)行編程,而axi_timer_1將使用Xilinx獨(dú)立的驅(qū)動器。 圖- BSP驅(qū)動程序配置 圖 - BSP驅(qū)動程序配置 8.單擊確定。 第3步:構(gòu)建和調(diào)試的示范項(xiàng)目默認(rèn)生成的項(xiàng)目是一個簡單的Hello World消息的主要任務(wù)打印。 1.生成項(xiàng)目。這是自動賽靈思SDK修改BSP配置后,通常會完成。 2.選擇項(xiàng)目(不是BSP)在工作區(qū)中,并從運(yùn)行 - >調(diào)試配置...菜單打開調(diào)試配置對話框。 3.創(chuàng)建雙擊“賽靈思公司的C / C ++應(yīng)用程序(系統(tǒng)調(diào)試)”一個新的調(diào)試配置。 4.檢查“復(fù)位整個系統(tǒng)”和“計劃FPGA”在新創(chuàng)建的調(diào)試配置。這將啟動調(diào)試會話時自動編程的FPGA。 圖-調(diào)試配置 圖 - 調(diào)試配置 5.單擊調(diào)試。 對FPGA進(jìn)行編程的調(diào)試之后,現(xiàn)在應(yīng)該停在main()函數(shù)。 6.終端連接到你的開發(fā)板的COM端口。嵌入式終端或任何其他的終端應(yīng)用程序都可以使用。 圖-終端配置 圖 - 終端配置 7.按運(yùn)行- >恢復(fù)或F8運(yùn)行演示。您應(yīng)該看到在終端文本輸出。 圖-端子輸出 圖 - 終端輸出 第4步程序的AXI定時器0的ucos_axitimer驅(qū)動程序對于一些外圍設(shè)備,Micrium公司經(jīng)銷的自定義驅(qū)動,通常被設(shè)計為線程安全的通過RTOS服務(wù)使用。例如,ucos_axitimer主要作用是充當(dāng)MicroBlaze的系統(tǒng)的內(nèi)核時基的驅(qū)動。這些驅(qū)動程序可供一般使用的便利性。 在這個步驟中,您將創(chuàng)建一個新的內(nèi)核任務(wù)在等待一個信號量定期發(fā)布的中斷服務(wù)程序。這ISR將通過AXI定時器0使用ucos_axitimer被觸發(fā)。在步驟5中相同的操作將使用Xilinx獨(dú)立驅(qū)動來完成。 圖標(biāo) 為清楚起見由各個內(nèi)核函數(shù)返回的錯誤碼在下列實(shí)施例,不檢查。錯誤應(yīng)該通常在最終應(yīng)用進(jìn)行驗(yàn)證。 1.創(chuàng)建一個新的任務(wù)和信號量。 第一步是聲明的任務(wù)功能,它的TCB(任務(wù)控制塊)和堆??臻g鄰近app.c.的頂 與此同時,我們需要在這個例子中名為Timer0Semaphore一個信號。 上市-定時器0聲明的任務(wù)
上市 - 定時器0聲明的任務(wù) 在μC/ OS-III裸任務(wù)是一個簡單的功能,Timer0Task在這個例子中。為了幫助演示,我們可以在新的任務(wù)開始加UCOS_Print(),以確保它已成功創(chuàng)建。請參閱 上市-定時器0任務(wù)骷髏因?yàn)槲覀儾幌M巳蝿?wù)返回時(1)在接近函數(shù)的末尾添加。
上市 - 定時器0任務(wù)骷髏 圖標(biāo) 該UCOS_Print()的實(shí)現(xiàn)是重入(線程安全的),這意味著它可以從多個任務(wù)被稱為無特殊同步。 信號量是用在本實(shí)施例中,等待來自計時器的信號。創(chuàng)建于μC/ OS-III信號量是一個簡單的函數(shù)調(diào)用,如圖 上市-定時器0信號燈創(chuàng)建 |
|
來自: wanglh5555 > 《待分類》