嵌入式培训

嵌入式Linux就业班马上开课了 详情点击这儿

 
上海报名热线:021-51875830
北京报名热线:010-51292078
深圳报名热线:0755-61280252
南京报名热线:4008699035
 
武汉报名热线:027-50767718
成都报名热线:4008699035 61787181
研发与生产 脱产就业培训基地
3G通信 企业培训 
  首 页   课程介绍   培训报名  企业培训   付款方式   讲师介绍   学员评价   关于我们   联系我们  承接项目 开发板商城  论坛
嵌入式协处理器--FPGA
FPGA项目实战系列课程----
嵌入式OS--3G手机操作系统
嵌入式协处理器--DSP
手机/网络/动漫游戏开发
嵌入式OS-Linux
嵌入式CPU--ARM
嵌入式OS--WinCE
单片机培训
嵌入式硬件设计
嵌入式OS--VxWorks
PowerPC嵌入式系统/编译器优化
PLC编程/变频器/数控/人机界面 
开发语言/数据库/软硬件测试
3G手机软件测试、硬件测试
云计算、物联网
开源操作系统Tigy OS开发
小型机系统管理
其他类
友情连接
WEB在线客服
武汉、南京在线WEB客服
点击这里给我发消息  
QQ客服一
点击这里给我发消息  
QQ客服二
点击这里给我发消息
QQ客服三
公益培训通知与资料下载
企业招聘与人才推荐(免费)

合作企业新人才需求公告

◆招人、应聘、人才合作
请访问曙海旗下网站---

电子人才网
www.morning-sea.com.cn
合作伙伴与授权机构
现代化的多媒体教室
曙海集团招聘启示
曙海动态
邮件列表
 
Neclus内核定时器
 

