一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Zynq-7000的256KB OCM應(yīng)用程序運行

454398 ? 來源:賽靈思中文社區(qū) ? 作者:賽靈思中文社區(qū) ? 2020-11-02 16:12 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

某些應(yīng)用程序小,可以全部放在Zynq-7000的256KB OCM上運行。這時,修改FSBL,可以把APP和FSBL編譯成一個可執(zhí)行文件,F(xiàn)SBL初始化硬件后,就直接運行應(yīng)用程序。

這種情況下,單板沒有DDR。

1. DDR

缺省的FSBL,使用宏XPAR_PS7_DDR_0_S_AXI_BASEADDR屏蔽了很多代碼,不會初始化存儲設(shè)備,比如QSPI Flash,也不會加載FPGA。
對于只使用OCM上運行程序的場景,需要減少宏XPAR_PS7_DDR_0_S_AXI_BASEADDR屏蔽的代碼,也就是只屏蔽DDRInitCheck()的定義和調(diào)用就可以了。

下面屏蔽DDRInitCheck()的調(diào)用

int main(void)
{
   ... ...
#ifdef XPAR_PS7_DDR_0_S_AXI_BASEADDR

    /*
     * DDR Read/write test 
     */
	Status = DDRInitCheck();
	if (Status == XST_FAILURE) {
		fsbl_printf(DEBUG_GENERAL,"DDR_INIT_FAIL /r/n");
		/* Error Handling here */
		OutputStatus(DDR_INIT_FAIL);
		/*
		 * Calling FsblHookFallback instead of Fallback
		 * since, devcfg driver is not yet initialized
		 */
		FsblHookFallback();
	}

#endif  // XPAR_PS7_DDR_0_S_AXI_BASEADDR

   ... ...
}

下面屏蔽DDRInitCheck()的定義

#ifdef XPAR_PS7_DDR_0_S_AXI_BASEADDR
u32 DDRInitCheck(void)
{
   ... ...
}
#endif  // XPAR_PS7_DDR_0_S_AXI_BASEADDR

2. 初始化QSPI

QSPI Flash大于16MB時,超出了線性模式的尋址范圍。FSBL會把QSPI初始化為IO模式。
如果沒有DDR,會導(dǎo)致不能加載FPGA。為了解決這個問題,在加載FPGA前,強行把QSPI Flash設(shè)置成16MB大小,初始化為線性模式。加載FPGA后,再按正常模式初始化QSPI Flash。因此,F(xiàn)PGA的bit文件,必須放在QSPI Flash的前16MB里。

在第一次初始化QSPI Flash時,強行把QSPI Flash初始化為線性模式,可以正常加載FPGA。

int main(void)
{
   ... ...

	if (BootModeRegister == QSPI_MODE) {
		fsbl_printf(DEBUG_GENERAL,"Boot mode is QSPI/n/r");
		InitQspi(1);
		MoveImage = QspiAccess;
		fsbl_printf(DEBUG_INFO,"QSPI Init Done /r/n");
	} 
   ... ...
}

3. 運行應(yīng)用程序

在FsblHandoff()里,關(guān)閉看門狗后,執(zhí)行應(yīng)程序。執(zhí)行應(yīng)用程序前,按原來的模式初始化QSPI Flash,也就是小于等于16MB時,初始化為線性模式;大于16MB時,初始化為IO模式。

void FsblHandoff(u32 FsblStartAddr)
{
   ... ...

	/*
	 * FSBL user hook call before handoff to the application
	 */
	Status = FsblHookBeforeHandoff();
	if (Status != XST_SUCCESS) {
		fsbl_printf(DEBUG_GENERAL,"FSBL_HANDOFF_HOOK_FAIL/r/n");
 		OutputStatus(FSBL_HANDOFF_HOOK_FAIL);
		FsblFallback();
	}

#ifdef XPAR_XWDTPS_0_BASEADDR
	XWdtPs_Stop(&Watchdog);
#endif

	// Hank: Add customer's application code here
	// We can access FPGA register here.
	int main_app();
	InitQspi( 0 );
	main_app();

	/*
	 * Clear our mark in reboot status register
	 */
	ClearFSBLIn();
  ... ...

}

4. 進一步優(yōu)化

