lb0857 发表于 2019-11-6 21:59:16

单片机实际可用的程序存储空间的问题

在用c8051f350单片机做温度采集和发送的项目,在项目的进展中,为不使得程序所占空间超过单片机的容量(8K),逐步的添加功能,但当程序写到6.6K时,程序便开始出现问题,程序执行一次后便无法再次执行. 说明FLASH擦除出现了问题,难道此单片机的真正可用容量只有这么大吗?
      减小几百个字节后,程序可以运行,但AD采集温度前两个通道出现错误;
       再减小几个字节,程序运作正常,温度采集也正常。
   why?标称8KFLASH的单片机可用空间仅仅是6.6K么?目前程序所占空间为:
    Program Size: data=79.4 xdata=712 code=6613;
    这时候正常,再增加程序会出现意想不到的错误·······
***************************************************************
这是一位网友的帖子,ms没有一个满意的答案, 前几天俺也遇到类似的问题请问 大家有没有遇到这样的坑是怎么爬出来的.

tomzbj 发表于 2019-11-6 22:11:39

没用过c8051。。。我把65536字节的stm32写到过65520还是多少,也没问题啊。不过之后就换128k的了。

wye11083 发表于 2019-11-6 22:20:46

可能编译器出bug了。我之前是AVR代码超过8KB之后开始出现各种异常情况,折腾一段时间无果切换riscv了。。

wmm20031015 发表于 2019-11-6 22:43:57

应该不会,看一下MAP文件

zhouqw1979 发表于 2019-11-6 22:44:11

c8051应该最后512bytes不让用,Flash用满也没出现问题

qd118118 发表于 2019-11-6 22:47:06

相当古老的片子了,不知现在价格如何?

wincom 发表于 2019-11-6 22:58:51

我用过C8051F410和411,是量产的产品(每月差不多能k的量吧),写得满满的,没问题啊
后来是因为要增加代码,优化、压缩后还是几乎用完Flash,所以才改了STM32

wye11083 发表于 2019-11-7 07:16:54

wincom 发表于 2019-11-6 22:58
我用过C8051F410和411,是量产的产品(每月差不多能k的量吧),写得满满的,没问题啊
后来是因为要增加代码 ...

哈哈,8位机代码量还真不一定比32位机少多少。反而32位机的压缩指令集吊打8位机。

lcw_swust 发表于 2019-11-7 08:38:42

看楼主的意思,程序中有对flash的擦除操作?
是把flash当作EEPROM使用么?
万一地址与代码段有重叠自然是会把有代码的地方给擦掉的。

yangbo18416 发表于 2019-11-7 09:04:26

如果有对片内Flash的读写的操作,是不是这些函数的区域超过规定的地址。有些芯片对于操作flash的函数的地址有要求,要在某一个地址范围之内!

bailangcn 发表于 2019-11-7 10:28:05

lcw_swust 发表于 2019-11-7 08:38
看楼主的意思,程序中有对flash的擦除操作?
是把flash当作EEPROM使用么?
万一地址与代码段有重叠自然是会 ...

我也是这么认为的

lingdianhao 发表于 2019-11-7 12:31:32

yangbo18416 发表于 2019-11-7 09:04
如果有对片内Flash的读写的操作,是不是这些函数的区域超过规定的地址。有些芯片对于操作flash的函数的地址 ...

这个有可能,所以我们公司要求程序运行前要做MD5检验。

lijianxing 发表于 2020-4-14 20:40:31

关注这个问题,等待答案
页: [1]
查看完整版本: 单片机实际可用的程序存储空间的问题