1

我正在解决一个问题,我需要从 stm32w108 微控制器的闪存中读取和写入一些数据。我正在使用 dizic mb954 板,并在其上运行 contiki。我尝试通过在 .text 部分中添加一个额外的部分 .flash_store 并将(rwx)属性添加到闪存来修改链接器脚本,并使用显式声明一个数组

__attribute__((.flash_store))

问题是虽然我可以正确读取初始化的数组,但在写入时,它会退回到默认处理程序并在那里循环。

在 AVR 微控制器中,这很容易使用 PROGMEM 属性完成,stm32w108 是否有类似的解决方法?

4

1 回答 1

2

我想您必须查看微控制器的用户指南并搜索闪存外围设备。闪存外围设备将允许您在运行时写入闪存。您可能必须编写方法,例如:

bool flash_write(void *to, void *from, size_t size)
{
  // unlock flash access
  // erase flash
  // write the new data
  // lock flash access
}

查看http://www.st.com/st-web-ui/static/active/en/resource/technical/document/programming_manual/CD00280769.pdf上的“编程手册”并前往第 2.2 节。我想这就是你要找的。

可能你会发现一些已经内置闪存例程的用户库。

祝你好运!

于 2014-04-17T09:16:49.747 回答