286116049 发表于 2008-10-13 19:19:40

DSP为什么要在.cmd文件里面重新配置存储器【恢复】

学了一段时间DSP了,但是对它的存储器配置一直没搞明白:在5402中,它有16K的DARAM、4K的ROM、4K的程序ROM和4K程序/数据。16K的DARAM、4K的ROM是它的内存和程序存储器,而4K的程序ROM和4K程序/数据是什么呢?也是ROM类型的存储器吗?还是EPROM或者FLASH呢?并且,既然在DSP中已经有了确定的存储器了,那没为什么还要在.cmd文件里面重新配置存储器呢?刚刚开始学DSP,问题有点菜,请高手帮忙解释解释,解释完了再笑话小弟!!呵呵,不胜感激!!

286116049 发表于 2008-10-14 20:26:19

    自己解释一下吧,自己的理解,如果不对,还请多多指教。



    MAP 应该就是存储器映射图吧,根据存储器映射图配置相应的存储器。又是犯了一个低级的错误,英语水平必须提高了。



    .map文件就是用来说明程序及数据代码在存储器的的绝对物理位置的文件。链接后生成的.map文件中给出了存储器的配置情况、程序文本段、数据段、堆栈段、向量段在存储器中的定位表,以及全局符号在存储器中的位置。

286116049 发表于 2008-10-14 11:09:57

    谢谢xuande大哥。dsp存储器的配置确实把我这个初学者弄得晕头转向,一些原理的确很简单,但是脑子里面却怎么也绕不过这个弯儿来。谢谢你的指点,我的脑子现在开始逐渐清晰起来了。



    以下是我对dsp可寻址空间和其存储空间的理解,新手入门,如果有不对的地方还请大家多多指教,谢谢。



    dsp共有192k字的可寻址空间,分为64k的程序存储空间,64k的数据存储空间和64k的I/O空间。存储空间是概念上的,指出此款dsp的寻址能力,而ROM、RAM是物理存在的,不一定也要各64k,存储器的大小根据不同型号的dsp各有不同。而寻址空间的具体地址dsp并没有完全分配到各个存储器,需要用户根据自己系统存储器情况进行分配,当然这一点也为用户提供了很大的灵活性,所以用户需要在cmd文件中配置存储器。



    用户的程序代码和数据都是存储在ROM中,只是用户通过sections的分配,将代码和数据分别存储到不同的存储空间,这样可以使存储器的分配更加结构化,便于dsp的寻址,从而大大提高dsp的运行效率。当dsp运行时在通过bootloader自动把ROM中的程序代码和数据放到RAM中运行。



    还有两个个问题就是,根据什么来确定cmd文件中不同的页和不同的段的起始地址和存储空间的长度呢?还有MEMORY MAP和MAP又是什么呢?

    

    





本贴被 286116049 编辑过,最后修改时间:2008-10-14,13:02:32.

xuande 发表于 2008-10-13 21:56:47

刚从单片机进入DSP的人都会有类似的困惑。我开始也差不多。

电路对存储器的要求,有两点很重要:一是断电后仍然能够保存数据,二是速度足够快。当然,速度是相对的,需求也是在变化的。ROM或FLASH等非易失存储器,读取速度一般为50~70ns,在单片机和某些DSP上运行程序是够用的,运行数据就可能有点慢,在某些DSP上无论运行程序还是存储数据,都显得太慢了,只剩下“不丢失”这一个好处。而易失型存储器RAM之类,速度一般是10ns左右,虽然快,但缺点也是致命的:断电就丢数据。目前人类的技术水平,还不能把“足够快”和“不丢数据”统一到一个器件上。即使能做到这一点,也会有其他因素的制约,如成本、功耗、通用性等;即使同样是非易失存储器,其速度也会有差别。所以,很多场合里要配备两种存储器:非易失的(断电后数据不丢失),和易失的(断电后数据就丢了),甚至划分得更细,各有各的用途。

在DSP中,往往会给用户提供多种存储器。非易失的,有ROM、FLASH、OTP等;易失的有SARAM、DARAM等。由用户根据它们的不同特点,结合自己的需要,通过CMD文件来灵活地配置。芯片提供的存储器资源,并不是一定要用,不管它就行了,全由用户自己安排。

非易失存储器,往往用来存储程序代码和常数表之类;易失型存储器,既可以存程序代码,以便高速地运行程序(高速地读取代码),也可以存储数据,用于数据的交换,全靠用户自己决定。有了CMD文件,这种配置可以很灵活地实现。(RAM存储程序,这一点容易把初学者搞糊涂。)

如果有一天,技术足够进步了,能把“快”和“不丢失”统一起来,那将是革_命性的。
页: [1]
查看完整版本: DSP为什么要在.cmd文件里面重新配置存储器【恢复】