这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 基础知识 » 16,sst39vf3201 16位宽的sst39vf3201为什么可以用8位方

共2条 1/1 1 跳转至

16,sst39vf3201 16位宽的sst39vf3201为什么可以用8位方式访问!

院士
2006-09-17 18:14:16     打赏
16,sst39vf3201 16位宽的sst39vf3201为什么可以用8位方式访问!



关键词: sst39vf3201     16位     为什么     以用     方式    

院士
2006-12-22 22:43:00     打赏
2楼
问 我的系统是AT91M40800 + SST39VF3201;
因为使用16位总线,所以ARM的A0悬空不用,ARM的A1,接SST39VF160的A0
按照这种连接方法,ARM是不可以用8位的数据指针来访问的;

但是,用下面的代码就偏偏可以!!!!!

0x01000000 是SST39VF3201的物理地址
a[] 是一个全局变量;
for(i=0;i<10;i++)
{
    a[i] = *(INT8U *)(0x01000001+i);
}
查看编译出来的代码,也没有看出有先把16位数据读出来,拆分为8位的代码

0x0000006c:    
         e3a04000    .@..                  MOV      r4,#0
                                          // 判断 i<10
        0x00000070:    e354000a    ..T.    CMP      r4,#0xa
                               //10次循环结束,退出
        0x00000074:    2a000008    ...*    BCS      {pc} + 0x28  ; 0x9c
                    //跳转COPY第一个数据
        0x00000078:    ea000002    ....    B        {pc} + 0x10  ; 0x88
                                        // i++
        0x0000007c:    e2840001    ....    ADD      r0,r4,#1
        0x00000080:    e20040ff    .@..    AND      r4,r0,#0xff
                                      //比较i的值是否大于10
        0x00000084:    eafffff9    ....    B        {pc} - 0x14  ; 0x70
                //取39VF3201的地址 (0x01000001)
        0x00000088:    e59f0254    T...    LDR      r0,0x2e4
            // (0x01000001+i)的数据读出来(8位)
        0x0000008c:    e7d00004    ....    LDRB     r0,[r0,r4]
                // 取全局数组a[0]的地址
        0x00000090:    e59f1250    P...    LDR      r1,0x2e8
                //的39vf3201的数据保存到a[i]中
        0x00000094:    e7c10004    ....    STRB     r0,[r1,r4]
                //比较i的值是否大于10
        0x00000098:    eafffff7    ....    B        {pc} - 0x1c  ; 0x7c
        0x0000009c:    e1a00000    ....    NOP

不明白为什么用这种物理的连接方式,可以访问8位的数据,我的CPU的A0没有参加
地址绎码,象0x01000001 、0x01000003 这些地址,ARM怎么处理???
望各位指教!!!! 1: 顶下 2: 各位大侠有空研究这个问题吗? 3: 很简单,ARM硬件帮你完成了这个事情STRB/LDRB指令就是8位读写
但是读的时候总线是16位访问的,多余的8位给丢掉了
如果你看到数据手册的总线时序,你就明白了


共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]