TI中文支持网
TI专业的中文技术问题搜集分享网站

motorware lab如何在flash中运行

在调试motorware的lab时发现都是默认在RAM中运行的!一般proj_labxx.c中都有下面这段代码:

#ifdef FLASH

 // Used for running BackGround in flash, and ISR in RAM

extern uint16_t *RamfuncsLoadStart, *RamfuncsLoadEnd, *RamfuncsRunStart;

#endif

于是我就自己在main.h中定义个一个FALSH

#define FLASH

但是编译会出错,怎么回事?难道还需要修改.cmd文件吗?

Immortal King:

错误截图如下:

在调试motorware的lab时发现都是默认在RAM中运行的!一般proj_labxx.c中都有下面这段代码:

#ifdef FLASH

 // Used for running BackGround in flash, and ISR in RAM

extern uint16_t *RamfuncsLoadStart, *RamfuncsLoadEnd, *RamfuncsRunStart;

#endif

于是我就自己在main.h中定义个一个FALSH

#define FLASH

但是编译会出错,怎么回事?难道还需要修改.cmd文件吗?

Immortal King:

回复 Immortal King:

顶上去一下,期待答案……

在调试motorware的lab时发现都是默认在RAM中运行的!一般proj_labxx.c中都有下面这段代码:

#ifdef FLASH

 // Used for running BackGround in flash, and ISR in RAM

extern uint16_t *RamfuncsLoadStart, *RamfuncsLoadEnd, *RamfuncsRunStart;

#endif

于是我就自己在main.h中定义个一个FALSH

#define FLASH

但是编译会出错,怎么回事?难道还需要修改.cmd文件吗?

Eric Fu:

回复 Immortal King:

Immortal King, 你好

正如你所说,想要在FLASH中运行需要修改CMD文件,但是不用担心,controlsuite中已经为各种型号的器件做好了,你只要在编译和连接的时候在CCS中选择一下即可。

在调试motorware的lab时发现都是默认在RAM中运行的!一般proj_labxx.c中都有下面这段代码:

#ifdef FLASH

 // Used for running BackGround in flash, and ISR in RAM

extern uint16_t *RamfuncsLoadStart, *RamfuncsLoadEnd, *RamfuncsRunStart;

#endif

于是我就自己在main.h中定义个一个FALSH

#define FLASH

但是编译会出错,怎么回事?难道还需要修改.cmd文件吗?

Immortal King:

回复 Eric Fu:

Hi Eric Fu!在motorware的lab中都已经包含了F28069F_ram_lnk.cmd(我用的MCU是28069F)文件,你说的“但是不用担心,controlsuite中已经为各种型号的器件做好了,你只要在编译和连接的时候在CCS中选择一下即可。”该怎么操作呢!?谢啦!期待你的回答!

在调试motorware的lab时发现都是默认在RAM中运行的!一般proj_labxx.c中都有下面这段代码:

#ifdef FLASH

 // Used for running BackGround in flash, and ISR in RAM

extern uint16_t *RamfuncsLoadStart, *RamfuncsLoadEnd, *RamfuncsRunStart;

#endif

于是我就自己在main.h中定义个一个FALSH

#define FLASH

但是编译会出错,怎么回事?难道还需要修改.cmd文件吗?

Immortal King:

回复 Eric Fu:

找遍了motorware的User's Guide有讲到代码可在FLASH中运行但是就是没有讲如何修改代码让代码下载到FLASH中运行的!还有看到drv.c文件中有个DRV_setupFlash函数不知道是不是类似于controlSUITE中F28069的example中Flashinit()函数,初始化FLASH的函数。

在调试motorware的lab时发现都是默认在RAM中运行的!一般proj_labxx.c中都有下面这段代码:

#ifdef FLASH

 // Used for running BackGround in flash, and ISR in RAM

extern uint16_t *RamfuncsLoadStart, *RamfuncsLoadEnd, *RamfuncsRunStart;

#endif

于是我就自己在main.h中定义个一个FALSH

#define FLASH

但是编译会出错,怎么回事?难道还需要修改.cmd文件吗?

Martin Yu:

回复 Immortal King:

这个错误主要是CMD文件中没有定义_RamfuncsLoadStart等,更改请参照controlsuite中的F28069.cmd中进行添加  

   ramfuncs            : LOAD = FLASHD,                         RUN = RAML0,                         LOAD_START(_RamfuncsLoadStart),                         LOAD_END(_RamfuncsLoadEnd),                         RUN_START(_RamfuncsRunStart),       LOAD_SIZE(_RamfuncsLoadSize),                         PAGE = 0

还有记得将.text 段定位到Flash中,如:   .text               : > FLASHA,     PAGE = 0

赞(0)
未经允许不得转载:TI中文支持网 » motorware lab如何在flash中运行
分享到: 更多 (0)