我正在用ARMv8实时操作系统编写内核代码的一部分。
我试图在Linux中执行gettimeofday()这样的函数,它可以在秒和微秒内返回系统时间。
但我没能做到。ARMv8 support PL031,我认为它在freq上工作。以1Hz计,我无法在微秒内获得时间。
我不确定我是否正在读/做一些PL031错误的事情,在ARMv8中有什么方法可以在微秒内获得系统时间吗?
发布于 2022-01-28 04:11:11
ARMv8有“通用计时器”。
您可以在"ARM架构参考手册. ARMv8,ARM 8-A架构配置文件“中找到描述(搜索”通用计时器“)。
还有程序员的指南(链接)
问题是您需要用系统频率值来编写CNTFRQ_EL0寄存器。这个“频率”寄存器不被硬件填充,并且有异常级别的限制。
但是既然你做了你的实时操作系统,那就不应该是问题了。
通过阅读CNTPCT_EL0,你可以得到“系统滴答声”,在“频率”的帮助下,它可以转换成时间。
https://stackoverflow.com/questions/70844977
复制相似问题