硬件定时器的底层封装 硬件定时器底层封装在图1所示的clk_impl.*中实现。其中定义了一个初始化接口函数和一个定时器中断的isr(interrupt service routine)。令选用的硬件时钟为定时器0(可在configclk.h中配置)。 (1)初始化接口函数void_clkinit(void){ } 用户通过调用该接口函数,可周期性地执行相应的isr-clktick_isr,从而形成逻辑上的系统时钟。另外,本接口函数不为用户直接访问,而在上层模块clk.*中被调用。 (2)定时器0的isr-clktick_isr void clktick_isr (void) interrupt 1 using reg_grp_for_ sys_clk{ } 其中:reg_grp_for_sys_clk为定义于configclk.h中的可调参数,用来设定本isr的工作寄存器组。 2.2 时钟脉冲的提供 时钟脉冲在图1所示的clk.*中实现。 本文提供三个用户接口函数和一个用户可修改、但不可调用的钩子函数(clktick_isr_hook仅能在clktick_isr中被调用)。其用户接口声明如下: extern void constructclk(void); extern void destructclk(void); extern uint8 getclkrate(void); 其中:constructclk用以构建系统时钟,要使用本文所述的时钟管理器,需首先通过调用_clkinit(定义于clk_impl.*模块)实现对本函数的调用;destructclk用以解析业已构建的系统时钟;getclkrate用以获取系统当前的时钟节拍率(即定义于configclk.h中的宏sys_clk_rate的当前值)。 clktick_isr_hook由系统声明,用户可修改其定义,其最终仅为系统作周期性调用。用户可将自己需进行的周期性操作放于其中,后面叙述的软件定时器的"守护"例程(wddaemon)正是置于此处而被周期调用。由于置于其中的操作将在中断执行,所以这些操作应尽可能简短、省时。 2.3 软件定时器的提供 本功能在图1所示的wdlib.*中实现。 其为用户提供了可快速、便捷地实现用户定时需求的接口函数和一个被周期性调用的定时器守护例程wddaemon。 extern void constructwdog(void);//为使用定时器系统作初始化操作 extern void destructwdog(void)//置定时器系统为初始态 extern wdog_id wdcreate(void);//建立一个定时器,并返回其id extern status wdcancel(wdog_id wdid);//终止指定定时器并复位 extern status wddelete(wdog_id wdid);//删除指定定时器 extern status wdstart(wdog_id wdid,uint16 ticks,voidfuncptr wdr);//启动指定定时器,它会在指定时间后触发给定操作 其中:wdog_id为定时器id类型,即uint8。传送给wdstart的参数"uint16 ticks"指明定时时间长度,单位为系统时钟节拍,1节拍=1/sys_clk_rate(s)。因该参数的类型定为uint16,故定时器的最大定时长度为216×(1/sys_clk_rate),即216/sys_clk_rate(s)。 定时器的实现方案有静态数组法和delta列表法两种方法。这两种方法各有优缺点:前者逻辑简单,rom用量小,但效率较低(与定时器数目相关);后者逻辑复杂,rom用量大,但效率较高(与定时器数目无关)。应用中使用哪种方案,可在configclk.h中配置选择。 2.3.1 静态数组法 静态数组法的数据结构如下: struct wdnode { bool flag;//标明本结点是否已被使用 uint16 ticks;//用以定时的节拍数 voidfuncptr rout;//定时到时需执行的操作 } data wdlistmax_wdog_num_]; 其中:_max_wdog_num_指出了系统中允许的最大定时器数,其值决定于应用需求及系统资源量,可在configclk.h中设定。一个定时器结点占用5b的ram空间。具有给定数据结构的静态数组是方案实施的基础。 另外,该静态数组作为软件定时器的全局变量而存在,当系统中有多个定时器活动时,它们都将访问该全局静态数组。重要的是:它们的活动是异步的,所以,对该静态数组(临界资源)的访问需作临界保护。对于51系统,应采用开关中断的方式实现,且应确保不会影响关中断前的中断状态。 (1)用户接口定义 上述用户接口皆基于该静态数组进行,限于篇幅,这里给出关键接口wdstart的定义。 status wdstart(wdog_id wdid,uint16 ticks, voidfuncptr wdr) { if(wdid<_max_wdog_num_) { if(wdlistdid].flag) {//判断给定定时器id有效否 rtx_enter_critical();//进入临界区 wdlistdid].ticks=ticks;//操作静态数组中的特定定时结点 wdlistdid].rout=wdr; rtx_exit_critical();//退出临界区 return ok;//定时器启动成功 } } return error;//给定定时器id无效 } 调用该接口函数,即可启动已创建(wdcreate)的软件定时器。当经历ticks节拍后,给定函数wdr将被执行,以完成用户的定时需求。 (2)定时器守护例程 定时器守护例程wddaemon被置于前述的钩子函数clktick_isr_hook中,以使其周期性执行。由于本例程自身的特点,它应作为clktick_isr_hook的最后一个调用函数。本例程是软件定时器实现的核心,而其关键又是对系统栈的调整,为说明其实现流程,给出了如图2所示的wddaemon的栈(stack)结构。 由图2可知:wddaemon的返回地址没有入栈,因其为clktick_isr_hook中的最后一个函数调用,故其返回地址被优化掉。wddaemon将栈顶的8b数据上移2b,然后将定时器指定函数的地址插入腾出的栈空间(2b)中。如此,该地址将会被iret弹入ip中。由于iret指令的执行而使中断系统复位以重新响应外部中断,同时也使定时器指定函数在非中断态执行,从而不过分影响系统的响应速度。 2.3.2 delta列表法 delta列表法仅维护有效定时器的链表,且链表中的定时器结点按定时剩余时间由小到大排列,使距timeout点最近的定时器作为链表的首结点。链表中定时器结点的顺序由其独特的结点插入算法决定:如有5个定时器,其定时长度分别为10、14、21、32和39,当其组成delta列表时,定时值最小的结点为首结点,其定时存储值为10,而后依序排列,其定时存储值分别为4、7、11、7,即后一个定时器的定时存储值由自己的实际定时值与相邻的前一个定时器的实际定时值相减而得。可见,除首结点外的所有定时器的计数操作在其插入delta列表时就已完成。因而当定时器守护例程确定timeout的定时器时,只需对首结点进行减1或删除的操作,而不需遍历整个列表,从而使delta列表的操作与定时器数量无关。这使delta列表法在大量定时器管理中大显其能。 该法在系统中实现的数据结构为一静态双向链表: struct wdnode { bool flag; uint16 ticks; voidfuncptr rout; uint8 prior; uint8 next; } idata wdlistmax_wdog_num_]; uint8 headidx; //索引首结点 有了delta列表法的思路及其实现的数据结构,在静态数组法具体实现的基础上,便可得此法的具体实现。 应用中如果目标系统rom较小,且系统中启用的定时器少,则用静态数组法;若目标系统rom较大,且系统中用到的定时器较多,则用delta列表法。

