能通过代码方式查看单片机中ROM使用空间吗(已解决)
本帖最后由 xxkj2010 于 2022-12-21 08:00 编辑问一个可笑的问题,stc单片机能否通过编程代码来查看单片机中ROM使用空间?
用户自己的程序做统计,是可以的。 梁工 发表于 2022-12-19 15:10
用户自己的程序做统计,是可以的。
如何统计?应该不是查询某个寄存器吧? xxkj2010 发表于 2022-12-19 19:04
如何统计?应该不是查询某个寄存器吧?
FLASH ROM擦除后全部是0xFF,程序从地址0x0000开始搜索,搜到多个连续的0xff就可以认为程序结束了,这个方法不能100%测量出来,因为有可能会有数据表有多个0xff,可以检测更多的连续FF来判断。 梁工 发表于 2022-12-19 23:36
FLASH ROM擦除后全部是0xFF,程序从地址0x0000开始搜索,搜到多个连续的0xff就可以认为程序结束了,这个 ...
如何读取FLASH ROM?应该不是IAP方式吧?所有的芯片使用手册只有涉及内部EEPROM的寄存器,通过读写这些特殊寄存器就可以方便地读写内部EEPROM,却没有涉及读写FLASH ROM的寄存器(或是我的水平有限,看不出来)。 xxkj2010 发表于 2022-12-20 10:38
如何读取FLASH ROM?应该不是IAP方式吧?所有的芯片使用手册只有涉及内部EEPROM的寄存器,通过读写这些特 ...
如何读取FLASH ROM?
汇编:MOVC指令。
C语言:code指针,unsigned char code *pc; 也可以从后向前扫描,碰到第一个非FF就停止
基本可以判断后面扫描过的部分为空白区域 本帖最后由 xxkj2010 于 2022-12-20 13:16 编辑
用code指针,还是不懂具体如何操作,有例程吗?
只知道将某些固定的数据存到FLASH ROM,就用code。
本帖最后由 梁工 于 2024-3-21 09:58 编辑
xxkj2010 发表于 2022-12-20 13:14
用code指针,还是不懂具体如何操作,有例程吗?
只知道将某些固定的数据存到FLASH ROM,就用code。
...
按zhp说的方式更好,从后向前扫描,碰到第一个非FF就停止。假设63.5K的ROM,最后100个字节不检测(用于放一些参数),则开始地址 = 63.5*1024-100-1=64923。搜索到0扇区的之后以一个地址(0x00ff)结束,0扇区是中断向量区,认为必用了。
unsigned char code *pc;
for(pc=64923; pc>=0x0100; pc--)
{
if(*pc != 0xff) break;
}
此时从pc的地址开始,后面都是空的。
这绝对 VIP 客户待遇啊,绝对优质技术支持
页:
[1]
2