打印
[MCU]

写flash和仿真器运行结果不同

[复制链接]
239|18
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jiaxw|  楼主 | 2019-7-30 22:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
huangchui| | 2019-7-30 22:11 | 只看该作者
楼主做什么东西?不妨详细说说

使用特权

评论回复
板凳
jiaxw|  楼主 | 2019-7-30 22:12 | 只看该作者
我在dsp中做一个滤波,数据在dsp中滤波后将数据发到电脑上,计算机上有单独的软件进行作图处理。

使用特权

评论回复
地板
zhanghqi| | 2019-7-30 22:13 | 只看该作者
问题出在哪了

使用特权

评论回复
5
jiaxw|  楼主 | 2019-7-30 22:15 | 只看该作者
使用仿真器时,dsp中加滤波后的波形正确的(使用28335_RAM_Lnk.cmd),但是在写进flash后,独立运行运行时波形就成直线啦

使用特权

评论回复
6
wyjie| | 2019-7-30 22:16 | 只看该作者


成直线啦?

使用特权

评论回复
7
jiaxw|  楼主 | 2019-7-30 22:18 | 只看该作者
使用28335.cmd

使用特权

评论回复
8
dengdc| | 2019-7-30 22:23 | 只看该作者
进行滤波写进flash运行呢

使用特权

评论回复
9
jiaxw|  楼主 | 2019-7-30 22:25 | 只看该作者
你是说使用同一个cmd(28335.cmd)在把程序中滤波注释掉后?

使用特权

评论回复
10
jiaxw|  楼主 | 2019-7-30 22:28 | 只看该作者
正常

使用特权

评论回复
11
jiaxw|  楼主 | 2019-7-30 22:29 | 只看该作者

28335.cmd:
MEMORY
{
   
PAGE 0:    /* Program Memory */
           /* Memory (RAM/FLASH/OTP) blocks can be moved to PAGE1 for data allocation */
   ZONE0       : origin = 0x004000, length = 0x001000     /* XINTF zone 0 */
   RAML0       : origin = 0x008000, length = 0x001500     /* on-chip RAM block L0 */
   RAML1       : origin = 0x009500, length = 0x001000     /* on-chip RAM block L1 */
   RAML2       : origin = 0x00A500, length = 0x001000     /* on-chip RAM block L2 */
   RAML3       : origin = 0x00B500, length = 0x000500     /* on-chip RAM block L3 */
   /*ZONE6       : origin = 0x0100000, length = 0x100000*/    /* XINTF zone 6 */
   /*ZONE7A      : origin = 0x0200000, length = 0x00FC00*/    /* XINTF zone 7 - program space */
   ZONE7A      : origin = 0x0200000, length = 0x080000    /* XINTF zone 7 - program space */
   FLASHH      : origin = 0x300000, length = 0x008000     /* on-chip FLASH */
   FLASHG      : origin = 0x308000, length = 0x008000     /* on-chip FLASH */
   FLASHF      : origin = 0x310000, length = 0x008000     /* on-chip FLASH */
   FLASHE      : origin = 0x318000, length = 0x008000     /* on-chip FLASH */
   FLASHD      : origin = 0x320000, length = 0x008000     /* on-chip FLASH */
   FLASHC      : origin = 0x328000, length = 0x008000     /* on-chip FLASH */
   FLASHA      : origin = 0x338000, length = 0x007F80     /* on-chip FLASH */
   CSM_RSVD    : origin = 0x33FF80, length = 0x000076     /* Part of FLASHA.  Program with all 0x0000 when CSM is in use. */
   BEGIN       : origin = 0x33FFF6, length = 0x000002     /* Part of FLASHA.  Used for "boot to Flash" bootloader mode. */
   CSM_PWL     : origin = 0x33FFF8, length = 0x000008     /* Part of FLASHA.  CSM password locations in FLASHA */
   OTP         : origin = 0x380400, length = 0x000400     /* on-chip OTP */
   ADC_CAL     : origin = 0x380080, length = 0x000009     /* ADC_cal function in Reserved memory */
   
   IQTABLES    : origin = 0x3FE000, length = 0x000b50     /* IQ Math Tables in Boot ROM */
   IQTABLES2   : origin = 0x3FEB50, length = 0x00008c     /* IQ Math Tables in Boot ROM */  
   FPUTABLES   : origin = 0x3FEBDC, length = 0x0006A0     /* FPU Tables in Boot ROM */
   ROM         : origin = 0x3FF27C, length = 0x000D44     /* Boot ROM */        
   RESET       : origin = 0x3FFFC0, length = 0x000002     /* part of boot ROM  */
   VECTORS     : origin = 0x3FFFC2, length = 0x00003E     /* part of boot ROM  */
PAGE 1 :   
   
   BOOT_RSVD   : origin = 0x000000, length = 0x000050     /* Part of M0, BOOT rom will use this for stack */
   RAMM0       : origin = 0x000050, length = 0x0003B0     /* on-chip RAM block M0 */
   RAMM1       : origin = 0x000400, length = 0x000400     /* on-chip RAM block M1 */
   RAML4       : origin = 0x00C000, length = 0x001000     /* on-chip RAM block L1 */
   RAML5       : origin = 0x00D000, length = 0x001000     /* on-chip RAM block L1 */
   RAML6       : origin = 0x00E000, length = 0x004000     /* on-chip RAM block L1 */
   RAML7       : origin = 0x013000, length = 0x001000     /* on-chip RAM block L1 */
   /*ZONE7B      : origin = 0x20FC00, length = 0x000400*/     /* XINTF zone 7 - data space */
   ZONE7B      : origin = 0x280000, length = 0x080000     /* XINTF zone 7 - data space */
   FLASHB      : origin = 0x330000, length = 0x008000     /* on-chip FLASH */
}