嵌入式时钟管理器造价信息

市场价 信息价 询价
材料名称 规格/型号 市场价
(除税)
工程建议价
(除税)
行情 品牌 单位 税率 供应商 报价日期
智能照明后台管理系统 RX-V2.8 查看价格 查看价格

荣夏

13% 江苏荣夏安全科技有限公司
图方便智慧管理系统30M²以下 30M²以下 查看价格 查看价格

图方便

13% 图方便(苏州)环保科技有限公司
图方便智慧管理系统50-120M² 50-120M² 查看价格 查看价格

图方便

13% 图方便(苏州)环保科技有限公司
图方便智慧管理系统30-50M² 30-50M² 查看价格 查看价格

图方便

13% 图方便(苏州)环保科技有限公司
路灯智慧路灯管理系统 华为云平台/HY2.0系统 查看价格 查看价格

华业

13% 四川众兴华业市政照明工程有限公司
嵌入式管理服务器 SMT-6800 提供现场数据采集、数据处理、存储,电话、短信、邮件报警发送,远程WEB功能 查看价格 查看价格

13% 广东大榕树信息科技有限公司
管理器 Dcm11 查看价格 查看价格

艾科技术

13% 广东艾科技术股份有限公司
管理器 SM5,小区管理软件 查看价格 查看价格

13% 中山市奥敏电子有限公司西南代理
材料名称 规格/型号 除税
信息价
含税
信息价
行情 品牌 单位 税率 地区/时间
控制专用热敏打印机 查看价格 查看价格

湛江市2020年1季度信息价
控制专用热敏打印机 查看价格 查看价格

湛江市2019年2季度信息价
控制专用热敏打印机 查看价格 查看价格

湛江市2019年1季度信息价
控制专用热敏打印机 查看价格 查看价格

湛江市2018年3季度信息价
控制专用热敏打印机 查看价格 查看价格

