小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

ucos iii在zynq上的移植

 wanglh5555 2019-10-14

介紹

本教程介紹了如何使用μ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)以下概念:

  • 一個μC/ OS-III的應(yīng)用程序和BSP的生成

  • BSP和驅(qū)動程序配置

  • 選擇和使用賽靈思獨(dú)立驅(qū)動和Micrium的自定義驅(qū)動程序

  • 標(biāo)準(zhǔn)輸出(文字痕跡)

  • 中斷處理

圖標(biāo)

本教程是不是意味著作為Vivado設(shè)計流程的演示。讀者建議先通過官方賽靈思教程和文檔嘗試本教程之前。

軟件要求

  1. 合適的Vivado設(shè)計套件是本教程所需。是否支持您的主板WebPACK的版本都可以使用。

  2. μC/ OS BSP。BSP是隨μC/ OS-III的評估目的的完整的源代碼。請參閱安裝說明進(jìn)行安裝。

圖標(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è)計具有下列組件。

  • 的Cortex-A9處理器,硬化

  • 經(jīng)由處理器系統(tǒng)的UART標(biāo)準(zhǔn)輸出

  • 基本FPGA設(shè)計

    • AXI互連連接到PS通用AXI4主端口

    • 兩個軟AXI定時器

    • 這兩個定時器到PS的路由

步驟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ù)

1
2
3
4
無效    Timer0Task(無效 * p_arg);
OS_TCB   Timer0TCB;
CPU_STK Timer0TaskStk [512];
OS_SEM   Timer0Semaphore;
上市 - 定時器0聲明的任務(wù)

在μC/ OS-III裸任務(wù)是一個簡單的功能,Timer0Task在這個例子中。為了幫助演示,我們可以在新的任務(wù)開始加UCOS_Print(),以確保它已成功創(chuàng)建。請參閱 上市-定時器0任務(wù)骷髏因?yàn)槲覀儾幌M巳蝿?wù)返回時(1)在接近函數(shù)的末尾添加。

1
2
3
4
6
7
8
9
無效 Timer0Task(無效 * p_arg)
{
    OS_ERR os_err;
    UCOS_Print(“Timer0Task達(dá)到\ r \ N” );
     (1) {
    }
}
上市 - 定時器0任務(wù)骷髏
圖標(biāo)

該UCOS_Print()的實(shí)現(xiàn)是重入(線程安全的),這意味著它可以從多個任務(wù)被稱為無特殊同步。

信號量是用在本實(shí)施例中,等待來自計時器的信號。創(chuàng)建于μC/ OS-III信號量是一個簡單的函數(shù)調(diào)用,如圖 上市-定時器0信號燈創(chuàng)建

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多