请从官网下载适用于 TDA4VM 的 RTOS SDK:
TDA4VM RTOS SDK 下载地址
请从官网下载 TD4VM 技术参考手册,地址如下:
TDA4VM 技术参考手册地址
目的
由于需要将其他操作系统移植到 mcu1_0 上运行,所以需要在目标操作系统上运行 sciserver
.
参考源码路径
(以 j721e_8.4_RTOS_SDK 为例 )
ti/drv/sciclient/src/sciserver
ti/drv/sciclient/src/sciserver/j721e
概述
Sciserver
用于处理 mcu 域与 main 域处理器核发出的 sci 请求。
整个 sciserver
的移植只需完成目标操作系统下 sciserver_tirtos.c
的适配。
需要使用如下系统资源:
- 4个信号量,用作事件同步(实际只使用其中两个)
- 1个信号量用于资源互斥(调用
Sciserver_processtask()
时) - 4个中断,中断向量号以及中断处理函数所使用的事件同步信号量的索引号,在
sciserver_hwiData.h
中的sciserver_hwi_list[]
定义 - 2个处理 sci msg 的任务,任务句柄索引以及任务所使用的事件同步信号量的索引号,在
sciserver_hwiData.h
中的gSciserverTaskList[]
定义
中断
Sciserver
共涉及4个中断的处理,中断用于从硬件缓存区读取数据到软件缓存区。
每个中断的处理流程类似,可以参考 sciserver_tirtos.c
的 Sciserver_tirtosUserMsgHwiFxn()
函数:
- 中断触发后,失能对应中断;
- 调用
Sciserver_interruptHandler()
,将数据从proxy的硬件缓存区读取到软件缓存区; - 根据
sciserver_hwi_list[]
中的信号量句柄索引,释放信号量给对应任务 - 清除中断状态
任务
Sciserver
的任务需要从软件缓存区读取数据并处理,2个任务都拥有相同的任务处理逻辑。
参考 sciserver_tirtos.c
的 Sciserver_tirtosUserMsgTask()
:
- 初始化对应的任务对象状态为
SCISERVER_TASK_PENDING
; - 判断使用的4个中断是否使能并注册,如果没有使能,就使能;
- 根据
gSciserverTaskList[]
,等待当前任务所使用的同步信号量; - 获取互斥资源;
- 调用
Sciserver_processtask()
; - 释放互斥资源;
- 重新使能对应中断(因为我们在中断处理函数中关闭了中断);