TDA2x软件框架分析

    TDA系列SOC采用异构多核设计,架构复杂,上手比较困难,本文将结合本人对TDA2xx开发SDK(vision_SDK)的理解,对TDA软件框架做一个描述,抛砖引玉做一个指引性的指导文章,方便同在TDA平台做开发的各位小伙伴。

    从宏观角度来讲,我认为TDA2x的软件框架分为三层,分别是应用层、链接层和板级支持层。如下图所示:

    板级支持层包括各种外设及其驱动,链接层也就是link层,每个独立的核都有各自的link及其link ID,有些相同功能的link分布在不同的核,比如ipc在每个核都可以找到;也有些link只存在于某一个核,比如capture link只存在于M4核。应用层就是功能组装层,根据功能将用到的链接连接起来形成chains,如下图所示。

   在vision_sdk中,实现了上述所有的内容,除了TDA系列SOC,其他类型的SOC也做了兼容,同时linux版本、bios版本等都支持,所以整个sdk工程显得很庞大。下面根据我对vision_sdk的梳理,整理了各部分内容对应的代码。

    下图是应用程序的入口

下图是各个核的入口文件

下图是主要驱动程序的源码

下图是程序运行结构图,每个核都有若干个link,每个link都是一个线程,完成自己独立的任务,link与link之间通过ipc进行通信。

每个link的初使化及运行也基本是固定的模式,下图以IPU1-0中的link(display)为例,描述link的初使化流程。

    总的来说,整个TDA平台的框架还是很复杂的,简单的来讲,就是每个核中都运行着若干个线程,每个线程就是一个任务,但微观来讲,深入到代码层还是挺复杂的,有些不同核中的link共用的是同一份代码,不容易区分,SDK里面也采用了大量的函数指针和回调函数,调用函数的时候比较隐避,难以找到函数的源头。需要好好分析,多磨一磨才更好的理解vision_sdk的框架和实现思路。

  • 14
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值