我正在研究瑞萨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]; //我在这里收到数据。
答案 0 :(得分:1)
修正了问题。这是分配RAM的问题。 FAL_init()代码从RAM执行。因此,当这部分代码被执行时,如果我的数组变量存储在同一位置,那么它们就会被重写。使用链接器更改了FAL函数的分配,它解决了这个问题。谢谢大家