QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1790|回复: 2

skyeye 时钟频率

[复制链接]
发表于 2013-5-20 21:40:18 | 显示全部楼层 |阅读模式
内核版本,2.6.14 和 2.6.35.4都遇到相同的问题,在start_kernel函数里面 执行到 local_irq_enable(),也就是打开中断后,就回不来了,似乎一直在执行中断。个人怀疑是 skyeye模拟的 arm 时钟频率太慢,导致指令执行过慢,甚至 连中断 任务都无法完成。
我的配置文件如下

cpu:  arm920t
mach: s3c2410x

#physical memory  
#mem_bank: map=M, type=RW, addr=0x000000, size=0x0008000
mem_bank: map=M, type=RW, addr=0x00000000, size=0x00080000, file=./u-boot.bin, boot=yes
#mem_bank: map=M, type=RW, addr=0x00000000, size=0x00080000
mem_bank: map=M, type=RW, addr=0x30000000, size=0x04000000
mem_bank: map=M, type=RW, addr=0xc0000000, size=0x04000000
#mem_bank: map=M, type=RW, addr=0xc1000000, size=0x00600000, file=./initrd.img
#mem_bank: map=M, type=RW, addr=0xc1600000, size=0x00a00000
#all peripherals I/O mapping area
#mem_bank: map=I, type=RW, addr=0xfefa0000, size=0x00060000
mem_bank: map=I, type=RW, addr=0x48000000, size=0x20000000
mem_bank: map=I, type=RW, addr=0x19000300, size=0x00000020
net: type=cs8900a, base=0x19000300, size=0x20,int=9, mac=0:4:3:2:1:f, ethmod=tuntap, hostip=10.0.0.1
uart: mod=term
nandflash: type=s3c2410x,name=K9F1208U0B,dump=./nand.dump

[ 本帖最后由 playerthinker 于 2013-5-20 21:50 编辑 ]
发表于 2013-5-21 09:59:20 | 显示全部楼层
目前执行2410 的时钟只实现了timer4,linux内核里面应该用的也是timer4。代码如下:
static void s3c2410x_timer_callback(generic_arch_t* arch_instance)
{
        RW_WRLOCK(lock);
#if 0
                io.timer.tcnt[4] = io.timer.tcntb[4];
                /*timer 4 hasn't tcmp */
                //io.timer.tcmp[4] = io.timer.tcmpb[4];
                io.timer.tcnto[4] = io.timer.tcntb[4];
                io.srcpnd |= INT_TIMER4;
                        s3c2410x_update_int (arch_instance);
#endif
                io.timer.tcnt[4] -= 100;
                if (io.timer.tcnt[4] < 0) {
                        io.timer.tcnt[4] = io.timer.tcntb[4];
                        /*timer 4 hasn't tcmp */
                        //io.timer.tcmp[4] = io.timer.tcmpb[4];
                        io.timer.tcnto[4] = io.timer.tcntb[4];
                        io.srcpnd |= INT_TIMER4;
                        s3c2410x_update_int (arch_instance);
                }
        RW_UNLOCK(lock);
}

每次tcnt[4]自减100,来判断是否达到需要触发中断的条件。

-- ksh
回复

使用道具 举报

 楼主| 发表于 2013-5-21 15:52:29 | 显示全部楼层
不知能否 帮助定位问题
回复

使用道具 举报

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

本版积分规则

GMT+8, 2024-11-21 23:56 , Processed in 0.134624 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

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