Board logo

标题: 这样做,为什么不能在指定的FLASH地址写数据 [打印本页]

作者: johdon23    时间: 2008-9-17 14:23     标题: 这样做,为什么不能在指定的FLASH地址写数据

unsigned long int flash_addr=0xFCA000;
*(volatile unsigned long int *)flash_addr= 0x8899;

结果0xFCA000处仍是0xFF。 9S12XDT512,BANKED模式


作者: fayefayehoo    时间: 2008-9-17 15:23

const unsigned int myvalue @0x4000 = 0x55AA;

我在xep100上是这么写的,没什么问题。

试试按分页的方式来写一下FLASH,另外,查看地址的时候,默认的是逻辑地址"0xFCA000'L",你可以到"0xFCA000'G"看一下


作者: johdon23    时间: 2008-9-17 16:26

但是我想往任意指定的FLASH地址写入数据,能使用指针的话是最方便的。我不可能每写一个数据都要定义一个变量再指定一个地址吧。
作者: fayefayehoo    时间: 2008-9-18 09:15

如果要写连续区域的数据的话,就用数组,FLASH的数据应该是在烧写的时候就定死了的。

const U16 myTable[128] @0x4003 =
{/* 0 -- */ 0x0000u, 0x0000u, 0x0000u, 0x0000u, 0x0000u, 0x0000u, 0x0000u, 0x0000u,
/* 8 -- */ 0x0000u, 0x0000u, 0x0000u, 0x0000u, 0x0000u, 0x0000u, 0x0000u, 0x0000u,
/* 16 -- */ 0x0000u, 0x0000u, 0x0000u, 0x0000u, 0x0000u, 0x0000u, 0x0000u, 0x0000u,
/* 24 -- */ 0x0000u, 0x0000u, 0x0000u, 0x0000u, 0x0000u, 0x0000u, 0x0000u, 0x0000u,
/* 32 -- */ 0x0000u, 0x0000u, 0x0000u, 0x0000u, 0x0000u, 0x0000u, 0x0000u, 0x0000u,
/* 40 -- */ 0x0000u, 0x0000u, 0x0000u, 0x0000u, 0x0000u, 0x0000u, 0x0000u, 0x0000u,
/* 48 -- */ 0x0000u, 0x0000u, 0x0000u, 0x0000u, 0x0000u, 0x0000u, 0x0000u, 0x0000u,
/* 56 -- */ 0x0000u, 0x0000u, 0x0000u, 0x0000u, 0x0000u, 0x0000u, 0x0000u, 0x0000u,
/* 64 -- */ 0x0000u, 0x0000u, 0x0000u, 0x0000u, 0x0000u, 0x0000u, 0x0000u, 0x0000u,
/* 72 -- */ 0x0000u, 0x0000u, 0x0000u, 0x0000u, 0x0000u, 0x0000u, 0x0000u, 0x0000u,
/* 80 -- */ 0x0000u, 0x0000u, 0x0000u, 0x0000u, 0x0000u, 0x0000u, 0x0000u, 0x0000u,
/* 88 -- */ 0x0000u, 0x0000u, 0x0000u, 0x0000u, 0x0000u, 0x0000u, 0x0000u, 0x0000u,
/* 96 -- */ 0x0000u, 0x0000u, 0x0000u, 0x0000u, 0x0000u, 0x0000u, 0x0000u, 0x0000u,
/* 104 -- */ 0x0000u, 0x0000u, 0x0000u, 0x0000u, 0x0000u, 0x0000u, 0x0000u, 0x0000u,
/* 112 -- */ 0x0000u, 0x0000u, 0x0000u, 0x0000u, 0x0000u, 0x0000u, 0x0000u, 0x0000u,
/* 120 -- */ 0x0000u, 0x0000u, 0x0000u, 0x0000u, 0x0000u, 0x0000u, 0x0000u, 0x0000u,
};


作者: johdon23    时间: 2008-9-18 13:27

但是那样只能定义一个数组,并在初始化的时候将值写入。可我需要经常修改FLASH的值又该怎么做?
作者: strongchen    时间: 2008-9-18 13:37

要在程序运行时修改FLASH,必须按照FLASH擦写操作的步骤进行操作。




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