2015-12-10 34 views
0

我正在研发瑞萨RL78系列。我正在开发应用程序来处理读取和写入数据闪存。嵌入式C编程 - 瑞萨

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

现在我通过这个数组的地址,以便写入实际数据闪存的功能。但是我发现当FAL_Init()函数被执行时,我的数组内容被修改了。

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

我不完全明白FAL_Init()函数里面发生了什么,因为它是库提供的函数,我无法访问它。

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

我张贴我的代码

`// ptrData包含我recived值

状态= FAL_Init((__远fal_descriptor_t *)& fal_descriptor_str)

// ptrData内容被修改

FAL_Open();

//有擦除这里命令

缓冲器[0] = ptrData [0]; //我正在接收数据here.`

+0

什么'FAL_Init'返回?它成功或返回一个错误?请发布您的代码。 – LPs

+0

你可以发布你的函数调用:'FAL_Init()','FAL_Open()'和'FAL_Execute()'? – purplepsycho

+0

您正在将Flash文字的文字数据写入Flash页面吗?我可以看到一个问题.. –

回答

1

固定的问题。这是分配RAM的问题。 FAL_init()代码从RAM中执行。因此,当这部分代码被执行时,如果我的数组变量存储在相同的位置,则它们正在被写入。用连接器改变了FAL函数的分配,并解决了这个问题。谢谢大家