实际上有16位

[复制链接]
 楼主| pengf 发表于 2020-8-16 13:06 | 显示全部楼层 |阅读模式
做bootloader时候,看了MPLAB X IDE生成的hex文件,hex文件里面的地址和真实地址是两倍的关系,编译器认为一个FLASH ROM单元的位数是8位,但实际上有16位
zhanglli 发表于 2020-8-16 13:10 | 显示全部楼层
这个是要在编译器那里配置么
bqyj 发表于 2020-8-16 13:13 | 显示全部楼层
先烧录进去看看对不对。
tian111 发表于 2020-8-16 13:17 | 显示全部楼层
你只需知道每条指令是14位宽,即每个地址的有效位数为14位
chuxh 发表于 2020-8-16 13:32 | 显示全部楼层
"hex文件里面的地址和真实地址是两倍的关系" 这我不太理解,没见到过。
HEX 文件中,第一个字节(8位)是长度,第二,第三字节是长度,第四字节是数据类型,后边的字节都是数据,最后一个是校验和。
做 bootloader, 你读取HEX 文件后,按照地址把对应的数据写到FLASH就可以了,记得校验。
stly 发表于 2020-8-16 13:36 | 显示全部楼层
因为PIC16F1的单字指令长度是14bit, 所以, 是由2个8bit 字节的拼起来的.
renyaq 发表于 2020-8-16 13:40 | 显示全部楼层
所以, hex中地址是实际地址的两倍..
houcs 发表于 2020-8-16 13:43 | 显示全部楼层
这个没法修改配置,
yinxiangh 发表于 2020-8-16 13:46 | 显示全部楼层
做bootloader解析hex的时候, 需要自己清楚为啥是这样的, 然后按这个原理解析就行了...
morrisk 发表于 2020-8-16 13:50 | 显示全部楼层
自己按照规则解析hex内容即可
 楼主| pengf 发表于 2020-8-16 13:58 | 显示全部楼层

好的,我明天去单位试一下,多谢各位大侠了哈        
CoolSilicon 发表于 2020-8-17 20:41 | 显示全部楼层
你可以看一下你用的芯片的那个存储器章节, 看一下指令架构,或者字长就明白了..
您需要登录后才可以回帖 登录 | 注册

本版积分规则

718

主题

10129

帖子

3

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