dsp,也就是数字信号处理器。有的同学可能会觉得很陌生,其实在arm流行之前,dsp应用的场景还是非常多的。不管是电机控制领域,还是在图像处理领域,dsp都有它自己的应用领域。dsp本身是ti公司发明的,在性能上面很强,当然发热也是很厉害的,这方面需要注意下。
1、dsp的类型
主要有三种,一种是28335这种单颗芯片的dsp;还有一种是j6芯片这种,里面有双核a15,还有dsp芯片、双核m系列arm芯片;最后一种就是soc里面专门用来处理声音的dsp,比如nxp的芯片会集成dsp。
2、开发工具
ccs软件
3、链接文件
cmd文件
4、dsp汇编文件
https://www.nxp.com/docs/en/reference-manual/DSPASMRM.pdf
5、dsp和arm硬件差别
硬件层面的一个比较大的区别,就是浮点运算。相比较而言,stm32不是所有的soc都有fpu,有的需要软件库支持,有的支持硬件单精度计算,这上面dsp就没有相关的烦恼,而且速度很快,这样是dsp能火的原因吧。
6、软件开发差异
个人认为有这么两个,a、堆栈都是从低到高压栈;b、最小数据长度是16位。特别是后面这一个,决定很多软件都要对dsp进行定制,比如网络这一块就要定制。如果是dsp来处理网络报文的收发,这一块基本没有好方法,只能自己写一个简单的udp协议。
7、ti linux的编译方法
yocto编译环境,这个和build root有点类似。
nxp的imx soc系列也是用的yocto开发的。
8、ti自带的rtos
ti-rtos,有一定的使用场合,多用于算法,或者功能安全系统
9、推荐的软件设计方式
如果不是非常必要,可以选择其他soc来解决问题。实在不行,可以选择通用的arm soc + 28335之类的芯片,这样一方面可以复用linux的生态软件,一方面可以用dsp来处理信号,或者实现自动控制。这种方法,就有点类似于arm + fpga、arm + gpu的模式。如果是选用j6、j7芯片,基本只有大公司才会这么做,或者个人对ti的soc很精通,不然小公司建议不要用,因为小公司获得ti的support是很难的。
10、dsp&soc的资料
https://processors.wiki.ti.com/index.php/Main_Page
ti芯片soc部分,资料基本靠自己消化吸收,外面用的不多,电商网站上可以购买的开发板也不是很多。
11、dsp支持力度
除了常规的28335之外,dsp的支持力度基本是很差的,你能做的就是在ti的论坛上问点问题,
https://e2echina.ti.com/question_answer/
能力方面,基本是北美support > 上海support > fae个人
12、dsp的拓展
处理器方便,可以学习下arm,加速器方面可以学习fpga、gpu。
ps:
之前关于硬件加速部分,一个有效的方法就是opencl,ti自己本身擅长dsp,所以它做了opencl based on dsp的这么一个框架,有兴趣的同学可以看看。
https://downloads.ti.com/mctools/esd/docs/opencl/intro.html
对openmp的支持,可以看这个
http://downloads.ti.com/mctools/esd/docs/openmp-dsp/intro.html