0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

系统里面有多少个Timer?

Linux阅码场 来源:Linux阅码场 作者:Baron 2022-06-29 09:47 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

说明:

本文讲述的是armv8-aarch64、armv9架构在设计模式上,本文带有一些个人的见解,如有不同的见解,可以评论区或微信群参与讨论。

思考:

1、一个大的系统里,有多少个Timer?这些Timer的作用分别是什么?这些Timer有什么区别?它们的精确度有什么不同吗?

2、Linux Kernel的Tick使用的是哪个Timer?watchdog是用的哪个Timer?

3、一个ARM Core里有又多少个Timer?不同软件系统中的Timer的使用方式有何不同吗?

4、应用程序中的 setitimer()这样的函数是否会调用到底层程序?

5、应用程序要读取当前系统时间戳的时候,是否需要调用到kernel space? 在glibc中是否就可以实现了?

6、什么是arch timer?什么是SOC Timer、apb timer、memory-mapped timer?

7、对于arch timer,又分为物理timer和虚拟timer?那么什么时候使用物理timer,什么时候使用虚拟timer?为什么?

8、EL1和S-EL1中使用的arch timer是如何隔离的?(这里所说的隔离是指寄存器如何隔离的,中断如何隔离的)9、EL3 Physical Timer对应的寄存器为什么是xxxEL1, 不应该是xxxEL3吗?

1、系统里面有多少个Timer?

7d4eeb96-f73f-11ec-ba43-dac502259ad0.png

如上图所示,在一个SOC中一定/可能存在:

core timer(也叫arch timer),每个core中都有这个Timer

SOC Timer(也叫apb timer、memory-mapped Timer),可能会有多个,可以存在以下这样的:

(1) 、一个专门给Non-secure 使用的timer

(2) 、一个专门给Secure 使用的timer

(3) 、一个专门用于特定用途的timer

(4) 、绑定core的Timer,例如8个timer,固定某个timer给某个core使用

2、每一个core里面又有多少个Timer

2.1、四个物理Timer

7d6acfd2-f73f-11ec-ba43-dac502259ad0.png

EL1 Physical Timer不区分secure和non-secure,但在ATF的switch cpucontext的时候,会保存和恢复相关寄存器,所以从软件视角来看是有两套寄存器,也就是有non-secure EL1PhysicalTimer和secure EL1PhysicalTimer,这也是最最理想的设计方案。然而非常非常非常非常的遗憾的是,寄存器通过软件switch cpucontext可以变成2套,但中断呢?中断是无法同时给non-secure和secure同时使用的,也无法做到中断在Security State之间的隔离。既然这样,说明这样的硬件是一个"非常严重"的问题,那么我们看下软件是怎么使用的呢?

(1)Linux Kernel正常使用,在读取counter值、counter频率的同时,也会设置CTL、CVAL、TVAL等相关寄存器,也会触发和处理30中断(EL1 Physical Timer的默认中断号是30);

(2)optee中,仅仅是读取counter值、counter频率的同时,就可以计算时间戳了。optee不会读取CTL、CVAL、TVAL等相关寄存器,当然也不会触发和处理30中断了。

以上便是软件基于“硬件缺陷”而进行的设计,自然也不会出现什么问题。然后你说ARM Timer有缺陷就有缺陷了?你真的懂它们的设计吗?事实上ARM的设计中,也考虑了上面描述的问题。你仔细看看它的EL3PhysicalTimer,他的寄存器的名字竟然是xxx_EL1(而不是xxx_EL3),也就是说它本身就是想给secure security用的(EL3也属于secure security)。另外我也参考了具体的arm core trm手册,发现EL3PhysicalTimer所对应的中断号(29号中断)的signal configuration描述为"Secure EL1 Pyhsical Timer"。我们再查一下BL32(Secure EL1)的参考程序trusted-firmware-a/bl32/tsp/tsp_timer.c, 它操作的也正是EL3PhysicalTimer。

总结:

(1)、EL1PhysicalTimer不区分secure和non-secure,在secure和non-secure之间也无法做到隔离。一般情况下它是给NS-EL1使用的。当然S-EL1如果是仅仅读取counter和频率获取当前时间戳,也是可以用的,但这不应该是建议的。因为这样造车non-secure也可以窃取到secure侧的时间戳。

(2)、EL3PhysicalTimer的本意就是想给secure用的,包括EL3和S-EL1

EL2 Physical Timer给non-secure EL2使用的

S-EL2 Physical Timer给secure EL2使用的

EL3 Physical Timer给Secure使用的,包括EL3和S-EL1

2.2、三个虚拟Timer

7d7f9d0e-f73f-11ec-ba43-dac502259ad0.png

EL1VirtualTimer主要是给EL1 OS(guest os)使用的,那么对于一个操作系统,它到底是使用 EL1PhysicalTimer还是使用 EL1VirtualTimer ? 由宏控决定,在编译的时候就决定了。例如你这个OS没有跑在VM中,那么就使用 EL1PhysicalTimer,如果你这个OS是要跑在VM中的,那么就使用 EL1VirtualTimer

