打印

学习DSP都有哪几个阶段

[复制链接]
1582|26
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
dingy|  楼主 | 2015-4-13 22:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
dingy|  楼主 | 2015-4-13 22:36 | 只看该作者
我只知道芯片的外设,对芯片的基本操作和简单程序运行。

使用特权

评论回复
板凳
pengf| | 2015-4-13 22:36 | 只看该作者
学习DSP 首先是要对芯片和你所用到的芯片外设的数据手册说明比较清楚,对于初学者可能在刚开始看datasheet时感觉很头晕,因为datasheet只是一些说明性的东西,他没有教你怎么去用,所以datasheet部分一定要结合相应的例子程序去看。

使用特权

评论回复
地板
pengf| | 2015-4-13 22:37 | 只看该作者
对于芯片的外设操作TI提供了一个CSL的函数,帮你事先定义好了一些寄存器地址,这样就不用你去查找每个寄存器的详细地址。

使用特权

评论回复
5
supernan| | 2015-4-13 22:37 | 只看该作者
现在的C6000 程序开发大部分采用C语言,极少数的关键代码采用线性汇编或者汇编语言。对于一个C语言运行工程需要的最少元素是:1:mian函数 2:cmd文件3:runtime support lib。这是让一个基于C语言的工程跑起来的最少条件。

使用特权

评论回复
6
supernan| | 2015-4-13 22:37 | 只看该作者
换句话说只要有了这三个东西我们就可以在DSP上做任何想做的事,但是考虑到做大型工程和复杂应用的需要,通常又要用到操作系统DSP/BIOS和驱动。

使用特权

评论回复
7
dingy|  楼主 | 2015-4-13 22:37 | 只看该作者
我知道的是在阶段首先是 让一个最简单的hell world工程跑起来,这个工程这包含三个文件,一个main.c 一个CMD文件,一个 rts.lib。然后在查数据手册DSP的外设资源调试一遍,这个过程完成后几基本上手了:)。

使用特权

评论回复
8
supernan| | 2015-4-13 22:37 | 只看该作者
对,在这个过程中需要搞明白的是一个过程,三个文件,和简单的调试方法。一个过程是C语言怎么生成.out可执行文件的过程,通常包含编译,汇编,连接三个过程。几个文件是obj, cmd, map,文件Obj,Cmd和Map文件的格式在TI的CCS 文挡帮助中都有详细论述。调试方面我们可可以利用防真器可以让程序在任何地方停下来,然后利用CCS的Memory View功能可以查看想要知道的CPU地址映射的区域。

使用特权

评论回复
9
llljh| | 2015-4-13 22:37 | 只看该作者
接下来就是嵌入失操作系统原理(DSP/BIOS)

使用特权

评论回复
10
kangzj| | 2015-4-13 22:38 | 只看该作者
这部分就有嵌入式操作系统知识了,DSP/BIOS是不开源的,如果想对操作系统的知识了解深入的话可以看看uc/os-II的原代码。

使用特权

评论回复
11
dingy|  楼主 | 2015-4-13 22:38 | 只看该作者
嗯,嵌入式操作系统的基本原理都一样。这个完成后在把Ti关于DSP/BISO的列子程序跑一便熟悉操作系统中各个模块,如TSK, TIMER…..。

使用特权

评论回复
12
小小猫咪| | 2015-4-13 22:38 | 只看该作者
在熟悉完操作系统后,剩下的就是对DSP/BISO的驱动模型了,TI 的驱动模型采用的是class-mini driver模式,其中class driver就是一些函数接口,提供到mini driver的访问。

使用特权

评论回复
13
pengf| | 2015-4-13 22:38 | 只看该作者

看好书+实验板编程,你专注的做一件事,及时停下来去反思,你会慢慢入门的

使用特权

评论回复
14
yinxiangh| | 2015-4-13 22:38 | 只看该作者
其中mini driver实现方式根据不同的板子和芯片会不一样,建议选取一个外设资源,看懂其源代码,这些代码一般都在几个c 文件内,其中最主要是5-7个函数的实现;
mdBindDev()
mdUnBindDev()
mdControlChan();
………………….

使用特权

评论回复
15
zwll| | 2015-4-13 22:39 | 只看该作者
DSP/BIOS的驱动比较简单,总得来说驱动可以分为2个部分,一部分函数硬件的初始化和控制工作,这部分相对交简单;另外一部分函数负责 I/O,buffer的同步工作,这部分通常要复杂的多,而且这部分函数常常和中断牵涉在一起,所以在看驱动源代码时一定要时刻知道中断什么时候发生,中断服务函数里面做了些什么,对其他函数的影响是什么等。

使用特权

评论回复
16
chuxh| | 2015-4-13 22:39 | 只看该作者
如果能把驱动代码看一遍对于C语言提高是很大的。

使用特权

评论回复
17
kangzj| | 2015-4-13 22:40 | 只看该作者
第三个阶段就是DSP算法的移植和优化工作

使用特权

评论回复
18
pangb| | 2015-4-13 22:40 | 只看该作者
这个是比较耗时间的工作。现在如果实现比较复杂的系统不做DSP程序的优化是肯定不行的。

使用特权

评论回复
19
pangb| | 2015-4-13 22:40 | 只看该作者
DSP程序的优化方法有很多,网上也有很多资料,但是以我实际的经验来看很多人都没有把握关键的地方,如果是复杂算法的话DSP优化的第一步应该是存储器优化,也就是说利用ping-pong buffer技术将待处理的数据分批的搬运到片内存储器中,在这个工程中要结合片内资源,设计好数据结构,并一定要考虑让数据对齐。

使用特权

评论回复
20
dengdc| | 2015-4-13 22:40 | 只看该作者
存储器优化是 program optimization 文档中没有提及,而是在一个叫Cache user guide 文档中说明,所以这样就造成很多人不知道原因。在完成存储器优化之后就是program optimization 文档中所讲的方法,-o3,数据打包,inline,循环展开,汇编等等。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

745

主题

10920

帖子

6

粉丝