女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

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

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

3天內不再提示

干貨:PSoC SWDT在Standalone下的應用

電子設計 ? 來源:電子設計 ? 作者:電子設計 ? 2020-10-30 10:13 ? 次閱讀

01、Author

Hank Fu (付漢杰) Staff FAE embedded, Xilinx, Inc. [email protected]

02、問題

工程師反映,根據 MPSoC SWDT 在 Standalone 下的例子 xwdtps_polled_example.c,不能實現 MPSoC 的 PS 復位。SWDT 例子來自于目錄 /Xilinx/SDK/2018.3/data/embeddedsw/XilinxProcessorIPLib/drivers/wdtps_v3_1/examples/。SWDT 例子 xwdtps_polled_example.c 只檢查了超時狀態,沒有實現復位。工程師把其中的“XWdtPs_DisableOutput(&Watchdog, XWDTPS_RESET_SIGNAL)”改為“XWdtPs_EnableOutput(&Watchdog, XWDTPS_RESET_SIGNAL)”,仍然不能復位。


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

03、分析

3.1. FSBL 的 main.c

main.c 是 Zynq-7000 的 FSBL 的代碼。客戶使用 SOurce Insight 分析代碼時,使用了錯誤的文件。

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

在 XFsbl_InitWdt(void)中,初始化并啟動 WDT(XWdtPs_RestartWdt( ))后,直接使用 sleep(20),睡眠 20 秒。睡眠過程中,因為 WDT 超時,MPSoC 的 PS 會被復位。這說明 FSBL 關于 WDT 代碼是正確的。

3.3. Standalone 下的 WDT
對比 MPSoC FSBL 初始化 WDT 的函數 XFsbl_InitWdt( ),發現它設置了 PMU 的 ERROR_SRST_EN_1 Register 和 ERROR_EN_1 Register。把相關代碼復制到 Standalone 下的代碼,在初始化 WDT 之前運行。重新編譯后,WDT 超時會復位 MPSoC 的 PS。

3.4. 再次運行時,設置 PMU 的 ERROR_SRST_EN_1 后,PS 馬上復位。

WDT 超時后,再次使用 Debugger 運行時,設置 PMU 的 ERROR_SRST_EN_1 后,WDT 還沒有被初始化時,PS 馬上被復位。檢查 PMU ERROR_STATUS_1 Register,發現 WDT 的超時狀態為 1。于是把讀取到的 ERROR_STATUS_1 的值,再寫回 ERROR_STATUS_1 Register,清除 WDT 的超時狀態。

這樣在 WDT 超時后,設置 PMU 的 ERROR_SRST_EN_1 后,PS 不會馬上被復位。

3.5. FPD_SWDT 和 LPD_SWDT

工程師發現使用 LPD_SWDT,能復位 PS;換成 FPD_SWDT,不能復位 PS。


在設置 PMU 的 ERROR_SRST_EN_1 Register 和 ERROR_EN_1 Register 時,LPD_SWDT 和 FPD_SWDT 有各自的使能位。增加設置 FPD_SWDT 的使能位后,換成 FPD_SWDT,也能復位 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 0X00002000U


04、Vivado 設置

使用 WDT,要在 Vivado 里的 PCW 里,使能對應的 WDT。


05、相關代碼

5.1. 檢查和清除 PMU 寄存器

xil_printf("/r/n" );
u32_reg = Xil_In32(0xFFD80530);
xil_printf("Old PMU ERROR_STATUS_1 (PMU_GLOBAL) Register: %x./r/n", 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./r/n", 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./r/n", u32_reg );

u32_reg = Xil_In32(0xFFD80540);
xil_printf("New PMU ERROR_STATUS_2 (PMU_GLOBAL) Register: %x./r/n", u32_reg );


5.2. 檢查 SWDT 寄存器狀態

void CheckWDTRegisterValue( u32 EffectiveAddress )
{
u32 u32_reg;

u32_reg = XWdtPs_ReadReg(EffectiveAddress, XWDTPS_ZMR_OFFSET);
xil_printf("WDT Zero Mode Register: %x./r/n", u32_reg );
u32_reg = XWdtPs_ReadReg(EffectiveAddress, XWDTPS_CCR_OFFSET);
xil_printf("WDT Counter Control Register: %x./r/n", u32_reg );
u32_reg = XWdtPs_ReadReg(EffectiveAddress, XWDTPS_RESTART_OFFSET);
xil_printf("WDT Restart Register: %x./r/n", u32_reg );
u32_reg = XWdtPs_ReadReg(EffectiveAddress, XWDTPS_SR_OFFSET);
xil_printf("WDT Status Register: %x./r/n", u32_reg );
}

