QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 3084|回复: 6

s3c2410的主频问题

[复制链接]
发表于 2010-10-18 23:13:20 | 显示全部楼层 |阅读模式
我使用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吗?

请问这是我没配置好吗,该怎么改?谢谢!
发表于 2010-10-19 10:20:30 | 显示全部楼层
make menuconfig --->
[] Default all settings
  • customize kernel settings
  • customize vendor/user settings
    [] customize default vendor/user settings
    然後在 kernel configuration 裡可修改 cpu clock frequency
  • 回复

    使用道具 举报

     楼主| 发表于 2010-10-19 13:12:39 | 显示全部楼层
    原帖由 nicesteven 于 2010-10-19 10:20 发表
    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的默认配置,没看到主频的配置项啊
    回复

    使用道具 举报

    发表于 2010-10-20 15:10:31 | 显示全部楼层
    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硬件文档的相关章节。
    回复

    使用道具 举报

     楼主| 发表于 2010-10-20 16:26:41 | 显示全部楼层

    回复 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
    回复

    使用道具 举报

    发表于 2010-10-20 18:11:33 | 显示全部楼层

    回复 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         }
    回复

    使用道具 举报

     楼主| 发表于 2010-10-21 11:56:30 | 显示全部楼层

    回复 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) {
    所有的时钟模式都支持了,呵呵
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    GMT+8, 2024-11-22 12:04 , Processed in 0.044054 second(s), 15 queries .

    © 2021 Powered by Discuz! X3.5.

    快速回复 返回顶部 返回列表