DSP软件开发与常规的软件开发(如:VC++)有何区别

DSP软件开发与常规的软件开发(如:VC++)有何区别,第1张

这么说吧。用VC++开发应用程序,硬件几乎不用开发者管,直接调用微软做好的源文件处理就好了。而DSP这类底层的软件。差不多就是你要自已从头开始。把以前微软 *** 作系统干的活都要你自已干。DSP芯片每个寄存器都要你直接管理。 *** 作外围芯片还要写外围芯片的驱动程序,里面有许多时序之类的。反正你会VC开发。与DSP软件开发没有多大的关系。唯一不需要学的是开发语言的语法而已。编程思想也不一样。当然有VC开发的经验,后期还是有好处的。前期你就当从0开始学吧。对代码的实时性及效率要求会高很多。在PC上,多少几k个字节没有什么关系。而做底层的省下的都是成本。还要考虑抗干扰之类的。我个人觉得,一个做底层的程序员对硬件不懂的话是做不好程序的。

1 DSP是专门用于进行数学信号处理的器件,内部有许多适合做信号处理运算的单元,如乘累加(MAC),位倒序等,另外有一些DSP的功耗非常小,适合与手持设备的信号处理。

2 TI的DSP内部有:独立的MAC单元,独立的多通道DMA,多总线的内部存贮器,丰富的外设资源,低功耗,特殊译码单元,协处理器单元等等

3 这个就多啦,现在的手机,游戏机,变频空调,几乎充斥整个生活。例如,GPS中的卫星信号接收后的运算,而且得到位置信息;手机的语音、的传输都需要DSP做相应处理。

4 有许多的FPGA可以替代DSP。DSP实际上是一个CPU,只不过是有特殊运算能力的CPU;而FPGA更底层,它同时许多基础电路实现DSP运算的功能。一般来讲,DSP要灵活些,而FPGA处理速度要更快。

5 大多数DSP的寻址有专门的部件来完成(如TI的C5000),它们可以在进行算术运算或其它指令执行是同时完成地址计算。举个例子吧,C5000的DSP可以在一个时钟内完成两个地址指针的加/减/循环运算。这也是DSP能完成实时信号处理运算的一个重要原因。

6 流水线在现在的CPU中被广泛使用,不仅仅是DSP。一条指令从读取到最后执行往往需要很多步,需要不同的部件来完成。所以,每条指令在执行时都需要若干个时钟周期。但如果将这些执行部件并列起来,比如一条指令处于执行阶段,但这是前面的读指令部件,译码部件都空闲了,所以可以让它们去做下一条指令的译码,再下一条指令的读取,这就是流水线。一旦指令进入流水线,那就只需要一个时钟周期就可以完成了。

7 DSP的总线结构往往采用独立的数据空间和程序空间,也就说数据存贮器和程序存贮器都有独立的总线(数据线和地址线)做访问。另外,DSP的数据空间总线还有多组,比如,TI的C5500系列,有三套数据读总线,二套数据写总线,一套程序读写总线。数据和程序总线分离,这个是DSP的一大特点。其他的普通CPU都不这样的。但总线分离,并不一定对存贮器是分开编址。TI的C5500,C6000的存贮器,其数据和程序都是统一编址。对于这种联合编址的系统,简单地讲就是一个地址为0x1000的存贮器,如存放代码就是程序空间,使用程序总线访问;如存放数据就是数据空间,使用数据空间总线来访问。这是有DSP内部的总线机制来完成,程序员并不关心。程序员只需要明确这个地址是用来放程序的,还是数据的。

使用RE管理器可以看到在/dev/preloader里有一个preloader和dsp_bl文件,这两个文件是不能直接用来当线刷文件使用的!

一、手机安装终端模拟器

二、执行如下命令

su (获取ROOT权限)

dd if=/dev/preloader of=/mnt/sdcard2/preloaderbin bs=512c count=256 skip=4

dd if=/dev/dsp_bl of=/mnt/sdcard2/DSP_BL bs=512c count=64

命令解释:提取/dev/preloader中的 数据大小为256(128kb)跳过前面2KB字节(skip=4 具体为何要跳过前2KB 字节这里不说了,想知道的朋友可以去掉skip=4 然后提取后和原来的对比下就知道了)到/mnt/sdcard2/preloaderbin

说明:提取后用WINHEX打开preloaderbin和dsp_bl 发现末尾有很多FF FF FF和 00 0000 这是因为提取时我们不知道要提取多大字节,所以多提取了

起始华为T8950 提取preloaderbin只要104KB DSP_BL 只要25KB 为了防止漏提取所以这里的提取命令都加大了数值

只要用WINHEX删除末尾的 FF 然后保存就可以了

这么说吧

用VC开发应用程序,硬件几乎不用开发者管,直接调用微软做好的源文件处理就好了

而DSP这类底层的软件

差不多就是你要自已从头开始

把以前微软 *** 作系统干的活都要你自已干

DSP芯片每个寄存器都要你直接管理

*** 作外围芯片还要写外围芯片的驱动程序,里面有许多时序之类的

反正你会VC开发

与DSP软件开发没有多大的关系

唯一不需要学的是开发语言的语法而已

编程思想也不一样

当然有VC开发的经验,后期还是有好处的

前期你就当从0开始学吧

对代码的实时性及效率要求会高很多

在PC上,多少几k个字节没有什么关系

而做底层的省下的都是成本

还要考虑抗干扰之类的

我个人觉得,一个做底层的程序员对硬件不懂的话是做不好程序的

一、准备阶段

1、了解开发时候的需求,AD采样、通讯、外设等等;

2、了解DSP所具有的硬件配置,硬件存储器资源、外设资源、通讯接口,方便初始化;

3、软件方案;

二、代码编写

1、文件框架,一般一种功能对应一个c文件和h文件,根据11需求来;不要只放在几个文件中,以方便维护。

2、函数框架,在对应文件中添加对应功能函数,函数只需要定义函数名;

3、往函数框架中添加代码。

(1)首先添加DSP器件相关程序,比如系统时钟配置,中断函数配置,中断函数;

(2)逐块添加算法代码,原则从易到难。

DSP得软件开发流程为:将一个或多个汇编语言程序(源程序)经过汇 编与链接 ,生成COFF 格式得可执行文件,再通过软件仿真器或在线仿真器得调试,打开FlashBurn软件,新建一个cdd文件并进行设置装载FBTCout,然后再擦除和烧写Flash 去掉仿真器并复位DSP目标板来加载。

都是先从main开始。你的工程是不是带DSP/BIOS的?当main函数执行完毕后,控制权将交给DSP/BIOS内核,而DSP/BIOS里有一个是填写启动函数,内核启动后执行这个函数,dm642_init()可能是在这里被执行的。

以上就是关于DSP软件开发与常规的软件开发(如:VC++)有何区别全部的内容,包括:DSP软件开发与常规的软件开发(如:VC++)有何区别、请教关于DSP(C54x)的一些知识、如何获取制作完整线刷包需要的底层文件preloader.bin和dsp等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10625092.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-10
下一篇 2023-05-10

发表评论

登录后才能评论

评论列表(0条)

保存