QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1695|回复: 3

模拟s3c4510b时 定时器问题

[复制链接]
发表于 2007-11-1 23:29:48 | 显示全部楼层 |阅读模式
请问哪位大侠帮忙解答一下? 问题如下(skyeye V1.2RC:

当设置定时器0的TDATA0,时, 写入50000000(好像大于4096就行), 读出只有4095. 同样的代码到真实的机器上测试没有问题。skyeye.conf配置如下:
cpu: arm7tdmi
mach: s3c4510b
mem_bank: map=M, type=RW, addr=0x00000000, size=0x03ff0000
mem_bank: map=I, type=RW, addr=0x03ff0000, size=0x00010000

uart: mod=stdio
# uart 1
uart: mod=pipe, desc=/dev/ttyS1

如果把mem_bank: map=M, type=RW, addr=0x00000000, size=0x03ff0000, 中的0x03ff0000,改成0x3ff7000(TDATA0偏移量:0x6004), 是, 写入和读出的是一样的。但改大(0x3ff7000)后,定时器又启不动. 怪.

附代码片段:
        LDR        R0, =25000000        /* 0.5 s */
        LDR        R1, =TDATA0        /* TDATA0 = 0x3FF6004 */
        STR        R0, [R1]
发表于 2007-11-2 12:40:45 | 显示全部楼层
Yes, you can read the source code in arch/arm/mach/skyeye_mach_s3c4510b.c of SkyEye
like the following line:

434                 /*we manually set tdata0 register,  uclinux's data is so big */
435                 io.tdata0 = 0xfff;
436                 break;

I guess SkyEye do not like the user set TDATA to a big value. That will cause interrupt be trigger in a long time since simulator is very lower than real hardware.  If you like to get more real environment, you can delete the code in 435 line. But for run uClinux on SkyEye , such modification will run very slow....
回复

使用道具 举报

 楼主| 发表于 2007-11-2 14:59:30 | 显示全部楼层
原帖由 ksh 于 2007-11-2 12:40 发表
Yes, you can read the source code in arch/arm/mach/skyeye_mach_s3c4510b.c of SkyEye
like the following line:

434                 /*we manually set tdata0 register,  uclinux's data is so big * ...


我试一下. 谢谢!
回复

使用道具 举报

 楼主| 发表于 2007-11-4 21:04:51 | 显示全部楼层

存在问题

由于定时器最大的定时周期太短(80us), 只要ISR(timer中断服务程序)多花点时间(>80us),可能导致永远执行ISR, 主程序无法执行. 汗
但是为什么skyeye-testsuit中的uclinux等程序正常?
有什么技巧?
回复

使用道具 举报

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

本版积分规则

GMT+8, 2024-11-23 01:42 , Processed in 0.039116 second(s), 16 queries .

© 2021 Powered by Discuz! X3.5.

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