審核編輯 黃昊宇

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

    關注

    12

    文章

    175

    瀏覽量

    93028
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    電機原理及重要公式(干貨

    純分享帖,需要者可點擊附件免費獲取完整資料~~~*附件:電機原理及重要公式(干貨).doc 【免責聲明】本文系網絡轉載,版權歸原作者所有。本文所用視頻、圖片、文字如涉及作品版權問題,請第一時間告知,刪除內容!
    發表于 05-20 17:47

    為什么無法定制板上重新刷新PSoC6?

    無法定制板上重新刷新 PSoC6
    發表于 04-21 07:56

    PSoC 4-IEC 60730 B級和IEC 61508 SIL安全軟件庫

    電子發燒友網站提供《PSoC 4-IEC 60730 B級和IEC 61508 SIL安全軟件庫.pdf》資料免費下載
    發表于 04-19 17:05 ?0次下載

    英飛凌發布PSOC 4 Multi-Sense,通過電感感應和液體感應解決方案擴展電容感應技術

    推出新的專有電感感應技術,以及非侵入式和非接觸式液體感應解決方案擴展其領先的電容感應技術CAPSENSE。PSOC 4為開發人員開發新人機接口(HMI)和感應解決方案帶來了無限的可能性。從帶有金屬觸
    的頭像 發表于 03-27 12:44 ?270次閱讀
    英飛凌發布<b class='flag-5'>PSOC</b> 4 Multi-Sense,通過電感感應和液體感應解決方案擴展電容感應技術

    英飛凌發布全新高性能PSOC Control微控制器系列

    英飛凌推出基于Arm Cortex-M33的最新高性能微控制器(MCU)系列PSOC Control。ModusToolbox系統設計工具和軟件的支持,這款綜合全面的解決方案使開發人員能夠輕松創建高性能、高效率且安全的電機控
    的頭像 發表于 02-20 09:22 ?697次閱讀

    英飛凌PSOC Control C3正式問世

    近期,英飛凌公司宣布其最新的PSOC Control系列中的C3產品已經正式問世,并宣布量產。作為PSOC Control系列的首個量產產品,PSOC Control C3的推出標志著英飛凌
    的頭像 發表于 02-08 14:45 ?727次閱讀

    英飛凌PSoC 4000T榮獲芯片技術突破獎

    “OFweek 2024(第九屆)物聯網產業大會”近期深圳舉行,OFweek 2024物聯網行業年度評選也同期公布獲獎名單及頒獎。英飛凌受邀參與大會并發表演講。英飛凌科技的產品PSoC 4000T榮獲芯片技術突破獎。
    的頭像 發表于 01-16 15:55 ?509次閱讀

    基于PSOC6的智能環境監控系統

    本項目是基于PSOC6進行開發,它具有以下特性Psoc6-evaluationkit-062S2是RT-Thread聯合英飛凌推出的一款集成32位雙核CPU子系統(ARMCortex-M4
    的頭像 發表于 01-07 19:54 ?686次閱讀
    基于<b class='flag-5'>PSOC</b>6的智能環境監控系統

    英飛凌推出PSOC? Control MCU系列,用于工業和消費應用的電機控制與功率轉換

    英飛凌科技股份公司近日推出全新PSOC? Control微控制器(MCU)系列。該系列適用于新一代工業和消費電機控制以及功率轉換系統應用,包括家用電器、電動工具、可再生能源產品、工業驅動器,以及照明
    的頭像 發表于 09-25 10:32 ?738次閱讀

    如何在PSoC64中使用雙CPU?

    有沒有人能夠 PSoC64 中使用雙 CPU? 要在 PSoC64 上運行應用程序,必須使用正確的安全和配置文件。 同時使用 ARM0+ 和 ARM4 處理器的應用程序中,它們的位
    發表于 09-23 08:16

    使用PSoC5LP的過程中,遇到PSoC5LPEFT干擾時復位的問題怎么解決?

    我使用 PSoC5LP 的過程中(>8 年),我曾多次驗證測試中遇到 PSoC5LP EFT 干擾時復位的問題。 大多數情況
    發表于 07-05 07:26

    PSOC6閃存寫入會禁用中斷數毫秒 ,為什么?

    我們使用的是 PSOC63。 我們觀察到,向閃存寫入數據時,即使非阻塞模式,所有中斷也會被禁用幾毫秒! 調查閃存驅動程序的源代
    發表于 07-04 07:22

    英飛凌推出PSoC 4 HVPA-144K微控制器

    汽車工業不斷追求更高效、更智能的電氣系統管理的背景,英飛凌科技股份公司近日推出了一款具有革命性意義的PSoC? 4 HVPA-144K微控制器。這款微控制器通過將高精度模擬和高壓子系統巧妙地集成到單芯片上,為汽車電池管理行業
    的頭像 發表于 06-13 17:12 ?1332次閱讀

    PSoC 6是否有辦法main_cm4p.c中訪問內部時鐘?

    你好,我是 PSoC 6 的初學者。 預期輸入變量為周期數、頻率、脈沖重復頻率和振幅。 現在,我正在執行頻率和脈沖重復頻率。 我計劃使用內部時鐘來制作這個代碼。 因為 PSoC 6 有 100MHz
    發表于 06-04 13:08

    英飛凌發布全新PSOC Edge微控制器系列

    英飛凌科技股份公司近日發布了全新的PSOC? Edge微控制器(MCU)系列,特別針對機器學習(ML)應用進行了精心優化。新系列包括E81、E83和E84三個型號,這些產品性能、功能和內存選項上展現出高度的可擴展性和兼容性。
    的頭像 發表于 06-04 10:56 ?1242次閱讀