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

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

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

MPSoC SWDT在Standalone下的應(yīng)用有哪些?

YCqV_FPGA_EETre ? 來(lái)源:搜狐網(wǎng) ? 作者:搜狐網(wǎng) ? 2020-09-19 11:15 ? 次閱讀

1、 Author

Hank Fu (付漢杰) Staff FAE embedded, Xilinx, Inc.hankf@xilinx.com

2、問(wèn)題
工程師反映,根據(jù)MPSoC SWDT在Standalone下的例子xwdtps_polled_example.c,不能實(shí)現(xiàn)MPSoC的PS復(fù)位。SWDT例子來(lái)自于目錄XilinxSDK2018.3dataembeddedswXilinxProcessorIPLibdriverswdtps_v3_1examples。SWDT例子xwdtps_polled_example.c只檢查了超時(shí)狀態(tài),沒(méi)有實(shí)現(xiàn)復(fù)位。工程師把其中的“XWdtPs_DisableOutput(&Watchdog, XWDTPS_RESET_SIGNAL)”改為“XWdtPs_EnableOutput(&Watchdog, XWDTPS_RESET_SIGNAL)”,仍然不能復(fù)位。

工程師根據(jù)FSBL的main.c中的InitWatchDog( ),添加代碼后,依然不能使MPSoC的PS復(fù)位。

3、 分析

3.1. FSBL的main.c

main.c是Zynq-7000的FSBL的代碼??蛻羰褂肧Ource Insight分析代碼時(shí),使用了錯(cuò)誤的文件。

3.2. MPSoC的FSBL

MPSoC的FSBL的主文件是xfsbl_main.c,wdt的代碼在xfsbl_misc_drivers.c和xfsbl_misc_drivers.h中,初始化WDT的函數(shù)是u32 XFsbl_InitWdt(void),宏定義XFSBL_WDT_EXPIRE_TIME定義了FSBL中wdt的超時(shí)時(shí)間。

在XFsbl_InitWdt(void)中,初始化并啟動(dòng)WDT(XWdtPs_RestartWdt( ))后,直接使用sleep(20),睡眠20秒。睡眠過(guò)程中,因?yàn)閃DT超時(shí),MPSoC的PS會(huì)被復(fù)位。這說(shuō)明FSBL關(guān)于WDT代碼是正確的。

3.3. Standalone下的WDT

對(duì)比MPSoC FSBL初始化WDT的函數(shù)XFsbl_InitWdt( ),發(fā)現(xiàn)它設(shè)置了PMU的ERROR_SRST_EN_1 Register和ERROR_EN_1 Register。把相關(guān)代碼復(fù)制到Standalone下的代碼,在初始化WDT之前運(yùn)行。重新編譯后,WDT超時(shí)會(huì)復(fù)位MPSoC的PS。

3.4. 再次運(yùn)行時(shí),設(shè)置PMU的ERROR_SRST_EN_1后,PS馬上復(fù)位。

WDT超時(shí)后,再次使用Debugger運(yùn)行時(shí),設(shè)置PMU的ERROR_SRST_EN_1后,WDT還沒(méi)有被初始化時(shí),PS馬上被復(fù)位。檢查PMU ERROR_STATUS_1 Register,發(fā)現(xiàn)WDT的超時(shí)狀態(tài)為1。于是把讀取到的ERROR_STATUS_1的值,再寫回ERROR_STATUS_1 Register,清除WDT的超時(shí)狀態(tài)。

這樣在WDT超時(shí)后,設(shè)置PMU的ERROR_SRST_EN_1后,PS不會(huì)馬上被復(fù)位。

3.5. FPD_SWDT 和 LPD_SWDT

工程師發(fā)現(xiàn)使用LPD_SWDT,能復(fù)位PS;換成FPD_SWDT,不能復(fù)位PS。

在設(shè)置PMU的ERROR_SRST_EN_1 Register和ERROR_EN_1 Register時(shí),LPD_SWDT和FPD_SWDT有各自的使能位。增加設(shè)置FPD_SWDT的使能位后,換成FPD_SWDT,也能復(fù)位PS。

