[技术问答] 为什么判断ROM的最后一个地址的数是负数就可以判断容量?

[复制链接]
1495|18
 楼主| 冷调幽忧 发表于 2016-1-21 09:35 | 显示全部楼层 |阅读模式
123.png ROM容量最小是2K,大小是以2倍的增长的,2K,4K,8K,16K,32K,64,K,128K...等,为什么判断一个最后地址对应的数是负数,就可以判断出没有写入代码呢。
gejigeji521 发表于 2016-1-21 22:17 | 显示全部楼层
应该是超限后就返回个负数。
 楼主| 冷调幽忧 发表于 2016-1-22 10:36 | 显示全部楼层
gejigeji521 发表于 2016-1-21 22:17
应该是超限后就返回个负数。

原理
大道至简 发表于 2016-1-23 12:00 | 显示全部楼层
他大概是认为读出0xff就认为到了flash的边沿,不过刚刚擦除的芯片,其内容也是0xff
所以怀疑此程序的广泛适用性

评分

参与人数 1威望 +3 收起 理由
冷调幽忧 + 3

查看全部评分

戈卫东 发表于 2016-1-23 13:40 | 显示全部楼层
这取决于FMC_Read_User的行为。。。。。。。
dongnanxibei 发表于 2016-1-25 14:08 | 显示全部楼层
超限后,系统应该会发现的,然后出界了,就返回个负数。
huangcunxiake 发表于 2016-1-25 22:31 | 显示全部楼层

你看这个FMC_Read_User()函数,要看函数原型,是如何定义的,这个函数结尾,肯定有发关于返回值的定义。
zhuotuzi 发表于 2016-1-25 23:22 | 显示全部楼层
那个函数是你自己定义的吧,你如果读数超限后,返回什么是有你自己定义的。然后可能你调用了库函数或系统的某个函数,你要去看那个原型才好。
 楼主| 冷调幽忧 发表于 2016-1-26 08:50 | 显示全部楼层
huangcunxiake 发表于 2016-1-25 22:31
你看这个FMC_Read_User()函数,要看函数原型,是如何定义的,这个函数结尾,肯定有发关于返回值的定义。
...

仅仅是一个底层函数,读取FLASH的任意一个32地址指向的值而已。 QQ截图20160126084811.png
 楼主| 冷调幽忧 发表于 2016-1-26 08:52 | 显示全部楼层
zhuotuzi 发表于 2016-1-25 23:22
那个函数是你自己定义的吧,你如果读数超限后,返回什么是有你自己定义的。然后可能你调用了库函数或系统的 ...

就是一个读取FLASH地址指向的值而已。
luofeng2g 发表于 2016-1-26 09:12 | 显示全部楼层
看这个FMC_Read_User()函数,跟你所说的完全不同;具体看FMC_ISPCON寄存器!
 楼主| 冷调幽忧 发表于 2016-1-26 11:00 | 显示全部楼层
luofeng2g 发表于 2016-1-26 09:12
看这个FMC_Read_User()函数,跟你所说的完全不同;具体看FMC_ISPCON寄存器!

出错是返回-1,可是正常读取的数只要最高位是1不也是负数了吗
 楼主| 冷调幽忧 发表于 2016-1-26 13:32 | 显示全部楼层
看错了,不是读取地址是值的,已经读取放在形参了。不是通过返回值读出来的。
zhuotuzi 发表于 2016-1-27 09:30 | 显示全部楼层
具体的细节还要去看那个函数原型里是怎么做的。肯定有的,有的返回 -1, -2,
gejigeji521 发表于 2016-1-27 14:18 | 显示全部楼层
就是一个读取FLASH地址指向的值而已。超出范围后,会有标志位置位的,然后判断一下,返回个负数。
734774645 发表于 2016-1-27 15:57 | 显示全部楼层
为何为负数?那个是那个函数里面写的,遇到了结束,就返回负数,你也可以修改那个原型锕
Thethree 发表于 2016-1-28 08:56 | 显示全部楼层
所有片子擦除之后都是0xff吗,有没有都是0的
yiyigirl2014 发表于 2016-1-31 14:08 | 显示全部楼层
为何为负数?
cowboy2014 发表于 2016-2-2 21:00 | 显示全部楼层
说明超限就返回负数了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

22

主题

78

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部