DAVINCI(ARM+DSP)开发攻略已经整整两年多没写东西了,自从写完DAVINCI DM3730的开发攻略,就基本没什么精力去写,一直在忙DM3730平台客户定制的产品设计和大规模量产的任务。
2015年-2016年-2017上半年爆炸性的出货,公司只好全力去支持大客户,保证产品的质量。还有得了一个可爱的小宝宝,里里外外的事情重重压过来,不得不去处理,结果博客和公司网站基本处在停止更新状态,毕竟这年头大环境是实业误国,投机“兴邦”,在这种情况下科技公司全力赚点伙食费不容易,所以博客基本就没时间更新了。
现在招了些员工,也外包一些事情给其他朋友做做,自己慢慢静下心来,继续DM8127的开发工作,同时在开发工程当中,把一些经验分享出来,继续耕耘自己的博客。
总的来说,一个人要吃透整个TI指定的第3方DM8127的IPNC_RDK包,确实挺难,因为软件包太多东西,一个人的精力确实有限。
说到DM8127开发,我们公司其实2013年就已经启动了,没错就是通过艾睿合众达,买到台湾APPRO的DM8127-IPNC(IP网络相机),现在艾睿合众达已经不卖这个产品了,因为国内用这个平台开发的公司比较少,没办法,TI的DSP就是贵,这些年出货量比较大的就海康等几个大公司了。公司迟迟没有推出DM8127产品,有以下几个原因:
一、当时资金不够;
二、搞过这方面的人才缺乏,不容易招;
三、公司所有资源全力支持大客户去抢占某个市场;
四、DM8127 架构比较复杂;
五、高清CMOS 的ISP 的2A-3A算法这些比较头疼,大大加大了开发成本和时间。
还好,目前调试出了SONY一款1/2.8寸的200万IMX SENSOR,图像效果比以前的720P好多了,感到很欣慰,自己也有动力去搞开发工作了。这2年大规模出货的时候,琐碎的事情一大堆,本人都不知道怎么过来的,整个人根本没心情去搞开发工作。
DM8127 是DM81XX系列功耗相对低一些的带浮点C674X DSP的DAVINCI芯片,浮点运算能力达到4500M FLOPS,专门针对高清相机进行设计的,因为带有ISP模块,所以能和DM368-DM385一样可以对RAW DATA的SENSOR 原始图像数据进行处理。而普通的DM8168和DM8148则没有这个功能。
DM8168和DM8148比较适合做多路D1的智能图像分析DVR的产品,DM8168和DM8148功耗都比DM8127大。当然DM8127比我们以前开发的DM3730功耗大是肯定的,毕竟强悍的性能摆在这里,本公司网站卖的对应型号核心板都有相应的性能描述,这里也不用太累赘去描述。
下面只用一个简单的表格大概了解一下几个常用的ARM CORTEX-A8+DSP DAVINCI芯片的对比,那个ARM9+DSP的90纳米超级大功耗的DM6467T就不用比较了,同样只有一个CORTEX-A8不带DSP的DM385/DM388这里也不列出比较。
功能 | DM8127 | DM8168 | DM8148/8147 | DM3730 |
DSP | 浮点C674X 750M | 浮点C674X 1G | 浮点C674X 750M | 定点C64+ 800M |
ARM | A8+双M3 | A8+双M3 | A8+双M3 | A8 |
性能 | 强 | 最强(优) | 强 | 最低 |
功耗 | 大 | 最大 | 较大 | 最小(优) |
ISP | 强大的ISP(优) | 无 | 无 | 弱化的ISP |
SATA | 无 | 有 | 有 | 无 |
网口PHY | 有 | 有 | 有 | 无 |
USB PHY | 有 | 有 | 有 | 无 |
DSP L2 | 256K | 256K | 256K | 64K+32K SRAM |
ARM L2 | 256K | 256K | 512K | 256K |
H264编解码算法 | 不占用DSP资源 | 不占用DSP资源 | 不占用DSP资源 | 占用少量DSP资源 |
内置人脸识别 | 有 | 无 | 无 | 无 |
DM8127内部结构图:
DM8168内部结构图:
DM8148/DM8147内部结构图:
如果需要更详细的功能对比,大家可以到TI网站下载对应的DATASHEET资料。
按道理来说,DM8127是12年TI发布的产品,真正芯片规模量产是从13年开始,到现在17年应该是比较落后的芯片了,为什么我们还要坚持去做呢?
你看看人家那些手机芯片,半年推出一个新的满足旗舰机要求的芯片,更新换代特别快。但从我们工业应用角度讲,TI DSP不一样,TI 的芯片生命力非常强大,一般主推的芯片都是10年以上的生命周期,比如DM6446现在都还有公司在大规模出货,毕竟现在DM6446比2010年那时便宜多了。TI那些TMS320F28XX工控芯片,用在电力系统,电机,电源等控制领域,生命力更加强大,好几个都超过10年以上的生命周期。不单单在工业应用,在国防军工TI的DSP扮演非常重要的角色。
公司坚持做DM8127,是因为公司也一直在做DAVINCI图像分析的SOC平台,还有目前图像识别(视频分析)这个市场并没有萎缩,而是越来越壮大,本人也看了国务院2017年7月8日发布《新一代人工智能发展规划》全文,里面肯定少不了图像识别(机器视觉)这一块的产品,像车牌识别人脸识别都是不错的产品,给社会管理带来很大的便利。
在视频分析方面,TI ARM+DSP的方案,相当适合不同种类算法的移植,纯粹C/C++语言,也适合中小公司快速设计产品,比那种烧钱的ARM+FPGA还是有优势的,移植现成的算法(比如OpenCV啊等等)到FPGA,你必须找到非常牛的人,这种人对verilog语言和HLS语言非常非常熟悉,而且对硬件逻辑非常熟悉,对现成算法每个模块都非常熟悉。还有TI 2014年推出的那个用32级流水线执行指令的杀手锏浮点DSPC66X,从2017年开始加入到了DAVINCI系列,目前推出的是DM50X,只不过ARM 是双Cortex-M4超级单片机,跑的是TI RTOS(DSP BIOS这种实时操作系统)。这个C66X 浮点DSP拿来做视频分析超级爽。
至于DM8127的开发攻略要如何写,本人文化水平有限,文字功底更有限,没法按照那种专业布局架构去写,由于IPNC_RDK软件包涉及到的东西比较多,我只能先从开发人员从无到有的角度去写。
比如搭建Linux HOST开发环境,IPNC_RDK整体架构分析,BOOT过程和应用程序运行过程等等。就是买芯片回来后,参考开发板,设计好硬件,我们是如何一步一步去开发这个平台的,如何让这个自己做的裸板自动跑起来。
IPNC_RDK有类似的相关手册,但是写的用户手册是有点简单,只是告诉你他们的IPNC高清相机如何使用,软件包如何编译等等,对如何工作的原理没太多精力去描述,特别是他们那一套McFW,本人总感觉介绍有点简单,如果不是分析过源代码,根本不清楚McFW的架构。
本人要写的开发攻略出发点不同,有时间和兴趣就写写,分享分享,或许对那些毕业设计的学生有帮助,或许对那些出来工作的新手有帮助,或许能遇见在这方面共同爱好的朋友,看看是否有合作可能,共同去做一个好的图像识别(视频分析)产品,比如有些朋友有很好的图像识别(视频分析)算法,软件有一个好的卖点,而对硬件设计啊,生产啊,认证啊,电磁干扰啊,防雷啊等等无法分心去做或者不够专业去做,我们就可以提供对应的软件平台和硬件平台去帮客户实现他们的卖点,实现共赢的同时,我们共同做的产品能给社会带来良性的帮助,本人觉得也是一种成就。