Chinaunix首页 | 论坛 | 博客
  • 博客访问: 353415
  • 博文数量: 49
  • 博客积分: 3229
  • 博客等级: 中校
  • 技术积分: 616
  • 用 户 组: 普通用户
  • 注册时间: 2006-11-26 21:46
文章分类

全部博文(49)

文章存档

2011年(8)

2010年(2)

2009年(3)

2008年(36)

我的朋友

分类:

2008-08-06 12:15:57

  s3c2440扩展了两片SDRAM(HY57V561620),开始不明白为什么要用ADDR2接了A0。现在弄明白了,原来用ADDR2接了A0,是为了地址4字节对齐。每个SDRAM位宽16位,两片合起来就32位。这样,当对一个4字节对齐的地址进行访问的时候,得到的数据将为32位。
  由此想到,在C语言中:
  对于一个int变量,占4个字节,4字节对齐,可以用LDR/STR访问
  对于一个char变量,1个字节,4字节对齐,可以用LDRB/STRB访问
  对于如下解构体:

struct s{
    char c1;
    char c2;
    int i;
};

占8个字节,C1和C2共占4个字节,对C1可以用LDRB/STRB访问,那么对于C2,该怎么访问得到呢?我想,应该是编译器为我们作好了这些。比如,对于读,它可以先LDR操作4个字节,然后对得到的在寄存器中的相应位置的数据进行访问,对于写,它可以先对寄存器中相应位置的数据进行写,然后再执行STR。以上都是推测。。。
阅读(2873) | 评论(0) | 转发(0) |
0

上一篇:arm的mmu

下一篇: 读linux2.6驱动的一点收获

给主人留下些什么吧!~~