1 / 50

题目 :Task Manage

题目 :Task Manage. 公司 : 松讯达中科电子 ( 深圳 ) 有限公司 部门 : 研发部软件科 撰稿人 : 杨文娟. 目录. Task Manage 的基本知识 Task Manage 的 API 函数 创建 Task Manage 系统 Task Manage 的统计 Task Manage 的内存分配 引发异常. 目录. Task Manage 的基本知识 Task Manage 的 API 函数 创建 Task Manage 系统 Task Manage 的统计 Task Manage 的内存分配 引发异常.

lyneth
Download Presentation

题目 :Task Manage

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 题目:Task Manage 公司:松讯达中科电子(深圳)有限公司 部门:研发部软件科 撰稿人:杨文娟

  2. 目录 • Task Manage 的基本知识 • Task Manage 的API函数 • 创建Task Manage • 系统Task Manage 的统计 • Task Manage的内存分配 • 引发异常

  3. 目录 • Task Manage 的基本知识 • Task Manage 的API函数 • 创建Task Manage • 系统Task Manage 的统计 • Task Manage的内存分配 • 引发异常

  4. Task Manage介绍 • Task Manage主要管理系统任务的创建、用户自定义任务的创建、任务执行时序和高层中断服务程序(HISR)。 • KAL 为了保持自身的高简洁性,为操作系统的每个组成部分定义了自己的API函数,包括Task Manage 、Task Snchron- -ization Manage、Task Communication management 、 Timer Management和Memory Management。

  5. Task Manage描述 • MAUI的基本执行单位不是一个Task,就是HISR,或者中断。当系统访问中断或受限制时,Context switch就会发生。而时序设计申请系统的时序优先级。在任何两个tasks 和两个HISRS中间,都定义了优先级。下表将显示:

  6. Task Manage的优先级

  7. 三种启动模式下不同的Tasks • 三种启动模式为META,USB,normal boot mode.在不同的启动模式下,有不同的任务。 这些都预先在类型数组comptask _info_struct中定义。 • 例如:normal boot mode 对应的是sys_comp_config_tbl • 在启动阶段,系统识别启动模式,复制任务信息到全局数组task_info_g,这个为任务运行提供重要的参数。在消息传递期间,task_info_g 是队列ID的目的地。

  8. 操作系统的启动流程 • 创建全局处储存体和缓冲层、注册中断事件、设备初始化和任务建立。

  9. 任务状态 • 一个任务创建后,分两种状态:准备、执行。系统规定有高优先级的处Context switch的前面。在执行期间,任务因同步和通信资源可以延迟。

  10. 任务结构

  11. MMI Queue:协议栈/L4写事件到这个队列,MMI Task从这个队列读取。 • L4/NS Queue:MMI Task写MMI事件到这个队列,L4 Task/Network Simulator从这个队列读取事件。 • MMI Task • 等待MMI队列 • 协议栈提出队列信息

  12. Framework Layer进程事件 • Framework Layer回叫到应用程序层 • 应用程序层使用UI层显示在屏上

  13. 数据结构和数据类型 • Comptask_handler_struct 任务结构的组成,包括任务入口、初始化和三个选择函数(configuration,reset,end)。

  14. Comptask_info_struct • 任务描述,在下表可以看出,任务描述是由一些常量数组进行,在创建函数为NULL的情况下,任务不会创建。

  15. Task_info_struct • 任务运行相关的信息 • Kal_task_type,*kal_intemal_taskid • 定义了任务控制块 • Kal_hisr_type,*kal_intemal_taskid • HISR控制块

  16. 目录 • Task Manage 的基本知识 • Task Manage 的API函数 • 创建Task Manage • 系统Task Manage 的统计 • Task Manage的内存分配 • 引发异常

  17. Task Management API列表 • Kal_activate_hisr • 激活HISR后,将在下个时序拥有最高优先权 • Kal_change_priority • 任务运行优先级开关,用户必须慎用这个函数,否则在优先级转换时容易引起死锁。

  18. Kal_create_hisr • 创建HISR • Kal_get_my_task_index • 在当前运行的执行单元中找到正确的任务索引,如果不是任务则返回-1 • Kal_get_mytask_priority • 找到当前执行单元的优先级 • Kal_get_task_self-id

  19. 返回当前任务的ID • Kal_if_hisr • 识别当前执行单元是否为HISR • Kal_sleep_task • Task处于不运行状态,持续时间为4.651ms • Stack_change_priority_by_module_ID • 提供运行任务优先级开关

  20. 目录 • Task Manage 的基本知识 • Task Manage 的API函数 • 创建Task Manage • 系统Task Manage 的统计 • Task Manage的内存分配 • 引发异常

  21. 用户任务必须在custom_comp_config_tbl中是专用的,而且是comptask_info_struct的数组类型,用户任务可以被创建函数识别为NULL或存在。用户任务必须在custom_comp_config_tbl中是专用的,而且是comptask_info_struct的数组类型,用户任务可以被创建函数识别为NULL或存在。 • 在启动阶段,系统查询映射表,确定它的创建通道,然后创建函数。 • 为了增加系统任务,用户被允许最多创建16个任务。下面是创建函数的步骤:

  22. 1、定义task id和module id • 用户最多只能定义16个任务和16个模式

  23. 2、填充模型到任务映射表中 • 在影射表custom_mod_task_g上,填充MOD_CUSTOM1到任务INDE_CUSTOM1

  24. 3、配置任务生成表 • 在custom_config.c中定义任务结构

  25. 4、实现任务创建函数 • 在custom1_create.c中实现任务创建函数

  26. 5、定义消息ID 在custom_sap.h中定义消息ID,消息ID最大值是1000个 • 至此,任务创建完成。

  27. 目录 • Task Manage 的基本知识 • Task Manage 的API函数 • 创建Task Manage • 系统Task Manage 的统计 • Task Manage的内存分配 • 引发异常

  28. USB Task • Audio Task • BMT Task • Media Task • MMI Task • NVRAM Task • File Manager Task

  29. AUX Task • L1 Task • L4 Task • Via Task • UEM Task • FT Task • TST Task • PS Task

  30. CMUX Task • IMPS Task • SIM Task • MOD_TP Task • Timer Task • View Task • IDLE Task

  31. USB Task • USB Task负责传递USB Mode1、MMI以及external interrupt之间的通信。 • 当手机上的USB线路被堵, external interrupt HISR发送消息到USB Task,USB Task转送到MMI,MMI选择mass storage driver或者 virtual comport driver;MMI发送消息到USB Task, USB Task设定模型和激活驱动程序。

  32. BMT Task • 当BMT Task激活以后pmic_charge_ current_offset函数返回值将从NVRAM读取值来设置PMIC,这个值的范围是(-6,12) • Audio Task • Audio Task利用函数pmic_speaker_gain调整扩音器的分贝,最大21分贝

  33. 系统提供70个APIS为Task访问存储设备上的文件 • System_and_Debug\File_System\File_System_Document_20060717_W06.29.pdf中可以查看这70个函数

  34. FS_MAX_THREAD定义了任务使用文件系统时最大的数量。文件系统中的每个任务的行为(非块/块/只读/写)和关系(特别是路径)将被记录。 。默认值是10,你可以根据自己系统的设计调整,这个值得范围GREATER THAN1,如果违反了这个值在启动时中断。 (System_Configuration_V1.14.pdf)

  35. 任务栈 • 在运行期间每个任务的消耗高峰都有监视指令,它的记录是根据任务索引。下表是栈消耗到任务名称,可以从stack_config.c中得到枚举数量,也可以在enumFileCustom中看到具体值。 • 如果任务栈的消耗是0,则这个任务栈在本工程中不存在。

  36. 目录 • Task Manage 的基本知识 • Task Manage 的API函数 • 创建Task Manage • 系统Task Manage 的统计 • Task Manage的内存分配 • 引发异常

  37. 因系统任务的要求,用户被允许可以扩大栈的尺寸和队列的尺寸 。在custom_config.c中定义了函数custom_config_task_stack_size。当为系统的每个任务分配栈时,系统将访问这个函数查询每个任务栈的尺寸。如果函数返回的值(栈尺寸,BYTE)比任务原始的尺寸大了,系统将用这个返回的值作为栈的尺寸。否则,系统将用原始设定的去分配栈。例如,下面这个函数就是说MMI任务栈是8KB。

  38. 同理,在在custom_config.c中定义了函数custom_config_task_extq_size。当为系统的每个任务分配外部队列时,系统将访问这个函数查询每个任务外部队列的的尺寸。如果函数返回的值比任务原始的尺寸大了,系统将用这个返回的值作为外部队列的值。否则,系统将产生致命错误。同理,在在custom_config.c中定义了函数custom_config_task_extq_size。当为系统的每个任务分配外部队列时,系统将访问这个函数查询每个任务外部队列的的尺寸。如果函数返回的值比任务原始的尺寸大了,系统将用这个返回的值作为外部队列的值。否则,系统将产生致命错误。

  39. 栈和外部队列都是从系统存储层分配的。如果一直扩大尺寸,系统存储就消耗很大,系统存储尺寸必须进行适当调整。栈和外部队列都是从系统存储层分配的。如果一直扩大尺寸,系统存储就消耗很大,系统存储尺寸必须进行适当调整。

  40. 目录 • Task Manage 的基本知识 • Task Manage 的API函数 • 创建Task Manage • 系统Task Manage 的统计 • Task Manage的内存分配 • 引发异常

  41. 为了阻止context switch在异常事件上的路径,违反任务优先级最高先进行的原则。因此,在系统访问前,任何系统锁都必须释放,否则,系统死锁。 • 下面为系统错误事件进程:

  42. 当访问文件系统时,每个任务都会小心处理错误条件,虽然好多错误会被高级进程发现,但是还有一些不会被发现,直到他们在高级运行系统中发生。比如,硬件突然被破坏或存储设备被堵塞。任务自己会仔细的处理这些事件直到中断发生 之前。如果错误文件系统可以忽略或容易覆盖,否则中断会引起系统重新启动,要注意以下的错误代码:-10,-25,-26,-47,-48,-101,-102

  43. 系统Task异常

  44. HISR系统异常

  45. 任务信息引起的致命错误

  46. 谢谢

More Related