打印

实际上有16位

[复制链接]
854|18
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
pengf|  楼主 | 2022-3-2 23:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
做bootloader时候,看了MPLAB X IDE生成的hex文件,hex文件里面的地址和真实地址是两倍的关系,编译器认为一个FLASH ROM单元的位数是8位,但实际上有16位

使用特权

评论回复
沙发
juventus9554| | 2022-3-2 23:37 | 只看该作者
这个是要在编译器那里配置么

使用特权

评论回复
板凳
bqyj| | 2022-3-2 23:41 | 只看该作者
先烧录进去看看对不对。

使用特权

评论回复
地板
dengdc| | 2022-3-2 23:43 | 只看该作者
你只需知道每条指令是14位宽,即每个地址的有效位数为14位

使用特权

评论回复
5
yszong| | 2022-3-2 23:45 | 只看该作者
"hex文件里面的地址和真实地址是两倍的关系" 这我不太理解,没见到过。
HEX 文件中,第一个字节(8位)是长度,第二,第三字节是长度,第四字节是数据类型,后边的字节都是数据,最后一个是校验和。
做 bootloader, 你读取HEX 文件后,按照地址把对应的数据写到FLASH就可以了,记得校验。

使用特权

评论回复
6
stly| | 2022-3-2 23:47 | 只看该作者
因为PIC16F1的单字指令长度是14bit, 所以, 是由2个8bit 字节的拼起来的.

使用特权

评论回复
7
dingy| | 2022-3-2 23:49 | 只看该作者
所以, hex中地址是实际地址的两倍..

使用特权

评论回复
8
jiajs| | 2022-3-2 23:50 | 只看该作者
这个没法修改配置,

使用特权

评论回复
9
pengf|  楼主 | 2022-3-2 23:52 | 只看该作者
做bootloader解析hex的时候, 需要自己清楚为啥是这样的, 然后按这个原理解析就行了...

使用特权

评论回复
10
xxrs| | 2022-3-2 23:56 | 只看该作者
自己按照规则解析hex内容即可

使用特权

评论回复
11
zhanghqi| | 2022-3-2 23:58 | 只看该作者
你可以看一下你用的芯片的那个存储器章节, 看一下指令架构,或者字长就明白了..

使用特权

评论回复
12
weifeng90| | 2022-3-3 08:03 | 只看该作者
先烧进去,看看运行效果。

使用特权

评论回复
13
pengf|  楼主 | 2022-3-3 21:04 | 只看该作者
好的,我明天去单位试一下,多谢各位大侠了哈        

使用特权

评论回复
14
tpgf| | 2022-4-1 19:37 | 只看该作者
需要进行配置吗

使用特权

评论回复
15
xiaoqizi| | 2022-4-1 19:44 | 只看该作者
它是什么指令架构啊

使用特权

评论回复
16
木木guainv| | 2022-4-1 19:50 | 只看该作者
其实无所谓的

使用特权

评论回复
17
磨砂| | 2022-4-1 19:57 | 只看该作者
其实没有必要纠结这个问题

使用特权

评论回复
18
晓伍| | 2022-4-1 20:07 | 只看该作者
只要结果是正确的就行了

使用特权

评论回复
19
八层楼| | 2022-4-1 20:13 | 只看该作者
估计有内部的处理方式

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

718

主题

10129

帖子

3

粉丝