嵌入式系统学习(九):嵌入式中的时间和定时

姓名:张扬

学号:19020100073

学院:电子工程学院

转自:https://blog.csdn.net/weixin_42653531/article/details/90745042

【牵牛导读】:本文将介绍对嵌入式系统存储的理解

【牵牛鼻子】:嵌入式  嵌入式系统存储

【牵牛提问】:该如何理解嵌入式系统存储?

【牵牛正文】:

开发软件经常会用到时间,不同的场合用到的时间也不尽相同,有时候我们需要的是年月日时分秒这样很容易理解的格式,也有时候我们只是想知道系统开机了之后运行了多久,还有的时候我们不需要知道具体时间,只是想像设定一个闹钟一样,时间到了叫我干活就行。

在操作系统的内核里也一样,没了时间做基础,什么时间片、周期调度、延迟处理都没办法实现,这些关于时间的服务(也可以叫功能),总结下来是下面这两类:

    获取时间

    定时服务

那这两个功能是怎么实现的呢?世上没有免费的午餐,想用到什么功能,就得有相应的软硬件来支持,我们先来看看要想获取时间和定时在硬件上都需要什么,下面是一个硬件框图,基本在单片机或者嵌入式linux都适用。


这些框框都用来干嘛呢?RTC(Real Time Clock)就是实时时钟,主要用来提供时间基准,有独立的芯片也有些MCU是内置的,一般会有单独的电池供电,就像电脑主板上一样,即使关了机RTC的时间也是在继续走的。RTC提供的时间通常是UTC时间,年月日时分秒,很容易阅读,缺点是精度不高,如果想做到毫秒级别的延迟或者定时RTC就不合适了,更常见的用法是设备上电读取RTC获得初始时间,之后通过ms级的周期中断来计算当前的时间,这样可以获得比秒更高的时间精度,也就能提供系统时间了,如果只是想知道开机运行了多久,使用周期中断计数就可以获得。

那问题来了,谁来提供周期中断呢?大家可能也猜到了,旁边的定时器就是干的这件事情,关于定时器有几个很基本的概念,也很好理解

    定时精度,或者叫分辨率,是能够定时的最小单位,通常是系统时钟经过分频的一个值,这里提到的的系统时钟是晶振的脉冲倍频又分频的一个参考时钟,不是软件概念

    计数器,counter,开始定时之后conter就不断的加一,假如分辨率是1ms,counter值就代表时间过去了多少ms

    比较值,counter值会不断和这个值比较,当两个值相等时就产生中断

    模式,如果计数值和比较值相等的时候定时器停止,并且计数值和比较值复位,就叫oneshot,只干一次,下次想定时要再设置一次;如果计数值和比较值相等的时候定时器不停止,比较值重新装载,计数值清零,定时器间隔相同的周期会再次发生中断,除非我们主动停掉,就叫period模式。

这下我们知道,使用oneshot的模式可以设定定时器产生中断的时间,也就实现了定时功能。

有了RTC和定时器这两种硬件做基础,在软件上实现时间的获取和定时功能也就不难了,那我们在日常编程的时候提到的定时器、高精度定时器是这个概念吗?

在裸机(前后台)系统里,我们可以直接操作硬件获取时间和定时,只要资源足够,RTC和定时器只给某个功能用也没啥问题,实际上有不少产品就是这么开发出来的。简单系统这么干可以,但当软件功能复杂,定时器资源不那么充分的时候,就要考虑如何利用好既有的硬件了,如果再考虑到软件的可移植性,功能代码和具体硬件绑定就不是很好的选择。

我们可以选择自己做一层薄薄的封装,也可以选择让操作系统为我们提供时间和定时服务,这时应用编程使用到的时间和定时虽然硬件上还是RTC和定时器作为基础,但已经是系统封装之后提供的服务,具体硬件信息被屏蔽掉,实际上这个时候我们也不太关心硬件上具体是用的哪个定时器了。下面是一个Linux(X86)的例子可以很好的说明这一点。


Linux把获取时间的设备封装成clocksource,因此clocksource主要提供的接口就是read(),用来获取当前时间,而clock-event device就是用来提供定时功能的设备,包含了PERIODIC和ONESHOT等多种模式,主要提供的接口是set_next_event,用来设置下一次定时中断事件什么事件产生。

以这两种设备为基础,Linux内核里提供了最基本的jiffies(每个tick中断加1)和xtime(从RTC获得初值),还提供了timer和hrtimer两种定时器,又通过系统调用提供到用户态去使用,不过基本上我们不需要直接去进行系统调用,C库帮我们做了这件事情。

在实际嵌入式开发中,前后台大循环、RTOS、Linux,都是可能的方案,不管是选哪种方案,实现或者利用好获取时间和定时这两个功能都会让开发起来更容易。

————————————————

原文链接:https://blog.csdn.net/gnr_123/article/details/110153421

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,504评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,434评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,089评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,378评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,472评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,506评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,519评论 3 413
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,292评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,738评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,022评论 2 329
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,194评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,873评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,536评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,162评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,413评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,075评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,080评论 2 352

推荐阅读更多精彩内容