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

ARM 8位外存放数据指针的问题

dalongge 2017-02-16 浏览量:735
   很早以前的项目用了PHILIP 2294的ARM CPU,使用ADS1。2编译器,发现外部扩充的RAM不能直接放超过存储器宽度的数据,具体表现为比如数据指针,存进去再取出来值就不对了,似乎和位宽有关系,只保存了8位有效的数据。?为什么。我曾经用过很多CPU只要设置好外部存储器的位宽,存储器的位宽对我来说应该是透明的啊?难道还要我自己把指针拆成4个字节存进去,取出来再合一遍吗??请高人指点!硬件没问提,如果是存储8位数据我测试过是好的。
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 一、CPU问题

    如果你的ARM CPU只有8位数据总线,那么就要如你所描述的,你要自己把32位拆成4个8位存储,读取时再进行组合。因为你的CPU只支持8位的数据总线,是无法在8条总线上一次性传输16位数据的。


    二、SRAM问题

    如果你的CPU支持16位,但是你的SRAM只有8位,那么另外8位要放到哪里呢?一样的道理。


    三、程序问题

    如果你的CPU、SRAM都支持16位,但是你的CPU初始化有问题,要不是外设初始化成了8位,要不你的IO没初始化完全。


    四、32位

    看你要存储32位的,但是一般的SRAM也就是16位的,这里不考虑DDR之类的(不同的存储结构),你可以用两片16位的,前提是你的CPU支持32位总线,否则还是拆解的。



    • 发布于 2017-02-16
    • 举报
    • 评论 0
    • 1
    • 0

其他答案 数量:2
  • 首先外部的RAM确实是不能直接超过规定的存储器数据宽度

    你这个CPU目测比较老,应该是不能直接支持调整存储器宽度

    你外部扩充的RAM是什么型号的,如果是32位的,那么应该确实只有低八位得以保存



    • 发布于2017-02-16
    • 举报
    • 评论 0
    • 1
    • 0

  • 一般而言外部擴充是需要計算位寬的喔,除非驅動幫您計算了,這是跟內部RAM有差別的

    且內部RAM也有自己的控制器和驅動,另外RAM的型號是什麼可以補充

    這樣比較好解決問題

    • 发布于2017-02-16
    • 举报
    • 评论 0
    • 1
    • 0

相关问题

问题达人换一批

ARM 8位外存放数据指针的问题