14392|26

16

帖子

0

TA的资源

一粒金砂(高级)

楼主
 

DSP学习的三个阶段 [复制链接]

本文转自于:DSP交流网
研究生期间断断续续做过TI  DSP研究,从一个对嵌入式一点也没有了解的新手到快毕业时完成一个自认为满意的项目,其中走过很多弯路,现在把我对DSP学习的心得和一些参考文献列出来,可能对初学者具有帮助。
   实验室用的是一款闻亭的DM642开发板,当时这款开发板还比较新,国内中文资料很少,而且闻亭但是的例子程序均是采用TI的原程序,不像合众达的例子程序容易上手,所以可能合众达的板子比较适合初学者使用。
   DM642是一款针对图像应用的高端DSP,近几年来国内应用的范围很广。对于DSP软件学习而言个人认为包含了3个方面的东西:1:芯片的外设,对芯片的基本操作和简单程序运行环境。2:嵌入失操作系统原理(DSP/BIOS)。3:DSP算法的移植和优化工作。下面分别对这三个方面做论述。
   1:芯片的外设,对芯片的基本操作和简单程序运行。
   学习DSP 首先是要对芯片和你所用到的芯片外设的数据手册说明比较清楚,对于初学者可能在刚开始看datasheet时感觉很头晕,因为datasheet只是一些说明性的东西,他没有教你怎么去用,所以datasheet部分一定要结合相应的例子程序去看。对于芯片的外设操作TI提供了一个CSL的函数,帮你事先定义好了一些寄存器地址,这样就不用你去查找每个寄存器的详细地址。
   现在的C6000 程序开发大部分采用C语言,极少数的关键代码采用线性汇编或者汇编语言。对于一个C语言运行工程需要的最少元素是:1:mian函数 2:cmd文件3:runtime support lib。这是让一个基于C语言的工程跑起来的最少条件。换句话说只要有了这三个东西我们就可以在DSP上做任何想做的事,但是考虑到做大型工程和复杂应用的需要,通常又要用到操作系统DSP/BIOS和驱动。
  在阶段首先是 让一个最简单的hell world工程跑起来,这个工程这包含三个文件,一个main.c 一个CMD文件,一个 rts.lib。然后在查数据手册DSP的外设资源调试一遍,这个过程完成后几基本上手了:)。
  在这个过程中需要搞明白的是一个过程,三个文件,和简单的调试方法。一个过程是C语言怎么生成.out可执行文件的过程,通常包含编译,汇编,连接三个过程。几个文件是obj, cmd, map,文件Obj,Cmd和Map文件的格式在TI的CCS 文挡帮助中都有详细论述。调试方面我们可可以利用防真器可以让程序在任何地方停下来,然后利用CCS的Memory View功能可以查看想要知道的CPU地址映射的区域。
这部分的参考资料可以查看
(1)电子科技大学 出版的 C/C++语言硬件程序设计--基于TMS320C5000系列DSP
(2)帮助文档

   2:嵌入失操作系统原理(DSP/BIOS)
   这部分就有嵌入式操作系统知识了,DSP/BIOS是不开源的,如果想对操作系统的知识了解深入的话可以看看uc/os-II的原代码。嵌入式操作系统的基本原理都一样。这个完成后在把Ti关于DSP/BISO的列子程序跑一便熟悉操作系统中各个模块,如TSK, TIMER…..。
   在熟悉完操作系统后,剩下的就是对DSP/BISO的驱动模型了,TI 的驱动模型采用的是class-mini driver模式,其中class driver就是一些函数接口,提供到mini driver的访问。其中mini driver实现方式根据不同的板子和芯片会不一样,建议选取一个外设资源,看懂其源代码,这些代码一般都在几个c 文件内,其中最主要是5-7个函数的实现;
   mdBindDev()
   mdUnBindDev()
   mdControlChan();
