S32V234 LFAST 寄存器出现访问错误

问题描述 :
Zipwire 通信需要使用 LFAST 寄存器 ,在对 LFAST 寄存器进行读写操作的时候出现访问错误



使用  LFAST  寄存器前需要对其进行 IOREMAP 操作 ,如果直接访问寄存器地址 ,会出现内存访问错误 ,出现上面的报错信息

 一.对 LFAST 寄存器进行 IOREMAP 操作  :

typedef volatile struct LFAST_tag    zipwire_LfastRegs_t;

zipwire_LfastRegs_t *lpLfastRegs= NULL;

lpLfastRegs = (zipwire_LfastRegs_t*)ioremap((uintptr_t)&LFAST,

                                sizeof(zipwire_LfastRegs_t));

二. 在 U-boot 里面 Enable  LFAST 寄存器时钟
在对 LFAST 寄存器进行了 IOREMAP 的操作后 ,仍然出现了寄存器访问的错误 ,报错信息请参考下面的 “Details” 项里面的内容 :



在 U_BOOT 里面Enable LFAST 的时钟后 ,对 u-boot/arch/arm/cpu/armv8/s32  clock.c 下的  LFAST 寄存器进行操作 :

static void enable_modules_clock( void )

{

    /* CRC0 */

    writeb( MC_ME_PCTLn_RUNPCm(CFG_RUN_PC), MC_ME_PCTLn(CRC0_PCTL));

    /* CRC1 */

    writeb( MC_ME_PCTLn_RUNPCm(CFG_RUN_PC), MC_ME_PCTLn(CRC1_PCTL));

    /* ENET */

    writeb( MC_ME_PCTLn_RUNPCm(CFG_RUN_PC), MC_ME_PCTLn(ENET_PCTL));

    /* HPSMI */

    writeb( MC_ME_PCTLn_RUNPCm(CFG_RUN_PC), MC_ME_PCTLn(HPSMI_PCTL));

     ……………………………………………………………………………………

     /* LFAST */

    writeb(MC_ME_PCTLn_RUNPCm(CFG_RUN_PC), MC_ME_PCTLn(LFAST_PCTL));

    经过以上修改 ,LFAST 访问错误的问题得以解决

★博文内容均由个人提供,与平台无关,如有违法或侵权,请与网站管理员联系。

★文明上网,请理性发言。内容一周内被举报5次,发文人进小黑屋喔~

评论