SECTIONS
{

   /* Allocate program areas: */
   .cinit              : > FLASHH      PAGE = 0
   .pinit              : > FLASHH,     PAGE = 0
   .text               : > FLASHH      PAGE = 0
   codestart           : > BEGIN       PAGE = 0
   ramfuncs            : LOAD = FLASHD,
                         RUN = RAML0,
                         LOAD_START(_RamfuncsLoadStart),
                         LOAD_END(_RamfuncsLoadEnd),
                         RUN_START(_RamfuncsRunStart),
                         PAGE = 0
   csmpasswds          : > CSM_PWL     PAGE = 0
   csm_rsvd            : > CSM_RSVD    PAGE = 0
   
   /* Allocate uninitalized data sections: */
   .stack              : > RAMM1       PAGE = 1
   //.ebss               : > RAML4       PAGE = 1
   .ebss            : > ZONE7B,    PAGE = 1
   .esysmem            : > RAMM1       PAGE = 1
   /* Initalized sections go in Flash */
   /* For SDFlash to program these, they must be allocated to page 0 */
   .econst             : > FLASHA      PAGE = 0
   .switch             : > FLASHA      PAGE = 0   
      
    /***********2011-7-1 added by charlie********fir lvbo**************/增加的滤波
   firdb     : > RAML6   PAGE = 1
   firfilt    : > RAML4   PAGE = 1
   //coefffilt    : > RAML7   PAGE = 1
   sigIn    : > RAML7   PAGE = 1
   sigOut    : > RAML5   PAGE = 1   
   /***********2011-7-1 added by charlie********fir lvbo**************/
   /* Allocate IQ math areas: */
   IQmath              : > FLASHC      PAGE = 0                  /* Math Code */
   IQmathTables     : > IQTABLES,  PAGE = 0, TYPE = NOLOAD
   IQmathTables2    : > IQTABLES2, PAGE = 0, TYPE = NOLOAD
   FPUmathTables    : > FPUTABLES, PAGE = 0, TYPE = NOLOAD
         
   /* Allocate DMA-accessible RAM sections: */
   DMARAML4         : > RAML4,     PAGE = 1
   DMARAML5         : > RAML5,     PAGE = 1
   DMARAML6         : > RAML6,     PAGE = 1
   DMARAML7         : > RAML7,     PAGE = 1
   
   /* Allocate 0x400 of XINTF Zone 7 to storing data */
   ZONE7DATA        : > ZONE7B,    PAGE = 1
   
   FFTBUF     :  >   RAML6,  PAGE = 1
  
   
   .reset              : > RESET,      PAGE = 0, TYPE = DSECT
   vectors             : > VECTORS     PAGE = 0, TYPE = DSECT
   
   /* Allocate ADC_cal function (pre-programmed by factory into TI reserved memory) */
   .adc_cal     : load = ADC_CAL,   PAGE = 0, TYPE = NOLOAD
}

使用特权

评论回复
12
liliang9554| | 2019-7-30 22:30 | 只看该作者
根据sprc095的规则试下把代码从flash Load到RAM运行试下效果

使用特权

评论回复
13
jiaxw|  楼主 | 2019-7-30 22:32 | 只看该作者

