+ -
当前位置:首页 → 问答吧 → 驱动里物理地址的映射

驱动里物理地址的映射

时间:2010-09-14

来源:互联网

在我的.h文件里的宏定义(这是从原来程序里复制)
#ifndef __ASSEMBLY__
typedef volatile unsigned int AT91_REG;     // Hardware register definition
#define AT91_CAST(a) (a)
#else
#define AT91_CAST(a)
#endif

#ifndef __ASSEMBLY__
typedef struct _AT91S_AC97C {
        AT91_REG         AC97C_CAMR;         // Channel A Mode Register
        AT91_REG         AC97C_CBMR;         // Channel B Mode Register
        } AT91S_AC97C, *AT91PS_AC97C;
#else
#define AC97C_CAMR      (AT91_CAST(AT91_REG *)         0x0000002C) // (AC97C_CAMR) Channel A Mode Register
#define AC97C_CBMR      (AT91_CAST(AT91_REG *)         0x0000003C) // (AC97C_CBMR) Channel B Mode Register
#endif

#define AT91C_BASE_AC97C     (AT91_CAST(AT91PS_AC97C)         0xFFFA0000) // (AC97C) Base Address

在.c文件里要用到
AT91C_BASE_AC97C->AC97C_CAMR(这个地方为什么可以这样用啊,哪位大哥能给我安.h文件里定义的内容解释下)
AT91C_BASE_AC97C->AC97C_CBMR
但是需要进行物理地址的映射。
我该怎么弄呢?
我改成了:
void *AC97C_VIR_BASE;       
#define AT91C_BASE_AC97C_VIR     AT91C_BASE_AC97C+AC97C_VIR_BASE
AC97C_VIR_BASE = ioremap( AT91C_BASE_AC97C, 0x100 );

AT91C_BASE_AC97C_VIR->AC97C_CAMR
AT91C_BASE_AC97C_VIR->AC97C_CBMR
但是编译不对我该怎么改呢?

作者: marcomo1986   发布时间: 2010-09-14

哪位大哥帮小弟一下,着急啊,项目做不下去了,不胜感激

作者: marcomo1986   发布时间: 2010-09-14

热门下载

更多