TI中文支持网
TI专业的中文技术问题搜集分享网站

关于AM335x cache的问题,请高手解答

图1

图2

图3

图4

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

 

如图,这是用CCS5.5跑的starterware里面的DEMO例程裸机程序。原程序运行正常。

图1是我修改后的程序,将下面的Timer4Config();移到上面来,移到CacheEnable(CACHE_ALL);的后面。

图2是Timer4Config原来的地方。

图3是Timer4Config里面的内容。

图4是原程序的MMU配置函数。

那么问题来了,当跑到图1箭头指向的这个位置的时候就跑飞了。准确的说是运行完前面的MMU和CACHE之后,在运行Timer4Config就出现了问题。如果将MMU和CACHE注释掉,程序可以正常运行。

请教这是何故?

pengda qiu:

求解答

Jian Zhou:

回复 pengda qiu:

应该是驱动层有些东西还没有初始化完成,在timer配置之前还要有相关的clock使能的

pengda qiu:

回复 Jian Zhou:

在我CACHE和MMU使能以后,TIMER1的时钟无法使能0x44E004C4的IDLEST一直返回0x03(Module is disabled and cannot be accessed)

重新上电:

1.将程序下载进去,GOTO MAIN后,在CCS的DEBUG里面直接将0x44E004C4=2后,IDLEST变成0

2.将TIMER4也=2以后,IDLEST变成0

3.运行程序,mmu和cache使能后,按下复位按键,重新将程序下载进去,GOTO MAIN后,TIMER1=2,使能后,IDLEST仍然是0x03

4.TIMER4=2后,IDLEST=0x00

问题,

1.为何使能MMU和CACHE后,TIMER1无法使能时钟。

2.为何按下复位按键后,mmu和cache仍然会影响着TIMER1,必须要重新上电以后TIMER1的时钟才能被使能。而TIMER4却在任何情况下都没有问题。

pengda qiu:

回复 Jian Zhou:

貌似找到问题了,可能是时钟源选择的问题,就是0x44e00528里面,默认是0x04,如果是0x04就不可以,如果是0x01就可以

请问,0x04和0x01都是32k,这两个的区别是什么呢?

Steven Liu1:

回复 pengda qiu:

TRM手册的8.1.6.13 Timer Clock Structure节对此有明确的描述:

The CLK_32KHZ clock is an accurate 32.768-kHz clock derived from the PER PLL and can also be selected for the WDT1. 简单来说更精确

The DMTIMER0 can only be clocked from the internal RC oscillator (CLK_RC32K). 不如上面的精确,但是在低功耗的时候由于32KHZ关了,必须用这个。

赞(0)
未经允许不得转载:TI中文支持网 » 关于AM335x cache的问题,请高手解答
分享到: 更多 (0)