#define PMU_GLOBAL_ERROR_SRST_EN_1 ( ( PMU_GLOBAL_BASEADDR ) + 0X0000056CU ) #define PMU_GLOBAL_ERROR_SRST_EN_1_LPD_SWDT_MASK 0X00001000U #define PMU_GLOBAL_ERROR_SRST_EN_1_FPD_SWDT_MASK 0X00002000U04 Vivado 設(shè)置

使用WDT,要在Vivado里的PCW里,使能對(duì)應(yīng)的WDT。

5、相關(guān)代碼

5.1. 檢查和清除PMU寄存器

xil_printf(" " ); u32_reg = Xil_In32(0xFFD80530); xil_printf("Old PMU ERROR_STATUS_1 (PMU_GLOBAL) Register: %x. ", u32_reg ); Xil_Out32(0xFFD80530, u32_reg); // Clear PMU ERROR_STATUS_1 (PMU_GLOBAL) Register u32_reg = Xil_In32(0xFFD80540); xil_printf("Old PMU ERROR_STATUS_2 (PMU_GLOBAL) Register: %x. ", u32_reg ); Xil_Out32(0xFFD80540, u32_reg); // Clear PMU ERROR_STATUS_2 (PMU_GLOBAL) Register u32_reg = Xil_In32(0xFFD80530); xil_printf("New PMU ERROR_STATUS_1 (PMU_GLOBAL) Register: %x. ", u32_reg ); u32_reg = Xil_In32(0xFFD80540); xil_printf("New PMU ERROR_STATUS_2 (PMU_GLOBAL) Register: %x. ", u32_reg );

5.2. 檢查SWDT寄存器狀態(tài)

void CheckWDTRegisterValue( u32 EffectiveAddress ) { u32 u32_reg; u32_reg = XWdtPs_ReadReg(EffectiveAddress, XWDTPS_ZMR_OFFSET); xil_printf("WDT Zero Mode Register: %x. ", u32_reg ); u32_reg = XWdtPs_ReadReg(EffectiveAddress, XWDTPS_CCR_OFFSET); xil_printf("WDT Counter Control Register: %x. ", u32_reg ); u32_reg = XWdtPs_ReadReg(EffectiveAddress, XWDTPS_RESTART_OFFSET); xil_printf("WDT Restart Register: %x. ", u32_reg ); u32_reg = XWdtPs_ReadReg(EffectiveAddress, XWDTPS_SR_OFFSET); xil_printf("WDT Status Register: %x. ", u32_reg ); }

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

    關(guān)注

    0

    文章

    4

    瀏覽量

    6543
  • MPSoC
    +關(guān)注

    關(guān)注

    0

    文章

    195

    瀏覽量

    24212

原文標(biāo)題:【干貨分享】MPSoC SWDT在Standalone下的應(yīng)用

