在WIKI 上看到“Boot Images for OMAP-L138”有这样一段“Note that the ARM must be in supervisor mode in order to write to the PINMUX registers.”
我理解就是只有在supervisor mode下才可以对PINUX寄存器进行设置操作,查了一下L138的TRM手册,看到在226页上也对此做了说明,还提到了kick的保护机制,
在访问SYSCFG module的寄存器时需要遵守写KICK寄存器之后再访问的特殊时序。
对此我有几个疑问:
1、查网上的资料,omap-l138进入supervisor mode可以使用SWI中断的方式,但看了OMAP-L138的startware中的gpio例程,发现里面的代码并无进入supervisor mode的操作,只在system_config中的start_boot函数中一开始使用SysCfgRegistersUnlock()函数对KICK寄存器进行了操作,然后在GPIO例程里就直接对pinmux相关的寄存器进行操作了。不是应该先进入supervisor mode吗?
2、浏览了一下OMAP-L138_LCDK.gel文件里的代码,也没找到有进入supervisor mode的操作,而且像EMIFA_NAND_PINMUX()这样对PINMUX寄存器进行操作的函数,也没有对kick寄存器进行写。这是怎么回事呢?
Tony Tang:
默认是supervisor模式的。
kick寄存器操作在PG2.0的芯片上不需要做了。