`
tyytzy
  • 浏览: 37717 次
  • 性别: Icon_minigender_1
  • 来自: 安徽
社区版块
存档分类
最新评论

MTK Timer

 
阅读更多

1. GPTI_StartItem

要精准很多,但是只能提供总数不超过32个GPTI,所以使用时需要注意成对申请和释放GPTI,否则可能会出现ASSERT.GPTI用的是GPT timer。这个是用HISR的方式去响应.

    2. StartTime
      StartTime底层是TDMA timer,上层经过Nucleus和KAL封装了一下,最后是用响应消息的方式去响应.

      3. gui_start_timer / gui_cancle_timer
      它最终也是会调用StartTimer的。只不过它不用申请Timer ID,循环使用了固定的Timer ID。
    •  

    4. StartNonAlignTimer
      精确度会比StartTimer要好.UI_disable_alignment_timers()函数用来关闭align timer。关闭之后StartTime函数开出的
      timer都是NonAlign的timer。

    使用范例:
    ------------------------------------------------------------------------
        if (IsBacklightOn())
        {
            StartNonAlignTimer(timer_id + TIMER_ID_IIS_BEGIN, delay, funcPtr);
        }
        else
        {
            StartTimer(timer_id + TIMER_ID_IIS_BEGIN, delay, funcPtr);
        }
    ------------------------------------------------------------------------------------------------
    MTK平台学习--MTK定时器消息机制分析 
    ? MTK定时器消息机制分析 
    ? 1. 数据结构
    (1). stack_timer_struct 
    定时器类型的信息结构( 其主要作用似乎是用以装载待发送的定时器消息数据 )
    (2). TIMERTABLE
    定时器队列节点结构( 其由主要元素mmi_frm_timer_type结构及链表指针两个元 素组成 )
    (3). event_scheduler
    队列信息结构
    (4). mmi_frm_timer_type
    定时器信息结构 
    ? 2. L4定时器初始化
    (1). 步骤
    ...-> 创建MMI Task -> 设置MMI Task初始化函数 -> 在该函数中调用 L4InitTimer
    kal_bool mmi_create(comptask_handler_struct **handle)
    {
    static comptask_handler_struct mmi_handler_info =
    {
    MMI_task, /* task entry function */
    MMI_Init, /* task initialization function */
    NULL,
    NULL, /* task reset handler */
    NULL, /* task termination handler */
    };
    *handle = &mmi_handler_info;
    return KAL_TRUE;
    }

    (2). 作用
    初始化定时器队列并设置基本定时器1,2 
    ? 3. 发送定时器消息
    (1). 步骤
    StartTimer -> L4StartTimer
    (2). 两种类型的定时器
    MTK中有两种类型的定时器
    a. NO_ALIGNMENT 
    非队列式的,即要求立即执行的定时器,时间到了就自动被reset.
    b. ALIGNMENT
    队列式的, 即可以通过队列操作,有一定的延时容忍的定时器 . y
    其基本执行流程: 执行定时器 --> 超时? --> 保存timer id,event id -- timer stop || no event ?----> END ;

    c. 除了触摸屏和手写,其他情况下的定时器一般都是队列式的. 

    (3). L4StartTimer的作用
    判断将要发送的定时器ID,根据是否是队列类型传递给不同的队列结构(event_sheduler1/event_sheduler2) ;
    (4). TimerExpiry
    这是作为参数传递给L4StartTimer的回调函数,由于MTK做了一定的封装,因此其内部具体回调触发过程无法得知,但根据猜测,应该是在定时时间一到,以中断的方式发出消息(MSG_ID_TIMER_EXPIRY),并将其写到MMI的循环队列.该函数可能是在L4CallBackTimer中调用的,L4CallBackTimer的作用如下:
    a. 重置当前定时器信息结构(mmi_frm_timer_type) ;
    b. 执行定时器到点后的执行函数(TimerExpiry) ;
    c. 讲Timer消息写到MMI循环队列中 . 
    ? 4. 与StartTimer对应的StopTimer
    (1). 具体实现通过调用L4StopTimer操作.
    (2). 作用: 找出指定要停止的定时器ID在队列中的位置,然后使用evshed_cancel_event将指定定时器节点从队列中删除.

    5. 定时器消息的处理
    (1). 步骤
    ...-> 创建MMI Task -> 设置MMI Task入口函数 -> 调用 EvshedMMITimerHandler
    (2). evshed_timer_handler( ) -> 处理具体的定时器事件

    StartNonAlignTimer()//启动非队列式timer
    ? StartTimer() //启动队列式timer
    ? -------------------
    ★★ GPTI TIMER
    ? GPTI_GetHandle:取得GPTI timer句柄
    ? GPTI_StartItem:启动gpti timer
    ? GPTI_StopItem: 停止该timer

转自:http://blog.163.com/ling_yf/blog/static/565195712011017333447/
分享到:
评论

相关推荐

    mtk_timer.rar_MTK MEDIATEK_purpose

    通过对`mtk_timer.c`的深入理解和分析,开发者可以充分利用MTK SoC的GPT功能,为各种应用程序提供精确、可靠的定时服务,从简单的定时任务到复杂的实时操作,无一不受益于这个基础但至关重要的组件。

    常用timer的介绍

    在本文档中,我们将详细介绍MTK平台中常见的几种定时器(Timer)类型及其使用方法,包括`uem_start_timer()`、`StartTimer()`、`gui_start_timer()`、以及基于`kal_`前缀的一系列定时器函数。这些定时器在系统管理和...

    MTK定时器传递机制

    3. **初始化过程**:在MTK的定时器初始化过程中,首先会释放TIMERTABLE列表中的所有资源,然后清零`g_timer_table`结构体,确保所有字段都被初始化为0。这一步骤是为了确保每次创建新任务时,定时器列表是干净的。 ...

    MTK定时器消息传递机制

    总结来说,MTK定时器消息传递机制是一种高效且灵活的解决方案,它利用`TIMERTABLE`结构体和双向链表来管理多个定时器,通过事件ID进行调度,同时通过回调函数实现超时事件的处理。这种机制对于手机和其他嵌入式设备...

    MTK定时器消息机制

    ### MTK定时器消息机制深度解析 MTK(MediaTek)作为全球领先的移动通信与多媒体技术提供商,在其芯片设计中采用了一套独特的定时器消息机制,以实现对系统任务的有效调度与管理。本文将深入探讨MTK定时器消息机制...

    MTK_SOCKETCAMERA自动拍照短息自动回复自动录像系统time

    4. **系统定时器**:"MTK使用系统timer.txt"可能包含了关于如何在MTK平台上设置和管理定时任务的信息。系统定时器在自动拍照、录像和其他定时触发的功能中起到关键作用,能够按照预设的时间间隔执行任务。 5. **MTK...

    BQ25601 MTK平台驱动代码

    《BQ25601 MTK平台驱动代码解析》 在嵌入式系统和移动设备领域,驱动程序是连接硬件与操作系统的关键桥梁。本文将深入探讨BQ25601芯片在MTK(MediaTek)手机平台上的驱动代码,帮助读者理解其工作原理和实现细节。 ...

    MTK系统解析.pdf

    MTK系统解析是一个关于MTK系统的详细解析,涵盖了MTK系统的编译环境、Simulator的生成和使用、开机流程、EMI配置、消息机制、添加新的应用、Trace、异常处理、PC工具和Timer等方面的知识点。 一、编译环境 在MTK...

    MTK_面试的几个主要问题

    MTK 面试知识点总结 在 MTK 面试中,常见的问题有多个方面,包括按键处理流程、高亮处理机制、MTK 内存管理、任务管理、事件机制和定时器消息机制等。下面将逐一介绍这些知识点。 按键处理流程 按键处理流程是 ...

    技术文档\MTK平台软件架构.ppt

    【MTK平台软件架构】 MTK(MediaTek)平台软件架构是针对联发科技的多媒体手机解决方案设计的,它涉及到多个层次的软件组件,旨在提供高效、稳定的移动通信功能。以下是对这一架构的详细解析: 1. **MTK方案简介**...

    MTK总结(内部资料)

    ### MTK总结(内部资料) #### MMI框架 MTK(MediaTek)的MMI(Man Machine Interface)框架是一个高度模块化、易于扩展的体系结构,它由一系列精心设计的组件构成,旨在方便新应用程序的集成及第三方应用的接入。...

    MTK系统解析的资料

    - Timer在MTK系统中用于实现定时任务和各种计时功能。 以上内容构成了MTK系统解析的基础,涵盖了从环境搭建、代码编译到系统运行和调试等多个环节,对于理解MTK平台的软件开发具有重要的指导意义。

    MTK消息分发及窗口管理

    ### MTK消息分发及窗口管理 ...4. **Timer事件**:定时器事件用于控制周期性的操作或更新。 通过这些事件,开发者可以更好地理解MTK平台如何处理用户输入和内部通信,并利用这些知识进行更高效的应用开发和调试。

    MTK平台的简单移植过程

    PHY_USE_TIMER, #endif ``` 7. **初始化PHYClub模块**:在`MMITask.c`文件中初始化PHYClub模块,示例如下: ```c #ifdef__PHY_MMI_CLUB_FUN__ extern void InitPhyclub(void); #endif void ...

    mtk手机开发小技巧

    【MTK手机开发小技巧】 在MTK手机开发过程中,开发者常常需要掌握一些特定的技巧以提高工作效率。本文将详细探讨七个关键知识点: 1. **USB设备模拟U盘功能** 当手机通过USB连接到电脑时,部分区域可以被虚拟为一...

    MTK_Socket_http连接方式编程总结

    在MTK平台下实现Socket连接至远程服务器并进行数据下载的第一步,是通过调用`soc_create`函数创建Socket连接。此函数接受一系列参数,包括域(domain)、类型(type)、协议(protocol)、模块标识(mod_id)以及网络账户ID...

    MTK 7.1 定时发送短信

    `ADD_VCALENDAR`常量表示添加日历附件,而`ADD_TIMER`常量则表示添加定时发送功能。代码中可以看到,`if`条件语句检查系统属性`ro.sms.time.send`来决定是否显示定时发送的选项。 `SetTimeSendMms.java`和`...

    Animated_Midlet.rar_j2me mtk_javame

    2. **利用Animation Timer**:Java ME提供了一个名为`javax.microedition.lcdui.game.AnimationTimer`的类,它允许开发者以定时器事件为基础来控制动画的帧率,从而创建流畅的动画效果。 3. **使用GIF或MIDP 2.0的...

    MTK消息分发及窗口管理机制

    4. **Timer事件**: 与定时器相关的事件。 #### PS事件深入解析 PS事件是消息分发机制的核心,它通过消息分发表中的事件ID与相应的处理函数建立联系。当MMI任务从消息队列中取出一条消息时,会依据消息ID查找已注册...

Global site tag (gtag.js) - Google Analytics