完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
接到一个客户反映:使用STM8S207R8,FLASH是64K。使用IAR编译自己的程序的时候,超出64K,编译器报错。将编译器工程下的芯片型号设置成STM8S207RB,128K,然后编译完成。直接下载程序到64K这款IC,居然成功了。然后所有功能运行都还正常。
问:1.编译器不认具体芯片的型号。这个核实过了。 2.编译器编译完成已经超过芯片自身的flash容量了,还有超出的数据单独下的。据说超出总共近20K。为什么程序还能正常运行? 3.这样做有什么风险? PS:ST这芯片有这么不靠谱吗?太神奇了,期待大神解答! |
|
相关推荐
1个回答
|
|
这个问题涉及到STM8S207R8芯片、IAR编译器和编译过程中的一些限制。首先,我们逐步分析这个问题。
1. 编译器不认具体芯片的型号。 这个问题可能是由于IAR编译器的配置或者版本问题导致的。确保使用的是最新版本的IAR编译器,并检查项目设置以确保选择了正确的芯片型号。 2. 编译器编译完成已经超过芯片自身的flash容量了,还有超出的数据单独下的。据说超出总共近20K。为什么程序还能正常运行? 这个问题可能是因为在编译过程中,编译器没有正确地限制程序的大小。虽然程序大小超过了芯片的FLASH容量,但在实际运行时,可能只使用了芯片的64K容量。这种情况下,程序仍然可以正常运行,因为实际使用的内存没有超过芯片的容量。然而,这并不意味着这是一个好的做法,因为可能会导致一些不可预见的问题。 3. 这样做有什么风险? 使用超过芯片FLASH容量的程序存在以下风险: a. 程序可能无法在其他相同型号的芯片上运行,因为它们可能没有足够的空间来存储整个程序。 b. 如果程序在运行过程中需要更多的内存,可能会导致内存溢出,从而导致程序崩溃或出现不可预测的行为。 c. 在编译过程中,编译器可能无法正确地优化程序,导致性能下降或者增加功耗。 为了避免这些问题,建议: 1. 确保使用正确版本的IAR编译器,并在项目设置中选择正确的芯片型号。 2. 在编写程序时,尽量优化代码以减少内存占用。 3. 如果程序确实需要超过64K的FLASH容量,可以考虑使用具有更大FLASH容量的芯片,如STM8S207RB。 4. 在编译过程中,确保编译器能够正确地限制程序的大小,以避免超出芯片的FLASH容量。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1627 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1550 浏览 1 评论
984 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
688 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1601 浏览 2 评论
1867浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
650浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
518浏览 3评论
536浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
506浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-24 20:49 , Processed in 0.825395 second(s), Total 80, Slave 63 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号