主题 : 请问2440的SDRAM问题 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 12719
精华: 0
发帖: 10
金钱: 50 两
威望: 10 点
综合积分: 20 分
注册时间: 2010-01-12
最后登录: 2010-01-18
楼主  发表于: 2010-01-12 11:48

 请问2440的SDRAM问题

在开发板中,SDRAM是按32为数据读取 的,那么应该地址按4字节跳,那么在程序中,为什么又可以按字节读取和按半字读取?
*無鈳取玳
级别: 论坛版主
UID: 27
精华: 12
发帖: 5398
金钱: 40120 两
威望: 17929 点
综合积分: 11036 分
注册时间: 2008-01-16
最后登录: 2014-11-22
1楼  发表于: 2010-01-12 12:34
按字节读取时,硬件实际上读取的还是4字节,只是返回给程序1个字节而已.
"If you have an apple and I have an apple and we exchange apples, then you and I will
still each have one apple. But if you have an idea and I have an idea and we exchange
these ideas, then each of us will have two ideas."
级别: 新手上路
UID: 12719
精华: 0
发帖: 10
金钱: 50 两
威望: 10 点
综合积分: 20 分
注册时间: 2010-01-12
最后登录: 2010-01-18
2楼  发表于: 2010-01-12 13:54
版主。您好 。谢谢。  帮我看看下面程序:
嵌入式LINUX应用完全开发手册上的
void copy_2th_tosdram(void)
{
   unsigned int *pdwsrc=(unsigned int *)2048;
unsigned int *pdwdest=(unsigned int *)0x30004000;
  while(pdwsrc<(unsigned int *)4096
    {
   *pdwdest=*pdwsrc;
  pdwdest++;
  pdwsrc++;
  }

}

该代码功能实现把2440内部RAM的2048开始到4K结束的代码复制到SDRAM0x30004000开始地方运行。
在程序中,定义了指向无符号整形数据的指针变量;
那么在赋值时候,是按半字赋值复制转移,而指针自加时加1,按字节相加。
那么不是会出现错误吗?
嗨哟偶2440的SDRAM接法,A1\A0不接,读出来是整个字,这好像不好解释这段程序?
[ 此帖被xiaowang123在2010-01-12 14:10重新编辑 ]