选择特殊符号
选择搜索类型
请输入搜索
嵌入式时钟管理器适用于可提供至少一个硬件定时器的处理器。其为用户提供了有益、友好的裁剪途径,以满足不同目标系统的实际需要。通过裁剪,该时钟管理器的目标代码最小可至100b以下,最大也不超过1kb。
该时钟管理器模块(文件)结构如图1所示。
(1)configclk.h定义了有关系统裁剪、配置的可调参数,通过对configclk.h中相关宏参数的配置,即可实现对该时钟管理器系统的配置和裁剪。 (2)clk_impl.*功能模块用来封装目标系统的一个硬件定时器,以屏蔽不同处理器间的硬件差异,起到hal(hardwareabstractlayer)作用。系统时钟在此构建。 (3)clk.*模块在clk_impl.*提供的hal基础上进一步封装,通过一个钩子(hook)函数,为系统提供时钟脉冲,且脉冲宽度可调(配置configclk.h中的相关宏参即可)。 (4)wdlib.*模块为用户应用提供多个软件定时器。
针对前述的嵌入式系统中的定时需求,利用定时器管理系统给出其实现代码。 假定"特定操作"为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分钟。 由于本时钟管理器只需一个硬件定时器的支持,所以其具有广泛的适用性。使用时,只需进行简单的配置,即可为裸露的目标系统加以简单的软件抽象层。其友好的用户接口有效降低了嵌入式系统的开发难度,提高了目标系统的可靠性。笔者已在实际项目中多次使用了该时钟管理器。基于该时钟管理器的目标系统运行稳定、可靠,从而充分说明该时钟管理器设计的实用性和科学性。
(1)在经历特定的时间段后,执行特定操作; (2)根据给定周期执行特定操作。 传统的作法是利用前后台方式:设定硬件定时器,使其在后台以特定周期对各相关操作的标志变量作计数操作;前台则不断对各标志变量巡回查询,若发现标志变量达到预定值,则执行特定操作。可见,上述需求需直接操作硬件定时器实现,其过程繁琐,且需要用户对相关硬件有深入了解。因此,设计、实现了一种使用方便的低端系统时钟管理器。 时钟管理器在实现中,将与硬件密切相关的部分组成一独立模块(文件)。针对不同的目标系统处理器,更换该模块即可。为使表述不过抽象,以8051系列单片机为目标系统处理器、c51为工具语言阐述该嵌入式时钟管理器的设计与实现。
硬件定时器的底层封装 硬件定时器底层封装在图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列表法。
一种嵌入式实时系统动态内存管理器的设计
针对嵌入式实时系统动态内存分配实时性与内存碎片率二者无法兼顾问题,基于二级位图及TLSF(Two-level Segregated Fit)算法,设计一种新的嵌入式实时系统动态内存管理器.将内存请求分为小内存请求和大内存请求;针对小内存请求,采用二级位图算法,通过以空间换时间的策略降低分配时间,减少外部内存碎片;针对大内存请求,在TLSF算法的基础上改变二级索引结构,通过"精确切割"及"合并阈值"策略提高内存利用率,降低内存碎片.实验表明,该管理器具有较快的响应速度及较低的内存碎片率.
电话网管理系统嵌入式协议适配器
现有的电话网交换机机型多、网管接口不统一,这给综合的电话网管理系统带来一定难度。为了屏蔽交换机在网管接口和信息格式上的差异,可以采用协议适配器作为网管理系统与被管网元之间的接口。文章介绍了一种嵌入式协议适配器的设计与实现,并结合综合电话网管系统中的实际应用对其性能进行了分析。
嵌入式相关专业术语:
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)、游戏机、智能玩具、交换机、路由器、数控设备或仪表、汽车电子、家电控制系统、医疗仪器、航天航空设备等都是典型的嵌入式系统。因此,通过嵌入式培训成为专业的嵌入式技术人才,其职业发展空间较大。