湛江市2016年3季度信息价
控制专用热敏打印机 查看价格 查看价格

湛江市2015年4季度信息价
控制专用热敏打印机 查看价格 查看价格

湛江市2014年4季度信息价
控制专用热敏打印机 查看价格 查看价格

湛江市2014年3季度信息价
材料名称 规格/需求量 报价数 最新报价
(元)
供应商 报价地区 最新报价时间
时钟管理器 时钟管理器|1个 1 查看价格 深圳华南世荣电子有限公司 广东   2020-12-01
时钟管理器 时钟管理器|1套 1 查看价格 佛山市瑞创智能科技有限公司 全国   2018-08-31
时钟管理器 DDTC001,365天文时钟,可设置日出日落功能|1个 1 查看价格 佛山市瑞创智能科技有限公司 四川  成都市 2019-01-03
时钟管理器 详见图纸|5套 1 查看价格 北京明瑞之光科技有限公司 广东  佛山市 2021-01-21
智能时钟管理器(可编程) 时钟管理器需可直接与网络相连,用于区域网络控制或全局网络.时钟管理器可以带有年历,具有节假日模式,自动保存夏日制时间和闰年.时钟管理器能够在规定时间启动任务或启动时序事件,或按一周中,一月中或一年|7个 3 查看价格 深圳德龙奇胜科技有限公司 广东   2022-11-15
时钟管理器 /|1个 2 查看价格 邦奇智能科技(上海)股份有限公司 全国   2020-04-07
时钟管理器 -|1台 3 查看价格 浙江巨川电气有限公司    2016-01-05
管理器 1.名称:区域管理器 2.安装方式:TCP/IP接口,接网络水表、电表、燃气表|52个 1 查看价格 广东艾科技术股份有限公司 广东   2018-05-28

嵌入式时钟管理器结构

该时钟管理器模块(文件)结构如图1所示。

(1)configclk.h定义了有关系统裁剪、配置的可调参数,通过对configclk.h中相关宏参数的配置,即可实现对该时钟管理器系统的配置和裁剪。 (2)clk_impl.*功能模块用来封装目标系统的一个硬件定时器,以屏蔽不同处理器间的硬件差异,起到hal(hardwareabstractlayer)作用。系统时钟在此构建。 (3)clk.*模块在clk_impl.*提供的hal基础上进一步封装,通过一个钩子(hook)函数,为系统提供时钟脉冲,且脉冲宽度可调(配置configclk.h中的相关宏参即可)。 (4)wdlib.*模块为用户应用提供多个软件定时器。

(1)在经历特定的时间段后,执行特定操作; (2)根据给定周期执行特定操作。 传统的作法是利用前后台方式:设定硬件定时器,使其在后台以特定周期对各相关操作的标志变量作计数操作;前台则不断对各标志变量巡回查询,若发现标志变量达到预定值,则执行特定操作。可见,上述需求需直接操作硬件定时器实现,其过程繁琐,且需要用户对相关硬件有深入了解。因此,设计、实现了一种使用方便的低端系统时钟管理器。 时钟管理器在实现中,将与硬件密切相关的部分组成一独立模块(文件)。针对不同的目标系统处理器,更换该模块即可。为使表述不过抽象,以8051系列单片机为目标系统处理器、c51为工具语言阐述该嵌入式时钟管理器的设计与实现。

嵌入式时钟管理器实现常见问题

  • 怎么设置资源管理器

    一、常规键盘快捷键按键   目的Ctrl   +   C   复制。Ctrl   +  &...

  • 图纸管理器字体变大

    答:恢复默认风格。见下图:

  • 加密锁管理器

    需要进行安装相应的加密锁驱动程序,包括用户端的,就可以了,然后再分机输入主机的IP号码就可以了 你打印广联达文件的表格,安装广联达加密锁的主机必须开启,加密锁程序运行才可以的,如果还是不行你也可以联系...

