0

我希望使用某些值初始化 eeprom,但它没有按预期工作。我究竟做错了什么:

来自我在 IAR 中的 .icf 文件

define symbol __region_EEPROM_start__ = 0x08080030;
define symbol __region_EEPROM_end__ = 0x080807FF;
..
define region EEPROM_region = mem:[from __region_EEPROM_start__ to __region_EEPROM_end__];
..
place in EEPROM_region  {rw section .eeprom};

在我的代码中:

__root char dataE[] @ ".eeprom" = {0xFF};
int
main (void)
{

  init ()

但是 eeprom 没有正确初始化,我在调试模式下得到的只是:

0x08080000 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x08080010 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x08080020 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x08080030 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
4

1 回答 1

0

默认情况下,编译器可以将 EEPROM 初始化为零。要初始化为不同的值,您必须单独编写它然后加载它。或在初始化部分的 main 中执行此操作。

于 2018-04-19T19:40:15.143 回答