精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

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

3天內不再提示

Zynq-7000的256KB OCM應用程序運行

454398 ? 來源:賽靈思中文社區 ? 作者:賽靈思中文社區 ? 2020-11-02 16:12 ? 次閱讀

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

這種情況下,單板沒有DDR

1. DDR

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

下面屏蔽DDRInitCheck()的調用

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,會導致不能加載FPGA。為了解決這個問題,在加載FPGA前,強行把QSPI Flash設置成16MB大小,初始化為線性模式。加載FPGA后,再按正常模式初始化QSPI Flash。因此,FPGA的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. 運行應用程序

在FsblHandoff()里,關閉看門狗后,執行應程序。執行應用程序前,按原來的模式初始化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. 進一步優化

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

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • FPGA
    +關注

    關注

    1620

    文章

    21509

    瀏覽量

    598853
  • FlaSh
    +關注

    關注

    10

    文章

    1598

    瀏覽量

    147329
  • DDR
    DDR
    +關注

    關注

    11

    文章

    697

    瀏覽量

    64926
收藏 人收藏

    評論

    相關推薦

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

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

    Zynq-7000 SoC提供 FPGA 資源

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

    如何為Zynq-7000 soc尋找USB主機驅動程序

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

    Zynq-7000設置數字是什么意思?

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

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

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

    Xilinx Zynq-7000特性參數

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

    Zynq-7000系列特征概述

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

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

    基于Zynq-7000平臺運行SoftPLC的解決方案,集成了KW-SoftPLC,PowerLink實時以太網協議,Linux操作系統,用以快速、精準的實現工業控制應用
    的頭像 發表于 06-05 09:46 ?5480次閱讀
    基于<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
    的頭像 發表于 06-04 13:46 ?3100次閱讀

    Zynq-7000 Extensible Processing Platform in Action

    Zynq-7000 Extensible Processing Platform in Action
    的頭像 發表于 05-24 16:47 ?3199次閱讀

    如何使用BootGen為Zynq-7000 AP SoC構建完整的映像

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

    如何使用Zynq-7000 VI進行IP仿真驗證和調試

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

    zynq-7000 SoC產品選型指南

    zynq-7000 SoC產品選型指南
    發表于 12-09 16:15 ?12次下載

    Zynq-7000 SoC數據手冊下載

    Zynq-7000 SoC數據手冊下載
    發表于 05-21 15:22 ?28次下載

    Zynq-7000 SoC:嵌入式設計教程

    電子發燒友網站提供《Zynq-7000 SoC:嵌入式設計教程.pdf》資料免費下載
    發表于 09-13 09:20 ?3次下載
    <b class='flag-5'>Zynq-7000</b> SoC:嵌入式設計教程