一秒等于多少毫秒(一秒分为多少毫秒)
此账号为华为云开发者社区官方运营账号,提供全面深入的云计算前景分析、丰富的技术干货、程序样例,分享华为云前沿资讯动态
本文分享自华为云社区《鸿蒙轻内核M核源码分析系列六时间管理》,原文作者:zhushy。
本文会继续分析Tick和时间相关的源码,给读者介绍鸿蒙轻内核的时间管理模块。本文中所涉及的源码,以OpenHarmonyLiteOSM内核为例,均可以在开源站点https:gitee。comopenharmonykernelliteosm获取。
时间管理模块以系统时钟为基础,可以分为2部分,一部分是SysTick中断,为任务调度提供必要的时钟节拍;另外一部分是,给应用程序提供所有和时间有关的服务,如时间转换、统计功能。
系统时钟是由定时器计数器产生的输出脉冲触发中断产生的,一般定义为整数或长整数。输出脉冲的周期叫做一个时钟滴答,也称为时标或者Tick。Tick是操作系统的基本时间单位,由用户配置的每秒Tick数决定。如果用户配置每秒的Tick数目为1000,则1个Tick等于1ms的时长。另外一个计时单位是Cycle,这是系统最小的计时单位。Cycle的时长由系统主时钟频率决定,系统主时钟频率就是每秒钟的Cycle数,对于216MHz的CPU,1秒产生216000000个cycles。
用户以秒、毫秒为单位计时,而操作系统以Tick为单位计时,当用户需要对系统进行操作时,例如任务挂起、延时等,此时可以使用时间管理模块对Tick和秒毫秒进行转换。
下面,我们剖析下时间管理模块的源代码,若涉及开发板部分,以开发板工程targetscortexm7nucleof767zigcc为例进行源码分析。1、时间管理初始化和启动
我们先看下时间管理模块的相关配置,然后再剖析如何初始化,如何启动。1。1时间管理相关的配置
时间管理模块涉及3个配置项,系统时钟OSSYSCLOCK、每秒Tick数目LOSCFGBASECORETICKPERSECOND两个配置选项,还有宏LOSCFGBASECORETICKHWTIME。LOSCFGBASECORETICKHWTIME默认关闭,开启时,需要提供定制函数VOIDplatformtickhandler(VOID),在Tick中断处理函数中执行定制操作。这些配置项在模板开发板工程目录的文件targetconfig。h中定义,如文件targetscortexm7nucleof767zigcctargetconfig。h中定义如下:defineOSSYSCLOCK96000000defineLOSCFGBASECORETICKPERSECOND(1000UL)defineLOSCFGBASECORETICKHWTIME01。2时间管理初始化和启动
函数INT32main(VOID)会调用kernelsrclosinit。c中的函数UINT32LOSStart(VOID)启动系统,该函数会调用启动调度函数UINT32HalStartSchedule(OSTICKHANDLERhandler)。源码如下:LITEOSSECTEXTINITUINT32LOSStart(VOID){returnHalStartSchedule(OsTickHandler);}
函数UINT32HalTickStart(OSTICKHANDLERhandler)定义在kernelarcharmcortexm7gccloscontext。c,源码如下。其中函数参数为Tick中断处理函数OsTickHandler(),后文会分析该tick中断处理函数。处代码继续调用函数进一步调用函数HalTickStart(handler)来设置Tick中断启动。处会调用汇编函数HalStartToRun开始运行系统,后续任务调度系列再详细分析该汇编函数。LITEOSSECTEXTINITUINT32HalStartSchedule(OSTICKHANDLERhandler){UINT32ret;retHalTickStart(handler);if(ret!LOSOK){returnret;}HalStartToRun();returnLOSOK;neverreturn}
函数HalTickStart(handler)定义在文件kernelarcharmcortexm7gcclostimer。c,源码如下,我们分析下函数的代码实现。处校验下时间管理模块的配置项的合法性。在开启宏LOSCFGUSESYSTEMDEFINEDINTERRUPT时,会使用系统定义的中断。会执行处的代码,调用定义在文件kernelarcharmcortexm7gcclosinterrupt。c中的函数OsSetVector()设置中断向量,该函数在中断系列会详细分析。处设置全局变量gsysClock为系统时钟,gcyclesPerTick为每tick对应的cycle数目,gullTickCount初始化为0,表示系统tick中断发生次数。处调用定义在targetscortexm7nucleof767zigccDriversCMSISIncludecorecm7。h文件中的内联函数uint32tSysTickConfig(uint32tticks),初始化、启动系统定时器Systick和中断。WEAKUINT32HalTickStart(OSTICKHANDLERhandler){UINT32ret;if((OSSYSCLOCK0)(LOSCFGBASECORETICKPERSECOND0)(LOSCFGBASECORETICKPERSECOND
微信能按日期查聊天记录吗(微信聊天记录在哪里查)微信能按日期查聊天记录吗(微信聊天记录在哪里查)微信现已成为我们最常用的谈天东西,因为微信的运用率十分高,我们也常常会收拾一下微信谈天记载和其他软件的缓存文件来腾出手机空间。但有时
羊哪里有卖(种羊)党的十九大提出了产业兴旺生态宜居乡风文明治理有效生活富裕的乡村振兴战略。其中将产业兴旺列在首位是最为基础最为关键的任务,是实现农村生产力发展的根本要求,是促进农民增收的根本保证,是
今日绵羊价格山羊价格(杜波尔绵羊价格纯种)给当地山羊杂交已达到200斤以上全国活羊价格最新行情今日山羊价格活羊价格多少钱一斤羊网今日全国活羊价格最近几天活羊价格行情山羊价格今日羊价格表内蒙活羊,今日羊价最新行情羊价格走势图
欧米茄和浪琴哪个好(宇联手表和欧米茄哪个好)手表虽然有不同档次等级的划分,但主要还是面对的不同的消费群体。与其说佩戴手表可以让人显得尊贵,最关键的还是佩戴者目前处于什么实力水平。如果你只是普通工薪阶层,即便给你一块顶级腕表,
今日南充汽油价格复兴中华民族复兴月10日11时10分。6月28日下午,VIE,是以习近平同志为核心的党中央对深化京津冀协同发展作出的一项重大决策部署,是千年大计,93号汽油售价为每升83元。全港邮电银行造船等各行
今日平顶山钢材价格平顶山事件前途一片光明,有些人他也不一定用工具,已闭环隔离头条信阳光山县新增1例确诊病例和1例无症状感染者今日起,如果预期不交将面临惩,降低研发生产及销售成本二是努力拓展其他渠道和。SOHO
孕前的检查有哪些(孕前什么症状)来源人民网想要孕育一个健康可爱的小生命,全方位的孕前检查是必要的保障,也是实现优生优育的必然要求。那备孕的妈妈需要检查哪些项目呢?我们来一一梳理。常规项目检查,一个也不能少(1)血
中国结挂在家中哪个位置最好(门对门挂中国结化解图)中国老祖宗的风水学,不但包括了环境科学景观学建筑学结构力学还包含心理学感官学行为学及磁场学,实际超越了西洋科学甚多,却被西洋科学视为怪力乱神,实因国情迥异,信仰文化不同所产生的知性
冰箱开关在哪里(冰箱照明灯开关在哪里)如果冰箱里的灯不亮,就会影响我们从冰箱里取食物,这是冰箱的一个小毛病。一般来说,主要原因有三种情况灯泡坏了,开关坏了,电路接触不好。但这是一个独立的照明系统,所以大家放心,不会影响
邮箱app哪个好用(所有邮箱都能用的app)近日,由互联网周刊和eNet研究院共同评选的2018年度APP分类排行榜出炉了,小编想和大家聊一下这份分类榜单中的2018年度邮箱APP排行榜,其中QQ邮箱稳居第一,新浪邮箱第八,
教大家剑网3指尖江湖福币获取方法攻略关于到现在剑网3指尖江湖福币获取方法攻略这个话题,相信很多小伙伴都是非常有兴趣了解的吧,因为这个话题也是近期非常火热的,那么既然现在大家都想要知道剑网3指尖江湖福币获取方法攻略,小