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。以上都是推测。。。
阅读(2931) | 评论(0) | 转发(0) |