下面这段是不是把代码从flash拷贝到ram中运行呢?
ramfuncs            : LOAD = FLASHD,
                         RUN = RAML0,
                         LOAD_START(_RamfuncsLoadStart),
                         LOAD_END(_RamfuncsLoadEnd),
                         RUN_START(_RamfuncsRunStart),
                         PAGE = 0

使用特权

评论回复
14
wuhany| | 2019-7-30 22:33 | 只看该作者
存储分配设置看一下

使用特权

评论回复
15
jiaxw|  楼主 | 2019-7-30 22:34 | 只看该作者

#define FIR_ORDER 2
#define SIGNAL_LENGTH (FIR_ORDER + 1)*2

#pragma DATA_SECTION(firFP, "firfilt");
FIR_FP firFP = FIR_FP_DEFAULTS;

//#pragma DATA_SECTION(dbuffer, "ZONE7DATA");
#pragma DATA_SECTION(dbuffer, "firdb");
float dbuffer[FIR_ORDER + 1];

//#pragma DATA_SECTION(sigIn, "ZONE7DATA");
//#pragma DATA_SECTION(sigOut, "ZONE7DATA");
#pragma DATA_SECTION(sigIn, "sigIn");
#pragma DATA_SECTION(sigOut, "sigOut");
float sigIn[256];
float sigOut[256];

#pragma DATA_SECTION(coeff, "ZONE7DATA");
float  coeff[FIR_ORDER + 1] = FIR_FP_LPF3;



#define FFT_SIZE        256
#define FFT_STAGES        8

#pragma DATA_SECTION(InBuffer,"FFTBUF");
float32 InBuffer[FFT_SIZE];
#pragma DATA_SECTION(OutBuffer,"ZONE7DATA");
float32 OutBuffer[FFT_SIZE];
#pragma DATA_SECTION(TwiddleBuffer,"ZONE7DATA");
float32 TwiddleBuffer[FFT_SIZE];
#pragma DATA_SECTION(MagBuffer,"ZONE7DATA");
float32 MagBuffer[FFT_SIZE/2];
RFFT_F32_STRUCT fft;

#pragma DATA_SECTION(InBuffer1,"FFTBUF");
float32 InBuffer1[FFT_SIZE];
#pragma DATA_SECTION(OutBuffer1,"ZONE7DATA");
float32 OutBuffer1[FFT_SIZE];
#pragma DATA_SECTION(TwiddleBuffer1,"ZONE7DATA");
float32 TwiddleBuffer1[FFT_SIZE];
#pragma DATA_SECTION(MagBuffer1,"ZONE7DATA");
float32 MagBuffer1[FFT_SIZE/2];
RFFT_F32_STRUCT fft1;

#pragma DATA_SECTION(InBuffer2,"FFTBUF");
float32 InBuffer2[FFT_SIZE];
#pragma DATA_SECTION(OutBuffer2,"ZONE7DATA");
float32 OutBuffer2[FFT_SIZE];
#pragma DATA_SECTION(TwiddleBuffer2,"ZONE7DATA");
float32 TwiddleBuffer2[FFT_SIZE];
#pragma DATA_SECTION(MagBuffer2,"ZONE7DATA");
float32 MagBuffer2[FFT_SIZE/2];
RFFT_F32_STRUCT fft2;

#pragma DATA_SECTION(InBuffer3,"FFTBUF");
float32 InBuffer3[FFT_SIZE];
#pragma DATA_SECTION(OutBuffer3,"ZONE7DATA");
float32 OutBuffer3[FFT_SIZE];
#pragma DATA_SECTION(TwiddleBuffer3,"ZONE7DATA");
float32 TwiddleBuffer3[FFT_SIZE];
#pragma DATA_SECTION(MagBuffer3,"ZONE7DATA");
float32 MagBuffer3[FFT_SIZE/2];

使用特权

评论回复
16
zhanghqi| | 2019-7-30 22:36 | 只看该作者
什么意思?不是很明白你说的什么,能再解释一下这个现象吗

使用特权

评论回复
17
jiaxw|  楼主 | 2019-7-30 22:37 | 只看该作者
用仿真器做得好好的,波形都是正常的,但是一旦去掉仿真器,写入flash运行就出现波形不正常的现象了

使用特权

评论回复
18
zhenykun| | 2019-7-30 22:40 | 只看该作者

脱机失败。
莫非没有共地? reset没有上拉?

使用特权

评论回复
19
jiaxw|  楼主 | 2019-7-30 22:41 | 只看该作者

唉,还是没有什么结果,算了,先结贴吧,多谢大家啦

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

825

主题

9762

帖子

4

粉丝