0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

干货:PSoC SWDT在Standalone下的应用

电子设计 来源:电子设计 作者:电子设计 2020-10-30 10:13 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

01、Author

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

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

    文章

    182

    浏览量

    95263
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    PSoC Thermal Management Expansion Board Kit CY8CKIT - 036 深度解析

    PSoC Thermal Management Expansion Board Kit CY8CKIT - 036 深度解析 电子设备的设计中,热管理是一个至关重要的环节。它不仅关系到设备的性能
    的头像 发表于 05-18 09:15 281次阅读

    PSoC 4200L:可编程系统芯片的卓越之选

    PSoC 4200L:可编程系统芯片的卓越之选 电子设计领域,可编程系统芯片(PSoC)以其独特的优势受到广泛关注。今天,我们就来深入了解一赛普拉斯(现英飞凌旗下)的
    的头像 发表于 04-21 16:30 184次阅读

    PSoC 4100M:可编程系统芯片的卓越之选

    PSoC 4100M:可编程系统芯片的卓越之选 在当今电子产品不断追求高性能、低功耗与高度集成化的时代,可编程系统芯片(PSoC)成为了电子工程师们的得力工具。今天,我们就来深入探讨一赛普拉斯
    的头像 发表于 03-13 15:35 253次阅读

    深度剖析PSoC 4200M:可编程系统芯片的卓越之选

    深度剖析PSoC 4200M:可编程系统芯片的卓越之选 嵌入式系统设计领域,可编程系统芯片(PSoC)凭借其独特的灵活性和集成性,成为众多工程师的首选。今天,我们就来深入探讨一赛普
    的头像 发表于 02-26 16:10 330次阅读

    探索PSoC 4100M:可编程系统芯片的卓越之选

    探索PSoC 4100M:可编程系统芯片的卓越之选 在当今的电子设计领域,可编程系统芯片(PSoC)凭借其高度的集成性和灵活性,成为了众多工程师的首选。今天,我们就来深入了解一赛普拉斯
    的头像 发表于 02-11 16:35 453次阅读

    汽车级PSoC™ 4:PSoC™ 4100S 家族片上可编程系统深度解析

    汽车级PSoC™ 4:PSoC™ 4100S 家族片上可编程系统深度解析 汽车电子应用日益丰富的今天,对可编程嵌入式系统控制器的需求也越来越高。PSoC™ 4100S 家族作为一款符
    的头像 发表于 12-21 16:30 832次阅读

    PSoC™ 62S2 评估套件快速上手指南

    PSoC™ 62S2 评估套件快速上手指南 引言 电子开发领域,评估套件往往是工程师快速了解和验证芯片性能的重要工具。PSoC™ 62S2 评估套件 CY8CEVAL - 062S2 就是这样一款
    的头像 发表于 12-21 11:15 1176次阅读

    探索PSOC™ 4000T:高性能低功耗微控制器的卓越之选

    ® - M0+ CPU的MCU,凭借其丰富的特性和出色的性能,为各类低功耗应用提供了理想的解决方案。今天,我们就来深入探讨一PSOC™ 4000T的相关特性和应用。 文件下载: Infineon
    的头像 发表于 12-19 17:00 797次阅读

    汽车级PSoC™ 4:PSoC™ 4000S系列深度剖析

    汽车级PSoC™ 4:PSoC™ 4000S系列深度剖析 如今的电子设计领域,汽车级芯片的性能和可靠性至关重要。PSoC™ 4000S系列作为基于Arm® Cortex® - M0+
    的头像 发表于 12-19 14:40 574次阅读

    探索CY8CKIT - 062S2 - AI PSoC™ 6人工智能评估套件

    探索CY8CKIT - 062S2 - AI PSoC™ 6人工智能评估套件 电子工程师的日常工作中,一款优秀的评估套件往往能极大地提高开发效率,加速产品推向市场的进程。今天,我们就来深入探讨
    的头像 发表于 12-19 14:30 490次阅读

    探索PSOC™ 4100T Plus:低功耗高性能微控制器的卓越之选

    探索PSOC™ 4100T Plus:低功耗高性能微控制器的卓越之选 电子工程师的日常工作中,选择一款合适的微控制器(MCU)对于项目的成功至关重要。今天,我们将深入探讨英飞凌(Infineon
    的头像 发表于 12-18 16:10 566次阅读

    探索PSOC Edge E84 AI Kit:开启下一代机器学习边缘设备设计之旅

    探索PSOC Edge E84 AI Kit:开启下一代机器学习边缘设备设计之旅 电子工程师的世界里,不断追求创新和高效是永恒的主题。今天,我们将深入探讨一款专为快速原型开发而设计的强大
    的头像 发表于 12-18 14:45 1056次阅读

    PSoC™ Edge E84 评估套件:开启下一代机器学习边缘设备设计之旅

    PSoC™ Edge E84 评估套件:开启下一代机器学习边缘设备设计之旅 电子工程师不断追求创新与高效的今天,一款优秀的评估套件能够极大地加速产品的设计与开发进程。英飞凌的 PSoC™ Edge
    的头像 发表于 12-18 14:40 918次阅读

    国产混合信号处理的重要突破:浅析PSOC 7020的可配置运算架构

    本文简要介绍了国产PSOC 7020芯片内集成的关键运算电路模块,阐述了其作为可编程片上系统(PSoC)的核心模拟处理能力。文章重点分析了其运算放大器、比较器、模数/数模转换器等模块的可配置特性,并说明了其简化设计、提升系统集
    的头像 发表于 12-04 17:29 1214次阅读
    国产混合信号处理的重要突破:浅析<b class='flag-5'>PSOC</b> 7020的可配置运算架构

    Cypress汽车级PSOC™ 4100S Plus

    ,能够大多数情况“正常工作”,信噪比(SNR)高于 300:1,兼容高达 54 个可编程 GPIO 引脚。- 通信协议:具备 CAN 控制器,能够与汽车网络通讯,还具备 UART、SPI、I2C
    发表于 07-11 09:03