在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 2029|回复: 1

关于ARM Linux的奇怪问题

[复制链接]
发表于 2007-1-22 10:10:51 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
我使用的CPU是ATMEL 9200,ARM920核;操作系统为2.4内核。
外部片选NCS2接一个FPGA,地址为0x30000000;在__initdata中把改物理地址映射成一个虚拟地址。
定义一个结构体来访问FPGA中的RAM.
typedef struct _AT91S_FPGA_RAM {
  unsigned short int adr[2048];
}AT91S_FPGA_RAM,*AT91PS_FPGA_RAM;
在驱动ioctl()中对RAM进行写操作,如果写入值0x55aa,读出为0x5555;写入0x1234,读出为0x1212.
代码简要如下:
AT91PS_FPGA_RAM pdata_a = (AT91PS_FPGA_RAM) FPGA_B_RAM_BASE;
pdata_a->adr[0]=0x55aa;
pdata_a->adr[1000]=0x1234
printk("ram0=%x\n",pdata_a->adr[0]);
printk("ram1=%x\n",pdata_a->adr[1000]);
如果我把结构体改成:
typedef struct _AT91S_FPGA_RAM {
  unsigned int adr[2048];
}AT91S_FPGA_RAM,*AT91PS_FPGA_RAM;
即是按照32位地址操作的话,读写就完全正确! 请问:是否在Linux中还需要设置读写IO的宽度?(注:CPU寄存器的NCS2的宽度已经设成16位)。
请高手解答啊 ...
发表于 2007-1-23 18:06:37 | 显示全部楼层
没有遇到过这类问题,我都是直接用现成的开发板。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条

小黑屋| 手机版| 关于我们| 联系我们| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2025-3-12 20:12 , Processed in 0.023769 second(s), 11 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表