为at91sam9260降频续
0赞
发表于 8/27/2010 10:46:24 AM
阅读(2841)
昨天为AT91sam9260降频,没有说为什么mck是PLLA的二分之一,因为bootstrap里
#define MCKR_SETTINGS (AT91C_PMC_CSS_PLLA_CLK | AT91C_PMC_PRES_CLK | AT91C_PMC_MDIV_2)
PRES = 0 MDIV =1
看linux-2.6.20源码arch/arm/mach-at91rm9200/clock.c
596 freq /= (1 << ((mckr >> 2) & 3)); /* prescale */
597 mck.rate_hz = freq / (1 + ((mckr >> 8) & 3)); /* mdiv */
这里freq 就是PLLA clock mckr>>2 就是PRES
596行的结果是freq不变 注意597行,这里应该是个bug,估计以后的版本应该改了,正确的写法是mck.rate_hz = freq / (1 << ((mckr >> 8) & 3)); /* mdiv */
当然如果MDIV是0或1是没有问题的,但是如果是2,按手册除数应该是4,源代码计算的除数成3了!!
