s3c2410的主频问题
我使用Skyeye1.3.1,编译linux2.6.20的内核,模拟s3c2410平台。启动时显示:S3C2410: core 62.400 MHz, memory 62.400 MHz, peripheral 62.400 MHz
怎么显示主频只有62.400 MHz啊,不是应该202.800MZ吗?
请问这是我没配置好吗,该怎么改?谢谢! make menuconfig --->
[] Default all settings
[*] customize kernel settings
[*] customize vendor/user settings
[] customize default vendor/user settings
然後在 kernel configuration 裡可修改 cpu clock frequency 原帖由 nicesteven 于 2010-10-19 10:20 发表 http://www.linuxfans.org/bbs/images/common/back.gif
make menuconfig --->
[] Default all settings
[*] customize kernel settings
[*] customize vendor/user settings
[] customize default vendor/user settings
然後在 kernel configuration 裡可修改 cpu clock...
我使用的是2.6.20的内核,s3c2410的默认配置,没看到主频的配置项啊 s3c2410的主频应尬和pll直有关系,在 skyeye中代码的位置如下
arch/arm/mach/skyeye_mach_s3c2410x.c:
155 io.clkpower.locktime = 0x00FFFFFF;
156 //io.clkpower.mpllcon = 0x00070022; /* That is a value mizi required */
157 io.clkpower.mpllcon = 0x0002c080; /* workaround for linux-2.6.10 by ksh */
158 io.clkpower.upllcon = 0x00028080;
应该修改以上的PLL值可以影响2410的主频。
关于PLL和内核主频的关系你可以参考 2410硬件文档的相关章节。
回复 4# ksh 的帖子
您好,我按照s3c2410的时钟管理文档,将io.clkpower.mpllcon改为0x0005c080,但是启动后什么都看不到。我按照文档中记录的各种时钟模式,主频稍高的模式就不支持。我现在将io.clkpower.mpllcon该为0x0002c060,主频变成了78.000MHz。更高的主频就没有试成功的了。请问这是怎么回事,为什么s3c2410文档中记录的主频稍高的时钟模式大多不支持?s3c2410时钟电源管理资料:http://blog.csdn.net/gamblervip/archive/2010/07/18/5744330.aspx
回复 5# Matrix_Designer 的帖子
这个也和内核的代码有关系。不是说你设置手册上的合理的硬件时钟值,内核就可以运行。内核会对时钟的值有些判断, 代码如下[ arch/arm/mach-s3c2410/time.c]:190 clk = clk_get(NULL, "timers");
191 if (IS_ERR(clk))
192 panic("failed to get clock for system timer");
193
194 clk_use(clk);
195 clk_enable(clk);
196
197 pclk = clk_get_rate(clk);
198
199 /* configure clock tick */
200
201 timer_usec_ticks = timer_mask_usec_ticks(6, pclk);
202
203 tcfg1 &= ~S3C2410_TCFG1_MUX4_MASK;
204 tcfg1 |= S3C2410_TCFG1_MUX4_DIV2;
205
206 tcfg0 &= ~S3C2410_TCFG_PRESCALER1_MASK;
207 tcfg0 |= ((6 - 1) / 2) << S3C2410_TCFG_PRESCALER1_SHIFT;
208
209 tcnt = (pclk / 6) / HZ;
210 }
211
212 /* timers reload after counting zero, so reduce the count by 1 */
213
214 tcnt--;
215
216 printk("timer tcon=%08lx, tcnt %04lx, tcfg %08lx,%08lx, usec %08lx\n",
217 tcon, tcnt, tcfg0, tcfg1, timer_usec_ticks);
218
219 /* check to see if timer is within 16bit range... */
220 if (tcnt > 0xffff) {
221 panic("setup_timer: HZ is too small, cannot configure timer!");
222 return;
223 }
回复 6# ksh 的帖子
谢谢!我将:/* check to see if timer is within 16bit range... */
if (tcnt > 0xffff) {
panic("setup_timer: HZ is too small, cannot configure timer!");
return;
}
中的条件改成:
if (tcnt > 0xffffffff) {
所有的时钟模式都支持了,呵呵
页:
[1]