针对前述的嵌入式系统中的定时需求,利用定时器管理系统给出其实现代码。 假定"特定操作"为void specfunc(void),"特定时间段"长度为10分钟。 (1)在经历特定的时间段后,执行特定操作。 #include ″clk.h″ #include ″wdlib.h″ void main(void ) { wdog_id wdid; constructclk();constructwdog(); wdid=wdcreate(); wdstart(wdid,10*one_minute,specfunc); while(1); } (2)以给定周期周期性地执行特定操作。 基于前者,只需在void specfunc(void)函数体的最后加入下述代码即可: wdstart(wdid,10*one_minute,specfunc); 注:该给定周期为10分钟。 由于本时钟管理器只需一个硬件定时器的支持,所以其具有广泛的适用性。使用时,只需进行简单的配置,即可为裸露的目标系统加以简单的软件抽象层。其友好的用户接口有效降低了嵌入式系统的开发难度,提高了目标系统的可靠性。笔者已在实际项目中多次使用了该时钟管理器。基于该时钟管理器的目标系统运行稳定、可靠,从而充分说明该时钟管理器设计的实用性和科学性。

嵌入式时钟管理器实现文献

一种嵌入式实时系统动态内存管理器的设计 一种嵌入式实时系统动态内存管理器的设计

格式:pdf

大小:433KB

页数: 未知

评分: 4.4

针对嵌入式实时系统动态内存分配实时性与内存碎片率二者无法兼顾问题,基于二级位图及TLSF(Two-level Segregated Fit)算法,设计一种新的嵌入式实时系统动态内存管理器.将内存请求分为小内存请求和大内存请求;针对小内存请求,采用二级位图算法,通过以空间换时间的策略降低分配时间,减少外部内存碎片;针对大内存请求,在TLSF算法的基础上改变二级索引结构,通过"精确切割"及"合并阈值"策略提高内存利用率,降低内存碎片.实验表明,该管理器具有较快的响应速度及较低的内存碎片率.

立即下载
可生存嵌入式OS内存管理设计与实现 可生存嵌入式OS内存管理设计与实现

格式:pdf

大小:433KB

页数: 3页

评分: 4.6

可生存嵌入式系统是一个较新的研究领域。根据可生存性对嵌入式OS内存管理的要求,在uCLinux2.6的基础上,提出并实现了一种基于数据备份技术、内存保护技术以及内存泄漏检测处理技术的嵌入式OS内存管理方案。大量测试表明,该方案能有效提高嵌入式系统的可生存性。

立即下载

嵌入式相关专业术语:

Embedded Control Channel:嵌入式控制通道

Embedded Document Architecture:嵌入式文件架构

Embedded Linking and Control:嵌入式链路及控制

Embedded Micro Internetworking Technology:嵌入式微型互联网技术

Embedded System Area Network:嵌入式系统域网

Embedded System Conference:嵌入式系统会议

Novell Embedded Systems Technology Novell:嵌入式系统技术

Rapid Object-Oriented Process for Embedded Systems:嵌入式快速面向对象过程

embedded Java:嵌入式Java

embedded Web server:嵌入式网络服务器

embedded controller:嵌入式控制器

embedded servo system:嵌入式伺服系统

embedded software:嵌入式软件

embedded test:嵌入式测试

controller, embedded:嵌入式控制器

Java embedded server Java:嵌入式Java服务器

嵌入式系统(Embedded System)--"嵌入到特定设备中的计算机系统。

一、定义:

嵌入式系统是一种"完全嵌入到受控器件内部,为特定应用而设计的专用计算机系统"。

嵌入式系统是相对桌面系统来讲的,凡是带有微处理器的专用软硬件系统都可以称为嵌入式系统。作为系统核心的微处理器又包括三类:微控制器(MCU)、数字信号处理器(DSP)、嵌入式微处理器(MPU)。嵌入式比较准确一个定义如下:系统以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。

二、说明:

受控器件:

1.消费电子:mp3、手机、电梯、汽车...

2.智能家电:数字电视、微波炉、数码相机、空调...

3.网络设备:交换机、路由器...

4.医疗仪器:..各种医疗器械...

5.航天设备:卫星、航天飞机、月球探测仪...

6.工业控制:控制主机,智能监控...

计算机系统:包括硬件和软件系统、且软、硬件均可裁剪,但必须有最小系统要求。

嵌入式就业发展空间相对较大。嵌入式系统是当前最热门、最具发展前途的IT应用领域之一。包括手机、电子字典、可视电话、数字相机(DC)、数字摄像机(DV)、U-Disk、机顶盒(Set Top Box)、高清电视(HDTV)、游戏机、智能玩具、交换机、路由器、数控设备或仪表、汽车电子、家电控制系统、医疗仪器、航天航空设备等都是典型的嵌入式系统。因此,通过嵌入式培训成为专业的嵌入式技术人才,其职业发展空间较大。

嵌入式时钟管理器相关推荐
  • 相关百科
  • 相关知识
  • 相关专栏