这么说吧。用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等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)