………………….
DSP/BIOS的驱动比较简单,总得来说驱动可以分为2个部分,一部分函数硬件的初始化和控制工作,这部分相对交简单;另外一部分函数负责 I/O,buffer的同步工作,这部分通常要复杂的多,而且这部分函数常常和中断牵涉在一起,所以在看驱动源代码时一定要时刻知道中断什么时候发生,中断服务函数里面做了些什么,对其他函数的影响是什么等。如果能把驱动代码看一遍对于C语言提高是很大的。
这部分的参考资料可以查看
  (1)       DSP/BIOS user guide
        (2)   How to write DSP device driver
     http://www.embedded.com/columns/ ... 5?_requestid=176707
          (3)  嵌入式实时操作系统UC/OS-II

     3:DSP算法的移植和优化工作
     这部分是最后工作,一般也是比较耗时间的工作。现在如果实现比较复杂的系统不做DSP程序的优化是肯定不行的。DSP程序的优化方法有很多,网上也有很多资料,但是以我实际的经验来看很多人都没有把握关键的地方,如果是复杂算法的话DSP优化的第一步应该是存储器优化,也就是说利用ping-pong buffer技术将待处理的数据分批的搬运到片内存储器中,在这个工程中要结合片内资源,设计好数据结构,并一定要考虑让数据对齐。存储器优化是 program optimization 文档中没有提及,而是在一个叫Cache user guide 文档中说明,所以这样就造成很多人不知道原因。在完成存储器优化之后就是program optimization 文档中所讲的方法,-o3,数据打包,inline,循环展开,汇编等等。
     做优化的过程中一定要保证优化之前和之后的处理结果正确性,也就是说优化不能导致错误的发生,然后在尽量提高时间。
     关于优化后函数运行时间的测量TI的有个文档里面有教你怎么测,就是利用定时器来测量函数运行的时间,另外对于运行时间本来就只有几百个cycle的短小汇编函数也可以利用CCS 的clock功能来测时间。
总之程序优化就是一项耗时间的体力活,哈哈!
这部分的参考资料可以查看
(1)       program optimization guide
(2)       cache user guide
转载请注明出自DSP交流网 DSP学习第一论坛 DSP技术应用与推广平台 DSP开发服务平台 http://www.hellodsp.com/bbs/,本贴地址:http://www.hellodsp.com/bbs/viewthread.php?tid=6913

最新回复

mark 下。。。。。下次再看一遍  详情 回复 发表于 2012-10-20 23:21
点赞 关注
 

回复
举报

6

帖子

0

TA的资源

一粒金砂(中级)

沙发
 
thank you very much
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
写得太好了
 
 
 

回复

27

帖子

0

TA的资源

一粒金砂(中级)

4
 

不懂,

不懂,飘过.
 
 
 

回复

4

帖子

0

TA的资源

一粒金砂(初级)

5
 
看不怎么懂
 
 
 

回复

22

帖子

0

TA的资源

一粒金砂(高级)

6
 
我现在一点都看不懂  等我学习及天再来看
 
 
 

回复

2498

帖子

0

TA的资源

至上芯片

7
 

回复 楼主 大意了 的帖子

飘过啦!!!!!!!!!!看过啦!
个人签名我的邮箱gaoxiaoan123@163.com!回帖是一种美德!互相帮助,共同进步!
口头禅:生活在于创造机会,把握机会!
 
 
 

回复

7

帖子

0

TA的资源

一粒金砂(中级)

8
 
写得太好了!!!!!!!!!!
 
 
 

回复

3

帖子

0

TA的资源

一粒金砂(中级)

9
 
感谢楼主的分享,很受启发。
楼主有没有复杂算法从仿真到代码移植的成功经验,分享一下。
 
 
 

回复

24

帖子

0

TA的资源

一粒金砂(高级)

10
 
也在学习中
 
 
 

回复

180

帖子

0

TA的资源

五彩晶圆(中级)

11
 
写的很不错,我也是断断续续的学习DSP,现在只会把它当做单片机用,还没有做过什么算法,理论知识太差了,恶补啊
 
 
 

回复

7

帖子

0

TA的资源

一粒金砂(初级)

12
 
新手,学习中,谢谢楼主!@
 
 
 

回复

1861

帖子

0

TA的资源

五彩晶圆(中级)

13
 
我还在学,所以有些东西看不明白,呵呵
个人签名有目的的学习是最有效的学习!
 
 
 

回复

46

帖子

0

TA的资源

一粒金砂(初级)

14
 
霧裏看花,看不懂,不過會繼續努力的!謝謝分享!
 
 
 

回复

8

帖子

0

TA的资源

一粒金砂(初级)

15
 

回复 楼主 大意了 的帖子

我就是初学者 现在真是无从下手 还得看看有经验的人怎么说 才好啊
 
 
 

回复

11

帖子

0

TA的资源

一粒金砂(初级)

16
 
多谢!!!!!!!!
 
 
 

回复

18

帖子

0

TA的资源

一粒金砂(中级)

17
 
虽然收藏不等于学习,但是我刚入门,还是先收藏了
 
 
 

回复

384

帖子

0

TA的资源

一粒金砂(中级)

18
 
thank you very much
 
 
 

回复

384

帖子

0

TA的资源

一粒金砂(中级)

19
 
谢谢了!!呵呵
 
 
 

回复

12

帖子

0

TA的资源

一粒金砂(初级)

20
 
学习中~~长知识的~~~
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表