TDA4VM/VH SciServer 移植适配指导

文章介绍了如何在TDA4VM上移植Sciserver,涉及到RTOSSDK的下载、Sciserver的功能和结构,以及中断和任务的处理机制。Sciserver主要用于处理sci请求,移植主要集中在sciserver_tirtos.c的适配,包括信号量、中断和任务的配置与管理。
摘要由CSDN通过智能技术生成

请从官网下载适用于 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.cSciserver_tirtosUserMsgHwiFxn() 函数:

  1. 中断触发后,失能对应中断;
  2. 调用Sciserver_interruptHandler() ,将数据从proxy的硬件缓存区读取到软件缓存区;
  3. 根据sciserver_hwi_list[]中的信号量句柄索引,释放信号量给对应任务
  4. 清除中断状态

任务

Sciserver 的任务需要从软件缓存区读取数据并处理,2个任务都拥有相同的任务处理逻辑。
参考 sciserver_tirtos.cSciserver_tirtosUserMsgTask()

  1. 初始化对应的任务对象状态为 SCISERVER_TASK_PENDING
  2. 判断使用的4个中断是否使能并注册,如果没有使能,就使能;
  3. 根据 gSciserverTaskList[],等待当前任务所使用的同步信号量;
  4. 获取互斥资源;
  5. 调用 Sciserver_processtask()
  6. 释放互斥资源;
  7. 重新使能对应中断(因为我们在中断处理函数中关闭了中断);
  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值