MTK定时器消息处理机制
一、基本概念及Neclus内核定时器初始化
?expires指定定时器到期的时间,这个时间被表示成自系统启动以来的时钟滴答计数(也即时钟节拍数)。当一个定时器的expires值小于或等于jiffies变量时,我们就说这个定时器已经超时或到期了。在初始化一个定时器后,通常把它的expires域设置成当前expires变量的当前值加上某个时间间隔值(以时钟滴答次数计。
typedef struct timertable
{???? /* store the timer_id. MSB(Most Significant Bit) is align_timer_mask */
?????? U16 timer_id[SIMULTANEOUS_TIMER_NUM];
?????? /* store the event_id that returns from evshed_set_event() */
?????? eventid event_id[SIMULTANEOUS_TIMER_NUM];
?????? /* store the timer_expiry_func */
?????? oslTimerFuncPtr callback_func[SIMULTANEOUS_TIMER_NUM];
?????? /* point to the next TIMERTABLE data */
?????? struct timertable *next;
} TIMERTABLE;
typedef lcd_dll_node *eventid;
?struct lcd_dll_node {
?? void??????????? *data;
?? lcd_dll_node??? *prev;
?? lcd_dll_node??? *next;
};
(1)timer_id:定时器id多同时12个。
(2)双向链表元素event_id:用来将多个定时器调度动作连接成一条双向循环队列。
(3)函数指针callback_func:指向一个可执行函数。当定时器到期时,内核就执行function所指定的函数,产生expires 消息。
//L4 init the timer
/*****************************************************************************
* FUNCTION
* L4InitTimer
* DESCRIPTION
*?? This function is to init the timer while task create.
*
* PARAMETERS
* a IN???? void
* RETURNS
* VOID.
* GLOBALS AFFECTED
*?? external_global
*****************************************************************************/
void L4InitTimer(void)
{
?? /*----------------------------------------------------------------*/
?? /* Local Variables??????????????????????????????????????????????? */
?? /*----------------------------------------------------------------*/
? ?????TIMERTABLE?????? *p;
?????? TIMERTABLE?????? *pp;
??
?? /*----------------------------------------------------------------*/
?? /* Code Body????????????????????????????????????????????????????? */
?? /*----------------------------------------------------------------*/
?????? /* Try to free TIMERTABLE list exclude g_timer_table */
?????? p = g_timer_table.next;
?????? pp = NULL;
?????? do
?????? {????
????????????? if (p != NULL)
????????????? {
???????????????????? pp = p->next;
???????????????????? OslMfree(p);
????????????? }
????????????? p = pp;
?????? } while (p != NULL);
?????? /* reset g_timer_talbe */
?????? memset(&g_timer_table, 0, sizeof(TIMERTABLE));
?????? g_timer_table_size = SIMULTANEOUS_TIMER_NUM;
?????? g_timer_table_used = 0;
??? /* Initiate the clock time callback function. */
?? get_clocktime_callback_func = NULL;
?? set_clocktime_callback_func = NULL;
??? /* Initate the no alignment stack timer */
?????? stack_init_timer (&base_timer1, "MMI_Base_Timer1", MOD_MMI);
??? /* Create a no alignment timer schedule */
? event_scheduler1_ptr = new_evshed(&base_timer1,
?????????????????????????????????????????????????????????? L4StartBaseTimer, L4StopBaseTimer,
?????????????????????????????????????????????????????????? 0 , kal_evshed_get_mem, kal_evshed_free_mem, 0);
??? /* Initate the alignment stack timer */
?? stack_init_timer (&base_timer2, "MMI_Base_Timer2", MOD_MMI);
??? /* Create an alignment timer schedule */
?? event_scheduler2_ptr = new_evshed(&base_timer2,
???????????????????????? ??????????????????????????????????L4StartBaseTimer, L4StopBaseTimer,
????????????????????????????????????????????????????????? 0, kal_evshed_get_mem, kal_evshed_free_mem, 255);
}
typedef struct stack_timer_struct_t {
?????? module_type???????????? dest_mod_id;
?????? kal_timerid???????????? kal_timer_id;
?????? kal_uint16????????????? timer_indx;
?????? stack_timer_status_type timer_status;
?????? kal_uint8????????????? invalid_time_out_count;
} stack_timer_struct;
?/*************************************************************************
?* Exported Function Prototypes
?*************************************************************************/
/*
?* Important:
?* Current implementation max_delay_ticks _disibledevent="text-indent: 24pt; line-height: 150%" align="left">

 
 
 
版权所有:曙海信息网络科技有限公司 copyright 2000-2010
 
上海总部

地址:上海市真北路2500号星河世纪广场A座1904
(地铁11号线上海西站4号出口,家乐福桃浦路店旁)
邮编:200062
热线:021-51875830 32300767
传真:021-32300767
业务手机:15921673576/13918613812
E-mail:officeoffice@126.com
客服QQ: shuhaipeixun
北京分中心

地址:北京市昌平区沙河南街11号312室
(地铁昌平线沙河站B出口) 邮编:102200 行走路线:请点击这查看
热线:010-51292078 57292751
传真:010-51292078
业务手机:13661044276 15313032557
E-mail:officeoffice@126.com
客服QQ:1243285887
深圳分中心

地址:深圳市罗湖区桂园路2号电影大厦A座1816
(地铁一号线大剧院站D出口旁,桂园路和解放路交叉口,近地王大厦)
热线:0755-61280252 25912501
传真:0755-25912501

邮编:518001
信箱:qianru2@51qianru.cn
客服QQ:2472106501
南京分中心

地址:江苏省南京市栖霞区和燕路251号金港大厦B座2201室
(地铁一号线迈皋桥站1号出口旁,近南京火车站)
热线:4008699035
传真:025-84611061
业务手机:13851400109
邮编:210046
信箱:qianru3@51qianru.cn
客服QQ:1325341129
 
成都分中心

地址:四川省成都市金牛区泰安里营门口路88号四威大厦1幢302 邮编:610031
热线:4008699035 61787181 业务手机:18982211962
客服QQ:1325341129 E-mail:qianru4@51qianru.cn

武汉分中心

地址:湖北省武汉市江汉区新华路139号凯盟大厦401 邮编:430022
热线:4008699035
客服微信:shuhaipeixun E-mail:qianru5@51qianru.cn

双休日、节假日及晚上可致电值班电话:021-51875830 值班手机:15921673576/13918613812


备案号:沪ICP备05030316号

.(2011年11月5日)................................................................................