• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

Cortex M3是32bit处理器,若flash位宽是64

f2702aefadb9fc17 2019-04-15 浏览量:774
如果要向地址0x0800 0000写一个32bit数据0x1234 5678,首先擦除对应页,然后flash接口64bit,高位被填0,所以最终结果是地址0x0800 0007~0x0800 0000存入的数据为0x0000 0000 1234 5678;如此以来浪费了高32bit的空间,如何设计才比较合理?
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 可以把你的所有的数据放在一个结构体里,写入时,全部一次性写入,这样可以有效的利用所有的空间了,不会有空的空间未使用,或是占有个另的空间没有写入


    • 发布于 2019-04-16
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:4
  • 可以把你的数据按64位对齐,在写入时,按64位写入,也就是存储两个32位的数据。如果你只存储一个,只能是空着高32位了

    • 发布于2019-04-15
    • 举报
    • 评论 0
    • 0
    • 0

  • 目前ARM单片机的flash写入方式会有半字,字,和双字,即使存储器位宽是64位,但可以选择使用单字传输模式,就是一次只写入32位的数据,这样就不会浪费

    如果要写64位,那传输的时候就将两个32位的数据拼成64位传输,这里要注意使用大端还是小端模式

    • 发布于2019-04-16
    • 举报
    • 评论 0
    • 0
    • 0

  • 这个只能尽量节约,没有办法解决,这个是由flash特性决定的。

    你只能8Byte对齐,否则可能不是浪费一个32位的问题,而是到处浪费。

    • 发布于2019-04-16
    • 举报
    • 评论 0
    • 0
    • 0

  • 你可以把高低字节合并写,不一定只写32位,比如我有8个字节,那么我用1个64位存储空间就够了就可以了,或者把2个32位的数据写在一些,如果凑不起就只能浪费,这就是内存对齐的作用
    • 发布于2019-04-16
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

Cortex M3是32bit处理器,若flash位宽是64