嵌入式C编程 - 瑞萨

时间:2015-12-10 13:04:24

标签: c arrays

我正在研究瑞萨RL78系列产品。我正在开发应用程序来处理对数据闪存的读写。

我需要写一个数组,比如int a[3] = {0,1,2};

现在我将此数组的地址传递给写入实际数据闪存的函数。但是我发现在FAL_Init()函数执行时我的数组内容被修改了。

但如果不是这样,如果我在运行时初始化我的数组,那么它似乎没有效果。

我不完全理解FAL_Init()函数内部发生了什么,因为它是一个库提供的函数,我无法访问它。

请帮助我找到可能导致此问题的原因。

我发布了我的代码

`// ptrData包含我的recived值

status = FAL_Init((__ far fal_descriptor_t *)& fal_descriptor_str)

// ptrData内容被修改

FAL_Open();

//这里有擦除命令

buffer [0] = ptrData [0]; //我在这里收到数据。

1 个答案:

答案 0 :(得分:1)

修正了问题。这是分配RAM的问题。 FAL_init()代码从RAM执行。因此,当这部分代码被执行时,如果我的数组变量存储在同一位置,那么它们就会被重写。使用链接器更改了FAL函数的分配,它解决了这个问题。谢谢大家