首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

在8013的FLASH中如何存放数组

在8013的FLASH中如何存放数组

在8013中,我想把数组SIN[]={....}存放在FLASH中,用C语言我该如何表达,我是否可以把这个表格定位在FLASH的一个特定的地址。


谢谢

好困惑
把数组定义成const类型就应该自动放在flash中了
要放在特定的地址,在Codewarrior中,应该可以用Sin[]@0x....={...}的方式
请问Sin[]后面是一个什么符号啊?在键盘上是哪一个键可以打出这个符号
好困惑
这个网站屏蔽了这个字符,就是收发email的at符号
at后面跟你要存放的地址
volatile const char Array_Name[] @0xffff =

0xffff是地址,修改成你的,如果你刷进去以后,希望通过SCI和其它的通信修改,就必需加volatile,否则编译器就优化了可能就出错.

0xffff前面的符号的是键盘2上面的Email中间的at符号。
但是我在编译的时候还是有错啊,错误为:“Error:‘;’expected”,您能不能写一句完整的语句。
好困惑
如果我用@指定地址就不行,不用指定地址就可以,我用下面的语句:
const int SIN[]@0x1f00={0,1,2,....}; 就不行,这一句有什么错吗?如果我用:
const int SIN[]={0,1,2...}; 就可以,
请问:我还有什么没有做到的?
谢谢!!!
好困惑
那可能是编译器不支持at的方式
或者是指定的地址和其他什么有冲突
CodeWarrior7.x以上支持将常数或常数数组方在flash中.关键是在定义数组时要在定义的常量前加一个说明__pmem (两个下划线+pmem),另外link-command 文件也要修改,文件各是以 .cmd 结尾的。例如 sdm_pROM_xRAM.cmd.

__pmem const int sin_table[256]= {0,101,201,302,}
int X,Y;

void main(void)
{

/*** Processor Expert internal initialization. DON'T REMOVE THIS CODE!!! ***/
PE_low_level_init();
/*** End of Processor Expert internal initialization. ***/

/* Write your code here */
Y = 5;
X=sin_table[Y];从flash中取一个数给到X

for(;;) {}
}

找到link_command 文件中以.ApplicationCode :开始,以>p_Code结尾的部分,加入2句

* (.const.data.pmem) # Comments
* (.const.data.char.pmem) # comments

下面是例子

.ApplicationCode :
{

F_Pcode_start_addr = .;

# .text sections
OBJECT (F_EntryPoint, Cpu.c) # The function _EntryPoint have to be placed at the beginning of the code
# section for proper functionality of the serial bootloader.
* (.text)
* (rtlib.text)
* (startup.text)
* (fp_engine.text)
* (user.text)
* (.const.data.pmem) # line is added by users
* (.const.data.char.pmem) # line is added by users

F_Pcode_end_addr = .;

# save address where for the data start in pROM
. = ALIGN(2);
__pROM_data_start = .;

} > .p_Code
编译是可以通过,但是当我重新进入CODEWARRIOR时就不行了,因为sdm_pROM_xRAM.cmd.文件又改回原来的,把加入的2句又删掉了,又要重新加入这2句。是否又更新的板本。
好困惑
你用了ProcessExpert.
你所要做的是到CPU bean里, Click "Build options" Button. 在这个介面的第8行将"Generate linker file" 设为"no"。sdm_pROM_xRAM.cmd.文件就不会再被改回原来的了。

[讨论][求助]

请问版主如何将参数定义到指定的FLASH位置?
建议你打电话或写邮件到飞思卡尔技术中心试试。
海纳百川  有容乃大

[求助]

不知该如何与他们联系,就请版主帮忙解答一下,谢谢!

这里列出了他们的联系方式:

http://www.freescale.com.cn/Support/tech_support.asp#phone-assisted

海纳百川  有容乃大
返回列表