FLEXIO_CTRL[DBGE] 的含义是什么?DBGE 上的参考手册措辞有点短
"在调试模式下启用 FLEXIO 操作"
如果禁用它并调试代码会发生什么?
试图弄清楚在使用 FLEXIO 和调试 FLEXIO 驱动程序时,哪些调试操作是安全的。
我想,让调试器在接收模式下读取 SHIFTBUFn 或任何其他具有读取副作用的硬件寄存器都是不安全的,即使在调试器中不小心碰了一下也不行。
Re: What is the meaning of FLEXIO_CTRL[DBGE]你好,@Henrik-Wires
如果"Enable FLEXIO operation in debug mode" 被禁用,当调试器停止 CPU 时,FLEXIO 模块也会停止。冻结所有 FIexIO 活动,直到执行恢复。
下面的主题也讨论了这个问题:这是否意味着 flexio 无法在调试模式下工作?
BR、VaneB
Re: What is the meaning of FLEXIO_CTRL[DBGE]你好,@Henrik-Wires
正如 S32K3 参考手册中所述,当设置了相应的 SHIFTSTAT [SSF] 标志时,必须只读取 ShiftBufn 寄存器。
Re: What is the meaning of FLEXIO_CTRL[DBGE]这是否也意味着,如果禁用 DBGE,使用调试器访问 FLEXIO 寄存器也是安全的,或者使用调试器读取 SHIFTBUFn 会扰乱移位状态标志 SHIFTSTAT[SSF] ?
Re: What is the meaning of FLEXIO_CTRL[DBGE]能否以某种方式阻止 S32DS 尝试访问寄存器?只有短暂访问 SHIFTBUFn 的指针,调试器才会通过清除 SHIFTSTAT[SSF]来访问该值,从而扰乱 FLEXIO 状态。Re: What is the meaning of FLEXIO_CTRL[DBGE]你好,@Henrik-Wires
能否请您说明一下这将用于什么目的,或者您想实现什么样的分析?
Re: What is the meaning of FLEXIO_CTRL[DBGE]你好,@Henrik-Wires
集成开发环境本身不会阻止对寄存器的访问。这种保护可以通过 MPU 或 XRDC 来实现;不过,我认为这种方法与您想要实现的目标是一致的。
相反,你可以监测何时设置 SHIFTSTAT [SSF],然后验证相应的 ShiftBufn 寄存器是否包含预期值。
Re: What is the meaning of FLEXIO_CTRL[DBGE]我正在探索、编写和调试一个定制的低级 FLEXIO 驱动程序。
调试时出现了奇怪的结果,我怀疑是由于 S32DS 在通过驱动程序步进时获取 SHIFTBUFn 寄存器的值,干扰了 SHIFTSTAT[SSF] 状态,导致事件丢失。Re: What is the meaning of FLEXIO_CTRL[DBGE]该驱动程序显然会监测 SHIFTSTAT 并相应地访问 ShiftBufn。
我的问题是,使用 S32DS 跳过驱动程序代码可能会触发信号对 SHIFTSTAT 的调试读取,这似乎会干扰该寄存器中的状态。例如,当鼠标指向 SHIFTSTAT 指针时。
如果我小心避免用调试器接触任何此类指针,那么驱动程序就能正常工作。
我曾希望禁用 DBGE 可以让调试器访问 SHIFTSTAT,而不会干扰 **bleep**FSTAT 寄存器的状态,但从你的回复来看,情况并非如此。Re: What is the meaning of FLEXIO_CTRL[DBGE]你好,@Henrik-Wires
禁用 DBGE 位并不能防止调试器干扰 SHIFTSTAT 等寄存器,因为 DBGE 并不控制调试读取行为。相反,DBGE 可控制外设是否在内核停止运行时继续运行。