TI 8127 Appro 框架简析

这也许是我接触的最后一个嵌入式项目了

开发环境Ti8127开发板

Appro框架跨度很广,除了最底层使用的是带有 ti_ 前缀的底层函数外(包括共享内存分配,m3驱动等不开源的代码库),其余的几乎都是Appro框架中完成,并做了对应的再封装,代码量巨大。

我所读过的代码,估计只占1/3,主要是应用层(ipnc_app)和MCFW(Multi-channel framework,ipnc_mcfw),而在ti_tools的代码,几乎未染指,只在必要的地方,做了一些大胆但适用的修改。

Appro框架的核心在于它四个芯片(core)间共享内存的管理,所有消息与数据在core之间的交换都是通过共享内存,而这一段代码是不开源的,只能通过更改宏设置,来决定每一个共享区域(segment)的大小。其次,每一个模块(一个core可以有多个模块)由一个线程负责(引入link的概念),而每个link都由一个SystemServer线程管理(此SystemServer非ipnc_app中的system_server),而这仅是ti_tools的设计,在ipnc_mcfw中,再次以这种设计封装,并应用这一设计(demo/usecase);而在ipnc_app中,又使用了同样的设计(此时已没有使用link的概念,但是线程+server使用消息队列的模式还是同样的),来封装(管理)web,rtsp等上层应用。

在mcfw中,用usecase来体现底层links的设计,将各links(cameraLink,EncLink,DecLink,DisplayLink等)串联起来,就可以实现一个完整的采集,编码,解码,显示的流程,当然,其中还有很多降噪和算法的link。这是一种很有趣的模式,模块间完全没有耦合,但是又因为SystemServer的存在,又高度的聚合,使用者只需要关心单个link的输入是否符合该link的要求,输出是否符合下一个link的输入的要求。这种模式也有局限性,即使其数据流是线性且单一的,输入只能有一个,输出可以多路或者单路或者不输出(有一个特殊的MergeLink,用于同步多通道数据,允许N路输入,N路输出,但是向上追溯的话,还是只有一个数据源),类似流水线的操作,我想这种模式应该可以在很多情况下借鉴使用。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值