社区
Linux_Kernel
帖子详情
timer frequency能否设为1MHZ??
duanbeibei
2007-08-29 10:46:47
内核配置选项中,时钟频率可选项为:100HZ,250HZ,1000HZ,但我想通过改源代码将其设为1MHZ,因为这样才能将时钟精确到微妙级,不知是否可行?
...全文
726
10
打赏
收藏
timer frequency能否设为1MHZ??
内核配置选项中,时钟频率可选项为:100HZ,250HZ,1000HZ,但我想通过改源代码将其设为1MHZ,因为这样才能将时钟精确到微妙级,不知是否可行?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
tb01412
2007-08-31
打赏
举报
回复
你把频率调那么高,CPU忙得过来吗?????
想把时钟精确到微妙级,另想办法,比如启用另一个timer,然后为此timer写个驱动,从而达到你的"精确"要求,当然,这种精确并不是严格意义上的精确,因为进程调度还是按第一个timer的精度,不过这样能保证你在自己被调度的时间内得到想要的精度,但不能保证你的进程不被抢占(你可以在驱动中关闭中断的方式来改进,虽然有点野蛮,不过只要你占用CPU的时间是非常短的情况下,这一招还是可行的,否则就会极大可能丢失其它设备的中断),这样做还是有一个缺点:当你的程序从驱动中返回应用层时,依然有可能被抢占,从而不能达到你所想的精度,所以你需要在驱动中去做完你想要在指定时间内所必须要响应的事情了,这就需要技巧了,因为有些在应用层中要做的事情到了驱动中会变得很难办)
hefuhua
2007-08-30
打赏
举报
回复
5./usr/src/linux$ vim include/net/inet_timewait_sock.h
hefuhua
2007-08-30
打赏
举报
回复
1./usr/src/linux$ make menuconfig
假如你选择的是CONFIG_HZ_1000=y CONFIG_HZ=1000
2.make clean
3./usr/src/linux$ vim include/linux/autoconf.h
找到#define CONFIG_HZ_1000 1这行注销或这删除如:/*#define CONFIG_HZ_1000 1*/
找到#define CONFIG_HZ 1000 修改为 #define CONFIG_HZ 1000000
4./usr/src/linux$ vim include/linux/jiffies.h
#elif HZ >= 768 && HZ < 1536
# define SHIFT_HZ 10
#else
改
#elif HZ >= 768 && HZ < 1536
# define SHIFT_HZ 10
#elif HZ >=1536
# define SHIFT_HZ 10
#else
5.
#if HZ <= 16 || HZ > 4096
# error Unsupported: HZ <= 16 or HZ > 4096
...
改为
#if HZ <= 16
# error Unsupported: HZ <= 16 or HZ > 4096
...
6.编译通过运行下看看效果
duanbeibei
2007-08-30
打赏
举报
回复
我是想改成1000000,不是1
hzcpig
2007-08-30
打赏
举报
回复
mark
记得在看linux定时器机制的时候说,可以调整linux内核时钟频率,但是频率高了,性能未必好,通常在100-1000Hz
hefuhua
2007-08-30
打赏
举报
回复
注意:内核版本linux-2.6.21.5
建议:该版本的内核HZ最少为12那么这个值也是经过骇客们测试来的,
觉得如果你强行一定要设置成1相反在时间和性能不一定会提高
再加:第5部前面
4.1 /usr/src/linux$ vim include/net/inet_timewait_sock.h
注销下面
/*#if HZ <= 16 || HZ > 4096
# error Unsupported: HZ <= 16 or HZ > 4096*/
...
改为
#if HZ > 4096
# error Unsupported: HZ <= 16 or HZ > 4096
#elif HZ <=16
# define INET_TWDR_RECYCLE_TICK (4 + 2 - INET_TWDR_RECYCLE_SLOTS_LOG)
...
hefuhua
2007-08-30
打赏
举报
回复
1./usr/src/linux$ make menuconfig
假如你选择的是CONFIG_HZ_1000=y CONFIG_HZ=1000
2./usr/src/linux$ vim include/linux/autoconf.h
找到#define CONFIG_HZ_1000 1这行注销或这删除如:/*#define CONFIG_HZ_1000 1*/
找到#define CONFIG_HZ 1000 修改为 #define CONFIG_HZ 1
3./usr/src/linux$ vim include/linux/jiffies.h
if HZ >= 12 && HZ < 24
# define SHIFT_HZ 4
..
这段修改为
#if HZ >= 1 && HZ < 12
# define SHIFT_HZ 3
#elif HZ >= 12 && HZ < 24
# define SHIFT_HZ 4
..
/*内核里最小设置为12所以你得加上上面1-11而定义SHIFT_HZ宏*/
4./usr/src/linux$ vim arch/i386/kernel/apic.c
注销LAPIC_CAL_LOOPS设置其直为1
/*#define LAPIC_CAL_LOOPS (HZ/10)*/
#define LAPIC_CAL_LOOPS 1
5.make
duanbeibei
2007-08-30
打赏
举报
回复
多谢老兵哥支持,我自己在研究研究
hzcpig
2007-08-30
打赏
举报
回复
精神可嘉~~~~
hefuhua
2007-08-30
打赏
举报
回复
HZ=1000000和HZ=1
编译成功,运行失败,并且把系统弄崩溃,整了半天,郁闷
[详细完整版]6程序设计.doc
六、程序设计 1、比较大小 The address of X is VAR on external RAM. The address of Y is FUNC on external RAM too. Please write the software ... The MCU oscillator
frequency
is 12
MHZ
. TCON "TF1 "TR1 "TF
Si4432 无线通讯芯片资料
Wake-up
timer
Auto-
frequency
calibration (AFC) Power-on-reset (POR) Antenna diversity and TR switch control Configurable packet handler Preamble detector TX and RX 64 byte FIFOs ...
msp430F1101
− Active Mode: 160 μA at 1
MHz
, 2.2 V − Standby Mode: 0.7 μA − Off Mode (RAM Retention): 0.1 μA Wake-Up From Standby Mode in Less Than 6 μs 16-Bit RISC Architecture, 125 ns Instruction Cycle ...
stm32f411ce.pdf
from Flash memory,
frequency
up to 100
MHz
, memory protection unit, 125 DMIPS/1.25 DMIPS/
MHz
(Dhrystone 2.1), and DSP instructions • Memories – Up to 512 Kbytes of Flash memory – 128 Kbytes of SRAM...
spwm波的生成
/* - Prescaler = (TIM3CLK / TIM3 counter clock) - 1 选择
timer
工作在36
MHZ
The TIM3 is running at 36
MHz
: TIM3
Frequency
= TIM3 counter clock/(ARR + 1) = 36
MHz
/ 3600 = 10 KHz TIM3 Channel1 ...
Linux_Kernel
4,436
社区成员
17,460
社区内容
发帖
与我相关
我的任务
Linux_Kernel
Linux/Unix社区 内核源代码研究区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章