shuxmpx123 发表于 2013-6-28 15:01:22

请教DSP里面memcpy()是复制多少函数到RAM里面?

memcpy((uint16_t *)&RamfuncsRunStart,(uint16_t *)&RamfuncsLoadStart, (unsigned long)&RamfuncsLoadSize);
InitFlash();//初始化Flash();
说说程序烧到FLASH里面后,需要用这个函数将重要的函数复制到RAM里面运行以加快速度;
但是我不知道这样写是到底是把整个FLASH里面的程序复制到RAM里面呢,还是只复制某几个函数? 如果是全部复制的话,RAM也没有FLASH容量大啊··
CMD文件里有:
                         LOAD_START(_RamfuncsLoadStart),
                         LOAD_END(_RamfuncsLoadEnd),
                         RUN_START(_RamfuncsRunStart),
                         LOAD_SIZE(_RamfuncsLoadSize),
这是整个FLASH里的内容吗?不解

sleet1986 发表于 2013-6-28 15:04:37

百度里面的,我也是这么理解的
LOAD_START(_RamfuncsLoadStart) 指ramfuncs这段代码的加载开始地址
LOAD_END(_RamfuncsLoadEnd),指ramfuncs这段代码的加载结束地址
意思是ramfuncs存储在哪,一般是FLASH

RUN_START(_RamfuncsRunStart),指ramfuncs这段代码的运行开始地址
意思是运行把ramfuncs拷到哪里执行~~~一般是RAM

shuxmpx123 发表于 2013-6-28 15:08:10

sleet1986 发表于 2013-6-28 15:04 static/image/common/back.gif
百度里面的,我也是这么理解的
LOAD_START(_RamfuncsLoadStart) 指ramfuncs这段代码的加载开始地址
LOAD_ ...

但是还是没有说明是 哪一个函数或者是哪几个函数倍拷贝到RAM里面了。。

NJ8888 发表于 2013-6-28 15:17:14

只拷申明为__ramfunc的函数,速度能提高的

sleet1986 发表于 2013-6-28 15:26:11

shuxmpx123 发表于 2013-6-28 15:08 static/image/common/back.gif
但是还是没有说明是 哪一个函数或者是哪几个函数倍拷贝到RAM里面了。。

CODE_SECTION(函数, "ramfuncs");把需要提高速度的代码放到ramfuncs段.

shuxmpx123 发表于 2013-6-28 15:32:38


       .def _DSP28x_usDelay
       .sect "ramfuncs"

      .global__DSP28x_usDelay
_DSP28x_usDelay:

明白了,谢谢两位,像这个函数就会被拷贝
      SUB    ACC,#1
      BF   _DSP28x_usDelay,GEQ    ;; Loop if ACC >= 0
      LRETR

quackonchen 发表于 2013-6-30 15:25:10

只要你明白了LoadStart LoadEnd RunStart LoadSize是怎么来的,就明白是什么意思了
页: [1]
查看完整版本: 请教DSP里面memcpy()是复制多少函数到RAM里面?