50
题题 :Task Manage 题题 : 题题题题题题题 ( 题题 ) 题题题题 题题 : 题题题题题题 题题题 : 题题题

题目 :Task Manage

  • Upload
    lyneth

  • View
    114

  • Download
    4

Embed Size (px)

DESCRIPTION

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

Citation preview

Page 1: 题目 :Task Manage

题目 :Task Manage公司 : 松讯达中科电子 ( 深圳 ) 有限公司

部门 : 研发部软件科撰稿人 : 杨文娟

Page 2: 题目 :Task Manage

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

Page 3: 题目 :Task Manage

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

Page 4: 题目 :Task Manage

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

Page 5: 题目 :Task Manage

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

Page 6: 题目 :Task Manage

Task Manage 的优先级

Page 7: 题目 :Task Manage

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

Page 8: 题目 :Task Manage
Page 9: 题目 :Task Manage

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

Page 10: 题目 :Task Manage

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

Page 11: 题目 :Task Manage

任务结构

Page 12: 题目 :Task Manage

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

Page 13: 题目 :Task Manage

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

Page 14: 题目 :Task Manage

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

Page 15: 题目 :Task Manage

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

Page 16: 题目 :Task Manage

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

Page 17: 题目 :Task Manage

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

Page 18: 题目 :Task Manage

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

Page 19: 题目 :Task Manage

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

Page 20: 题目 :Task Manage

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

Page 21: 题目 :Task Manage

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

Page 22: 题目 :Task Manage

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

Page 23: 题目 :Task Manage

1、定义 task id 和 module id

用户最多只能定义 16个任务和 16个模式

Page 24: 题目 :Task Manage

2、填充模型到任务映射表中

在影射表 custom_mod_task_g上,填充MOD_CUSTOM1到任务 INDE_CUSTOM1

Page 25: 题目 :Task Manage

3、配置任务生成表

在 custom_config.c 中定义任务结构

Page 26: 题目 :Task Manage

4 、实现任务创建函数

在 custom1_create.c 中实现任务创建函数

Page 27: 题目 :Task Manage

5、定义消息 ID

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

Page 28: 题目 :Task Manage

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

Page 29: 题目 :Task Manage

USB Task Audio Task BMT Task Media Task MMI Task NVRAM Task File Manager Task

Page 30: 题目 :Task Manage

AUX Task L1 Task L4 Task Via Task UEM Task FT Task TST Task PS Task

Page 31: 题目 :Task Manage

CMUX Task IMPS Task SIM Task MOD_TP Task Timer Task View Task IDLE Task

Page 32: 题目 :Task Manage

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 设定模型和激活驱动程序。

Page 33: 题目 :Task Manage

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

Page 34: 题目 :Task Manage

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

Page 35: 题目 :Task Manage

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

Page 36: 题目 :Task Manage

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

Page 37: 题目 :Task Manage
Page 38: 题目 :Task Manage

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

Page 39: 题目 :Task Manage

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

Page 40: 题目 :Task Manage
Page 41: 题目 :Task Manage

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

Page 42: 题目 :Task Manage

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

Page 43: 题目 :Task Manage

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

Page 44: 题目 :Task Manage

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

Page 45: 题目 :Task Manage
Page 46: 题目 :Task Manage

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

Page 47: 题目 :Task Manage

系统 Task 异常

Page 48: 题目 :Task Manage

HISR 系统异常

Page 49: 题目 :Task Manage

任务信息引起的致命错误

Page 50: 题目 :Task Manage