STM8S207RB 64K的芯片烧进去近100K的程序!
接到一个客户反映:使用STM8S207R8,FLASH是64K。使用IAR编译自己的程序的时候,超出64K,编译器报错。将编译器工程下的芯片型号设置成STM8S207RB,128K,然后编译完成。直接下载程序到64K这款IC,居然成功了。然后所有功能运行都还正常。问:1.编译器不认具体芯片的型号。这个核实过了。
2.编译器编译完成已经超过芯片自身的flash容量了,还有超出的数据单独下的。据说超出总共近20K。为什么程序还能正常运行?
3.这样做有什么风险?
PS:ST这芯片有这么不靠谱吗?太神奇了,期待大神解答!
RE:STM8S207RB 64K的芯片烧进去近100K的程序!
有风险,你可以看一下MAP文件,是哪些函数超出了范围,在调用这些函数的时候会发生异常。可以开优化,让编译器帮你优化一下,这样减少代码。
RE:STM8S207RB 64K的芯片烧进去近100K的程序!
问题是客户反映他下载超过最大芯片存储空间的程序了,下载的时候,编译器难道不会报错吗?另外他反映所有功能都正常,我很奇怪。求大神解答。另外,读写空间 read and write memory 这个空间由什么决定?哪一份稳定比较详细的描述了这个?RE:STM8S207RB 64K的芯片烧进去近100K的程序!
这个可以自己测试一下,另外,你说的100K是bin文件还是HEX?如果是HEX的话,大小应该在50K左右。因为同系列的芯片寄存器是一样的,而寄存器一般都是在RAM中,所以不会发生寄存器操作不成功的问题。
具体写入的空间可以看手册的FALSH这一章。
回复:STM8S207RB 64K的芯片烧进去近100K的程序!
回复第 4 楼 于2014-09-22 09:37:47发表:这个可以自己测试一下,另外,你说的100K是bin文件还是HEX?
如果是HEX的话,大小应该在50K左右。因为同系列的芯片寄存器是一样的,而寄存器一般都是在RAM中,所以不会发生寄存器操作不成功的问题。
具体写入的空间可以看手册的FALSH这一章。
文件是HEX文件,但大小已经为256k,另外请问下,MAP文件该如何查看(编译器为IAR)。。。麻烦了
RE:STM8S207RB 64K的芯片烧进去近100K的程序!
我用的是KEIL.一般都在工程编译输出文件夹下面.或者右键工程查看MAP文件.RE:STM8S207RB 64K的芯片烧进去近100K的程序!
你可以在Debug文件夹里面进行查看,你也可以运用网友提供的文件,对STVD编译的flash ,ram进行查看。RE:STM8S207RB 64K的芯片烧进去近100K的程序!
https://www.stmcu.org.cn/bbs/article_394_596025.html我刚刚发的帖子,你可以看看。
页:
[1]