文章出處:【微信號(hào):FPGA-EETrend,微信公眾號(hào):FPGA開發(fā)圈】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    看門狗Zynq MPSoC上的使用技巧

    Zynq MPSoC的器件里,PS (Processing System )集成了三個(gè)看門狗,分別是CSU SWDT,LPD SWDT和FPD S
    的頭像 發(fā)表于 06-30 09:47 ?1345次閱讀
    看門狗<b class='flag-5'>在</b>Zynq <b class='flag-5'>MPSoC</b>上的使用技巧

    Zynq UltraScale + MPSoC USB 3.0 CDC器件類設(shè)計(jì)

    設(shè)備模式使用Zynq?UltraScale+?MPSoC USB 3.0控制器,并使用批量傳輸類型使用USB 3.0進(jìn)行串行通信設(shè)備抽象。USB組件中的CDC(ACM)類用于數(shù)據(jù)通信。您通??梢?b class='flag-5'>在串行
    發(fā)表于 01-03 09:59

    SDK中運(yùn)行程序時(shí)能在StandAlone模式使用多少內(nèi)存?

    SDK中運(yùn)行程序時(shí),我可以StandAlone模式使用多少內(nèi)存?(帶有1G DDR的Zynq7030上)運(yùn)行程序時(shí)獨(dú)立模式需要多少內(nèi)
    發(fā)表于 03-29 13:37

    我的hello world(基于米爾MPSOC開發(fā)板)

    Hello World好啦,用MPSOC上輸出HELLO WORLD已經(jīng)完成。其實(shí)也不難,關(guān)鍵是要多看開發(fā)手冊(cè)、光盤資料,配置細(xì)節(jié)上留意(因?yàn)槠L(zhǎng),這里縮減了許多步驟圖片)。另外,不明白的地方可以找米爾技術(shù)支持。``
    發(fā)表于 08-07 15:05

    如何利用ZYNQ MPSoC玩DOOM?

    賽靈思和 DornerWorks 的系統(tǒng)軟件團(tuán)隊(duì)賽靈思的 Zynq? Ultrascale+? MPSoC 上啟動(dòng) Xen Project 管理程序時(shí),我們發(fā)現(xiàn)可通過(guò)運(yùn)行當(dāng)年叱詫一時(shí)的流行電子游戲
    發(fā)表于 10-09 06:21

    請(qǐng)問(wèn)Zynq Ultrascale + MPSOC本身是否存在問(wèn)題?

    你好我們正在考慮我們的新設(shè)計(jì)中使用Zynq Ultrascale + MPSOC。我們想在我們的電路板設(shè)計(jì)中加入HDMI接口。 Zynq Ultrascale + MPSOCPS中
    發(fā)表于 10-14 09:17

    如何調(diào)試Zynq UltraScale+ MPSoC VCU DDR控制器

      如何調(diào)試Zynq UltraScale+ MPSoC VCU DDR控制器  Zynq UltraScale+ MPSoC VCU DDR 控制器是一款專用 DDR 控制器,只支持 Zynq
    發(fā)表于 01-07 16:02

    ZYNQ Ultrascale+ MPSOC FPGA教程

    ZYNQ Ultrascale+ MPSOC FPGA教程
    發(fā)表于 02-02 07:53

    如何在MPSoC上運(yùn)行基于eglfs_kms的QT應(yīng)用程序

    MPSoC上運(yùn)行基于eglfs_kms的QT應(yīng)用程序
    發(fā)表于 02-19 08:01

    基于MPSoC的以太網(wǎng)接口該如何去設(shè)計(jì)?

    本文介紹了一種基于MPSoC的以太網(wǎng)接口設(shè)計(jì)方案。
    發(fā)表于 05-19 07:22

    Standalone Power Factor Correc

    Standalone Power Factor Correction (PFC) Controller in Continuous Conduction Mode (CCM):Product
    發(fā)表于 03-01 14:47 ?48次下載

    干貨:PSoC SWDTStandalone的應(yīng)用

    SWDT Standalone 的例子 xwdtps_polled_example.c,不能實(shí)現(xiàn) MPSoC 的 PS 復(fù)位。
    的頭像 發(fā)表于 10-30 10:13 ?946次閱讀

    CSU SWDT、LPD SWDT和FPD SWDT的關(guān)系與使用

    Zynq MPSoC的器件里,PS (Processing System )集成了三個(gè)看門狗,分別是CSU SWDT,LPD SWDT和FPD S
    的頭像 發(fā)表于 06-15 11:52 ?2275次閱讀

    C1M-A1/2 SWDT 用戶手冊(cè) HW

    C1M-A1/2 SWDT 用戶手冊(cè) HW
    發(fā)表于 02-02 19:18 ?0次下載
    C1M-A1/2 <b class='flag-5'>SWDT</b> 用戶手冊(cè) HW

    C1M-A1/2SWDT 用戶手冊(cè) HW

    C1M-A1/2 SWDT 用戶手冊(cè) HW
    發(fā)表于 07-04 19:04 ?0次下載
    C1M-A1/2<b class='flag-5'>SWDT</b> 用戶手冊(cè) HW