還可以根據(jù)單板情況,進一步優(yōu)化。比如,可以屏蔽NOR Flash的代碼,PCW_SILICON_VERSION_1和PCW_SILICON_VERSION_2的數(shù)據(jù)和代碼。FSBL的初始化代碼和數(shù)據(jù),只在上電時被使用,也可以釋放出來更應(yīng)用程序使用。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • FPGA
    +關(guān)注

    關(guān)注

    1645

    文章

    22050

    瀏覽量

    618511
  • FlaSh
    +關(guān)注

    關(guān)注

    10

    文章

    1679

    瀏覽量

    151840
  • DDR
    DDR
    +關(guān)注

    關(guān)注

    11

    文章

    732

    瀏覽量

    66829
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    【Z-turn Board試用體驗】+Zynq7000啟動流程介紹

    256KbOCM,當(dāng)FSBL開始運行后,器件就正式由咱自己控制了。Xilinx提供了一份FSBL代碼,如果沒什么特殊要求,可以直接使用。按照手冊說明,F(xiàn)SBL應(yīng)該完成以下幾件事。1). 使用XPS提供
    發(fā)表于 07-22 20:42

    Zynq-7000 SoC提供 FPGA 資源

    ArduZynq 和 TE0726-03M ZynqBerry SBC 中的 Zynq Z-7010 SoC 的 FPGA 容量存在顯著差異。雖然所有 Zynq-7000 SoC 都采用雙核 Arm
    發(fā)表于 08-31 14:43

    如何為Zynq-7000 soc尋找USB主機驅(qū)動程序?

    親愛的先生,我們正在為Zynq-7000 soc尋找USB主機驅(qū)動程序。請為此提供支持感謝致敬以上來自于谷歌翻譯以下為原文Dear Sir,we are loooking for USB host
    發(fā)表于 04-03 10:28

    Zynq-7000設(shè)置數(shù)字是什么意思?

    我正在使用Zynq-7000,選擇欲望頻率,我知道我應(yīng)該使用-g ConfigRate,但這些設(shè)置數(shù)字是什么意思?例如,默認數(shù)字是3,這意味著頻率是300KHz?謝謝
    發(fā)表于 08-05 13:14

    Zynq-7000是什么?Zynq-7000能干什么?

    Zynq-7000是什么?Zynq-7000能干什么?有何作用?
    發(fā)表于 06-30 06:22

    Xilinx Zynq-7000特性參數(shù)

    CPUCPU為Xilinx Zynq-7000SOC,兼容XC7Z035/XC7Z045/XC7Z100,平臺升級能力強,以下為Xilinx Zynq-7000特性參數(shù):電源接口和開關(guān)采用12V3A
    發(fā)表于 12-30 07:55

    Zynq-7000系列特征概述

    相比較經(jīng)典的FPGA,Zynq-7000系列最大的特點是將處理系統(tǒng)PS和可編程資源PL分離開來,固化了PS系統(tǒng)的存在,實現(xiàn)了真正意義上的SOC(System On Chip)。 1.
    發(fā)表于 11-18 05:11 ?2w次閱讀
    <b class='flag-5'>Zynq-7000</b>系列特征概述

    基于Zynq-7000平臺運行SoftPLC的解決方案

    基于Zynq-7000平臺運行SoftPLC的解決方案,集成了KW-SoftPLC,PowerLink實時以太網(wǎng)協(xié)議,Linux操作系統(tǒng),用以快速、精準的實現(xiàn)工業(yè)控制應(yīng)用
    的頭像 發(fā)表于 06-05 09:46 ?5982次閱讀
    基于<b class='flag-5'>Zynq-7000</b>平臺<b class='flag-5'>運行</b>SoftPLC的解決方案

    Xilinx Zynq-7000 EPP Showcased at Embedded World

    Xilinx Zynq-7000 EPP Showcased at Embedded World
    的頭像 發(fā)表于 06-04 13:46 ?3556次閱讀

    Zynq-7000 Extensible Processing Platform in Action

    Zynq-7000 Extensible Processing Platform in Action
    的頭像 發(fā)表于 05-24 16:47 ?3651次閱讀

    如何使用BootGen為Zynq-7000 AP SoC構(gòu)建完整的映像

    了解如何使用BootGen為Zynq-7000 All Programmable SoC構(gòu)建完整的映像。 引導(dǎo)映像通常包括第一級引導(dǎo)加載程序,至少一個軟件應(yīng)用程序和PL的比特流。
    的頭像 發(fā)表于 11-23 06:58 ?5866次閱讀

    如何使用Zynq-7000 VI進行IP仿真驗證和調(diào)試

    本視頻將向您講解如何使用Zynq-7000 VIP(驗證IP)來高效地驗證基于Zynq-7000處理系統(tǒng)的設(shè)計。另外,視頻還介紹了如何配置,以及如何使用范例項目進行仿真的實施步驟。
    的頭像 發(fā)表于 11-22 06:48 ?4961次閱讀

    zynq-7000 SoC產(chǎn)品選型指南

    zynq-7000 SoC產(chǎn)品選型指南
    發(fā)表于 12-09 16:15 ?12次下載

    ZYNQ-7000系列MIO、EMIO、AXI_GPIO接口

    ZYNQ-7000系列MIO/EMIO/AXI_GPIO接口
    發(fā)表于 07-25 17:41 ?3241次閱讀
    <b class='flag-5'>ZYNQ-7000</b>系列MIO、EMIO、AXI_GPIO接口

    Zynq-7000 SoC數(shù)據(jù)手冊下載

    Zynq-7000 SoC數(shù)據(jù)手冊下載
    發(fā)表于 05-21 15:22 ?35次下載