Board logo

标题: 请问:SMAC4.1有没有读写和擦除flash的接口函数? [打印本页]

作者: yolandazhao    时间: 2006-10-19 12:02     标题: 请问:SMAC4.1有没有读写和擦除flash的接口函数?

我现在在smac4.1上做开发,由于需要往flash里存一个地址,然后还要读出来,有时也需要擦除再重写,不知道smac4.1有没有提供相应的函数接口?我找了一下,但是没有找到。


如果有的话,麻烦告诉一声在哪个文件里?或者函数的名称和参数?


如果没有的话,能不能给推荐一些资料?


由于初次接触,很多不明白的,我在一些文档上只找到了如何写和擦除,但是没有找到有关读flash的内容,麻烦高手给指点一下!谢谢


 


 


作者: strongchen    时间: 2006-10-19 12:08

读FLASH就当作一般的内存地址去读就是了,与读RAM没什么区别。
作者: yolandazhao    时间: 2006-10-19 13:05

哦,这么读啊,谢了
再麻烦问一下:往flash写的时候怎么确定哪些地址没有被占用呢?用什么工具或者从什么地方可以查到啊?

作者: strongchen    时间: 2006-10-19 13:44

一般来说,读出的内容如果是0xFF,则说明FLASH是空的,如果不是0xFF,则FLASH不空。但是,一个FLASH地址中的数据是否有效,还是要由应用软件本身来确定。
作者: yolandazhao    时间: 2006-10-19 16:19

那如果不从读得得结果判断,有其它方法可以知道哪些是空地址吗?我不是要写入确定的某个地址的话,而是只要是个空地址就可以,一个个从读得的结果来判断比较麻烦啊?
谢了!
作者: strongchen    时间: 2006-10-19 16:47

这就纯粹是应用软件的事了。当然也可以在PRM文件中定义一块FLASH区单独使用。
作者: yolandazhao    时间: 2006-10-19 18:24

在PRM文件中定义一块FLASH区单独使用?怎么定义啊?
好像有的芯片的map文件里可以看到用了哪些地址,这个不行啊?
作者: yolandazhao    时间: 2006-10-19 18:28

flash的读写操作的接口函数,在用的时候是不是和一般的函数调用一样啊?我自己写了个初始话函数:
void InitFlash(void)
{
FSTAT_FACCERR=1;
FSTAT_FPVIOL=1;
FCDIV = 39;
}
当在主程序的初始化部分调用此函数时,程序就不能正常运行,我写的是个通过串口收发数据的应用,可以发送数据但是不能接收,不知道为什么?请指教!
作者: strongchen    时间: 2006-10-20 10:11

应该是你的串口通讯程序的问题,与FLASH没有关系。你可以用PE生成FLASH操作代码作为参考。
作者: yolandazhao    时间: 2006-10-20 11:08

但是不加初始化flash和flash操作函数的话,就好着呢?
作者: strongchen    时间: 2006-10-20 15:17

对FLASH进行操作时,由于FLASH上要加高电压,所以对FLASH操作的程序要调入RAM中运行,此时FLASH中的其他程序都无法执行了。
作者: yolandazhao    时间: 2006-10-20 15:50

呵呵,怎么是加高电压啊?不明白啊
我现在在用smac自带的flash.h头函数里的下面两个宏:
#define Page_EraseAcc PGMAcc[21]=0x40; temp = ((unsigned char(*)(unsigned int))(PGMAcc))
#define Program_ByteAcc PGMAcc[21]=0x20; temp = ((unsigned char(*)(unsigned int, unsigned char))(PGMAcc))

调用擦除宏的时候,程序就不正常了,也跟踪不了,设置不了断点,提示是:不能设置断点,不知道是什么原因?用这两个宏有什么条件要求吗?
另外:写flash之前一定要擦除吗?不擦除的时候,我这有这种现象:不连调试器的话,就写不了,连上调试器,通过 程序调试就可以写进去,怎么回事啊?
作者: yolandazhao    时间: 2006-10-21 11:17

斑竹给指导一下啊,真的很是晕啊~~~
作者: strongchen    时间: 2006-10-24 11:04

那你要看一下这个宏的程序到底是怎样执行的。另外我说过了,当对FLASH进行擦、写的操作时,程序是要调入RAM中运行的,此时FLASH中的程序已不再运行了,你当然设置不了断点。




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0