7d92ed50-f73f-11ec-ba43-dac502259ad0.png

EL2PhysicalTimer是很好理解的,就是给EL2管理程序使用的嘛,但是 EL2VirtualTimer是给谁用的呢? 这里就需要一点虚拟化的概念了, EL2VirtualTimer是给Host App使用的。

审核编辑 :李倩

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 寄存器
    +关注

    关注

    31

    文章

    5590

    浏览量

    129092
  • Timer
    +关注

    关注

    1

    文章

    64

    浏览量

    13472

原文标题:图解SOC中的Timer(一):系统里有哪些Timer?

文章出处:【微信号:LinuxDev,微信公众号:Linux阅码场】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    请问WWDT和IWDT在保护系统面有哪些不同?

    WWDT和IWDT在保护系统面有哪些不同?
    发表于 12-10 06:43

    弱电智能化中究竟有多少个子系统

    在当今科技日新月异的时代,弱电智能化系统已成为现代建筑不可或缺的一部分。它不仅提升了建筑的功能性和实用性,还极大地提高了居住和工作的舒适性与安全性。弱电智能化系统是一复杂的集成系统
    的头像 发表于 11-24 09:57 221次阅读
    弱电智能化中究竟有<b class='flag-5'>多少个子系统</b>?

    当I/O上电初始配置为准高电平时,需要多少个下拉电阻来保持I/O低电平?

    当I/O上电初始配置为准高电平时,需要多少个下拉电阻来保持I/O低电平?
    发表于 08-26 07:40

    cybt343026-01 scan的话,最多能scan到多少个

    我想问一下cybt343026-01的模块,scan的话,最多能scan到多少个
    发表于 07-07 08:14

    CYW20719 最多有多少个外部中断?

    CYW20719 最多有多少个外部中断?
    发表于 07-01 07:16

    CYW20820 GATT服务器可以支持多少个来自GATT客户端的同时连接吗?

    有人能告诉我 CYW20820 GATT 服务器可以支持多少个来自 GATT 客户端的同时连接吗?
    发表于 06-30 07:47

    TIMER定时器

    TIMER0和TIMER7定时器载波相位有偏差,如何解决
    发表于 06-06 14:41

    求助,做一波形图显示控件,要求调用excel表里面存的时间作为波形图的x值。

    我在做毕设的时候,要读取excel表格里面的数值,然后做到最后一步就是调用excel表里面的时间,把那个时间作为X轴的值。 现在就是能够索引并读取出来了,但是每次索引后,波形图就不显示上一
    发表于 05-16 22:16

    定时模块app_timer用法及常见问题—nRF5 SDK模块系列二

    app_timer是大家经常用到的一库,app_timer的功能就是定时,也就是说,你在某一时刻启动一app timer并设定超时时间,
    的头像 发表于 05-12 16:13 577次阅读
    定时模块app_<b class='flag-5'>timer</b>用法及常见问题—nRF5 SDK模块系列二

    MIMX9352CVVXM处理器上最多可以同时使用多少个LPSPI实例?

    1. [i]MIMX9352CVVXM 处理器上最多可以同时使用多少个 LPSPI 实例? 2. [i]我们尝试分配所有可用的 LPSPI 实例(总共 8 ),但 LPSPI4 和 LPSPI5
    发表于 03-20 06:49

    ADS1192 ECG-FE source code里面有低通滤波器,怎么改参数使其变为其他的截止频率?

    ADS1192 ECG-FE source code里面有低通滤波器,我想问一下,怎么改参数使其变为其他的截止频率
    发表于 02-08 06:54

    DAC3164内部的FIFO有多大,需要多少个dataclk后需reset?

    你好,在看DAC3164 的datasheet 时,遇到问题。SYNC P/N 用来resetDAC内部的FIFO。我想问的是,该DAC内部的FIFO有多大,需要多少个dataclk后需reset? 谢谢~
    发表于 01-22 08:22

    有内部模式让ADS8363里面有AD,能一AD工作在全差分,一工作在伪差分吗?

    PDE位只能控制工作2 x 2 fully-differential和4 x 2 pseudo-differential。 有内部模式让ADS8363里面有AD,能一AD工作在全差分,一
    发表于 01-02 07:57

    ADS1299套件单次采样最多可以采集多少个点?

    想知道ADS1299套件单次采样最多可以采集多少个
    发表于 12-26 08:28

    TINA-TI软件里面的非线性变压器选项里面的参数怎么设置?

    设置里面的饱和磁化的单位怎么 是K啊,应该是T特斯拉或者是高斯啊 3.如果我输入截面积,输入磁路长度,输入气息,我怎么知道我的电感量是多少咧?软件里面有测试电感量的没?
    发表于 12-16 06:20