Board logo

标题: 在8013的FLASH中如何存放数组 [打印本页]

作者: chenwenjun    时间: 2006-11-7 17:05     标题: 在8013的FLASH中如何存放数组

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


谢谢


作者: seuafu2005    时间: 2006-11-7 17:38

把数组定义成const类型就应该自动放在flash中了
要放在特定的地址,在Codewarrior中,应该可以用Sin[]@0x....={...}的方式

作者: chenwenjun    时间: 2006-11-8 09:00

请问Sin[]后面是一个什么符号啊?在键盘上是哪一个键可以打出这个符号
作者: seuafu2005    时间: 2006-11-8 09:27

这个网站屏蔽了这个字符,就是收发email的at符号
at后面跟你要存放的地址
作者: KingZhang    时间: 2006-11-8 09:49

volatile const char Array_Name[] @0xffff =

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

0xffff前面的符号的是键盘2上面的Email中间的at符号。
作者: chenwenjun    时间: 2006-11-8 10:04

但是我在编译的时候还是有错啊,错误为:“Error:‘;’expected”,您能不能写一句完整的语句。
作者: chenwenjun    时间: 2006-11-8 16:12

如果我用@指定地址就不行,不用指定地址就可以,我用下面的语句:
const int SIN[]@0x1f00={0,1,2,....}; 就不行,这一句有什么错吗?如果我用:
const int SIN[]={0,1,2...}; 就可以,
请问:我还有什么没有做到的?
谢谢!!!

作者: seuafu2005    时间: 2006-11-8 16:17

那可能是编译器不支持at的方式
或者是指定的地址和其他什么有冲突
作者: usliwu    时间: 2006-11-20 03:19

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

作者: chenwenjun    时间: 2006-12-22 11:58

编译是可以通过,但是当我重新进入CODEWARRIOR时就不行了,因为sdm_pROM_xRAM.cmd.文件又改回原来的,把加入的2句又删掉了,又要重新加入这2句。是否又更新的板本。

作者: usliwu    时间: 2007-1-4 14:37

你用了ProcessExpert.
你所要做的是到CPU bean里, Click "Build options" Button. 在这个介面的第8行将"Generate linker file" 设为"no"。sdm_pROM_xRAM.cmd.文件就不会再被改回原来的了。
作者: jero19    时间: 2008-6-6 16:33     标题: [讨论][求助]

请问版主如何将参数定义到指定的FLASH位置?
作者: strongchen    时间: 2008-6-6 17:23

建议你打电话或写邮件到飞思卡尔技术中心试试。
作者: jero19    时间: 2008-6-11 10:31     标题: [求助]

不知该如何与他们联系,就请版主帮忙解答一下,谢谢!
作者: strongchen    时间: 2008-6-11 15:23

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

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






欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0