背景
由于前期开发板迟迟未到,故在S32K312收件验证时现场调试盲配的MCAL,将调试过程和知识做一个简单的记录
bug描述
调试过程中执行到初始化DMA,读DMA寄存器时就会触发硬件错误,程序跑飞到HardFault_Handler()
调试过程
单步调试过程中发现在外设寄存器监控窗口中,clock monitoring下面的寄存器不可读,考虑是时钟配置问题,查找MCAL模块配置。
在S32DS IDE中,MCAL MCU模块 -> McuModwuleConfiguration -> McuModeSettingConf -> McuPeripheral 中,相应的eDMA0的外设时钟没有enable,勾选后更新代码,问题解决。

Lesson&Learn
配置一个外设,首先要配置时钟树能够给出时钟信号到该外设模块,其次要使能该外设时钟,接下来外设的功能配置才是有效的
查询S32K3xx的用户手册,在45章介绍了Mode Entry Module(MC_ME),下图表明了外设初始化的流程,需要通过配置PRTN _COFB _CLKEN[REQ] 来使能外设时钟。对应的外设模块和寄存器控制位在 45.1.5 Peripheral clock gating 可以找到

通过修改S32DS外设时钟使能后,查看更新代码的变更,可以发现就是在MC_ME中(eDMA0)对应的外设时钟寄存器掩位中增加了对应的控制位
