请教几个问题:
1、PWMSS模块的时钟TBCLK是对系统时钟SYSCLKOUT进行分频得到的,资料上有5M、50M和250M的系统时钟输出(CM_PER_L4HS_CLKSTCTRL),对于PWMSS模块的SYSCLKOUT可以配置选择吗?
2、我的PWMSS0和PWMSS2模块可以正常使用,但是PWMSS1无法正常使用,对PWMSS1的寄存器进行映射后,读寄存器操作直接导致出错,初步判断应该是该模块未被激活,然后,当我想操作时钟电源管理模块的寄存器时也出现相同的错误(ioremap 0x44E00000地址成功,但是readl时就出现错误提示了)。错误:Unhandled fault: external abort on non-linefetch (0x1028) at 0xfa30221a 。如果是模块寄存器未被允许进行操作,请问PWMSS1和CM_PER的寄存器操作开关分别在哪儿啊?或者是有其他的什么原因也可以导致这样的问题
Steven Liu1:
1. 希望这个可配的目的是频率不够吗?
2. 在8.1.12.1 CM_PER寄存器章节:偏移量为0xcc和0xd4的这两个地方
Elvin Life:
回复 Steven Liu1:
1、前期没太注意PWM是16位的寄存器,ecap已被作为其他用途,我想使用ehrpwm0a和ehrpwm0b同时输出pwm波形,使用的是up_down模式,然后发现这种使用的时候SYSCLKOUT是100M的,频率太高,模块最大分频后,最长周期才2秒多,我的需求最长可达到十多秒,所以需要更低的SYSCLKOUT频率,请问需要如何配置?
2、CM_PER寄存器我没办法进行读写操作,当映射成功后,使用readl函数读取寄存器,出现上面所说的错误类型,另我就是对pwmss1的寄存器出现读写错误,然后想在CM_PER中看一下PWMSS1是否激活,发现无法读取CM_PER寄存器的。
Elvin Life:
回复 Steven Liu1:
我是直接使用ioremap(0x44e00000,size)直接映射完,然后进行读操作出错;会不会是CM_PER寄存器在linux操作系统中是不是被禁止直接映射操作,需要使用系统提供一些函数进行操作?