• 高分辨率定时器


    如果你有精确的计时要求,那么计时器分辨率很重要,这是实时应用的典型要求。 Linux 中的默认计时器是以可配置的频率运行的时钟,对于嵌入式系统,通常为 100 Hz,对于服务器和台式机,通常为 250 Hz。 两个计时器滴答之间的间隔是,称为jiffy,在前面给出的例子中,在嵌入式 SoC 上是 10 毫秒,在服务器上是 4 毫秒。

    Linux 从 2.6.18 版的实时内核项目中获得了更精确的计时器,现在只要有高分辨率的计时器源代码和设备驱动程序,它们就可以在所有平台上使用--这几乎总是如此。 您需要使用CONFIG_HIGH_RES_TIMERS=y配置内核。

    启用此功能后,所有内核和用户空间时钟都将精确到底层硬件的粒度。 很难找到实际的时钟粒度。 显而易见的答案是clock_getres(2)提供的值,但它总是要求 1 纳秒的分辨率。 稍后我将介绍的cyclictest工具有一个选项,可以分析时钟报告的时间以猜测分辨率:

    cyclictest -R
    Unable to change scheduling policy!
    Probably missing capabilities, either run as root or increase RLIMIT_RTPRIO limits.
    # cyclictest -R
    # /dev/cpu_dma_latency set to 0us
    WARN: reported clock resolution: 1 nsec
    WARN: measured clock resolution approximately: 708 nsec

    您还可以查看如下字符串的内核日志消息:

    # dmesg | grep clock
    OMAP clockevent source: timer2 at 24000000 Hz
    sched_clock: 32 bits at 24MHz, resolution 41ns, wraps every 178956969942ns
    OMAP clocksource: timer1 at 24000000 Hz
    Switched to clocksource timer1
    dmesg | grep clock
    [    0.000000] clocksource: arch_sys_counter: mask: 0xffffffffffffff max_cycles: 0x171024e7e0, max_idle_ns: 440795205315 ns
    [    0.000001] sched_clock: 56 bits at 100MHz, resolution 10ns, wraps every 4398046511100ns
    [    3.547681] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645041785100000 ns
    [    3.618101] clocksource: Switched to clocksource arch_sys_counter
    [   12.053175] rtc-efi rtc-efi: setting system clock to 2021-10-08 02:17:05 UTC (1633659425)
    [root@centos7 ~]# dmesg | grep clock
    [    0.000000] clocksource: arch_sys_counter: mask: 0xffffffffffffff max_cycles: 0x171024e7e0, max_idle_ns: 440795205315 ns
    [    0.000001] sched_clock: 56 bits at 100MHz, resolution 10ns, wraps every 4398046511100ns
    [    4.502670] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns
    [    4.575639] clocksource: Switched to clocksource arch_sys_counter
    [   13.261341] rtc-efi rtc-efi: setting system clock to 2022-01-06 04:02:14 UTC (1641441734)
    [root@centos7 ~]# 
  • 相关阅读:
    stm32型号与flash大小
    SVN适用教程
    sylixos初接触
    基于stm32实时操纵系统初接触
    freertos任务调度
    flash结构
    nand nor flash
    反汇编文件分析
    mm.与cache
    CISC(复杂指令集)和RISC(简单指令集),x86、ARM、MIPS架构
  • 原文地址:https://www.cnblogs.com/dream397/p/15992545.html
Copyright © 2020-2023  润新知