存储器地址重映射是当前很多先进控制器所具有的功能。在上一节中已经提 到了0 地址处存储器重映射的例子,简而言之,地址重映射就是可以通过软件配 置来改变一块存储器物理地址的一种机制或方法。 当一段程序对运行自己的存储器进行重映射的时候,需要特别注意保证程序 执行流程在重映射前后的承接关系。下面是一种典型的存储器地址重映射情况: 系统上电后的缺省状态是0 地址上放有ROM,这块ROM 有两个地址:从0 起始和从0x1000...
by LinuxSmartphone - Linux文档专区 - 2009-12-15 18:01:53 阅读(786) 回复(0)
映射就是一一对应的意思。重映射就是重新分配这种一一对应的关系。 我 们可以把存储器看成一个具有输出和输入口的黑盒子。如下图所示,输入量是地址,输出的是对应地址上存储的数据。当然这个黑盒子是由很复杂的半导体电路具 现的,具体的实现的方式我们现在不管。存储单位一般是字节。这样,每个字节的存储单元对应一个地址,当一个合法地址从存储器的地址总线输入后,该地址对应 的存储单元上存储的数据就会出现在数...
arm芯片的地址重映射 By winday 发表于 2007-1-22 19:59:00 arm芯片的地址重映射 by winday 映射就是一一对应的意思。重映射就是重新分配这种一一对应的关系。 我们可以把存储器看成一个具有输出和输入口的黑盒子。如下图所示,输入量是地址,输出的是对应地址上存储的数据。当然这个黑盒子是由很复杂的半导体电路具 现的,具体的实现的方式我们现在不管。存储单位一般是字节。这样,每个字节的存储单元对应一个地址,...
arm">arm芯片的地址重映射 映射就是一一对应的意思。重映射就是重新分配这种一一对应的关系。 我们可以把存储器看成一个具有
今天在阅读一个GPIO驱动程序的时候 遇到了寄存器映射的问题,后追踪到最底层的函数 S3C_ADDR(x) 函数 在源代码中有如下 一些宏定义:
我现在的问题是:
#define S3C_VA_IRQ S3C_ADDR(0x00000000) /* irq controller(s) */
#define S3C_VA_SYS S3C_ADDR(0x00100000) /* system control */
#define S3C_VA_MEM S3C_ADDR(0x00200000) /* memory control */
#define S3C_VA_TIMER S3C_ADDR(0x00300000) /* timer block */
#define S...
如果开发板的B端口的端口控制寄存器的地址为0x56000010,数据寄存器的地址为0x56000014
那我在linux 驱动程序了 能不能这样进行映射:
void __iomem *base_addr;
#define GPB_BASE_ADD 0x56000010
#define rGPBCON (*(volatile unsigned long*)base_addr +0x00)
#define rGPBDAT (*(volatile unsigned long*)base_addr + 0x04)
base_add = ioremp(GPB_BASE_ADD,0x10);
然后通过iowrite与ioread类函数对rGPBCON与rGPBDAT进行...
芯片:at91rm920
代码:
#define AT91C_BASE_PIOB 0xFFFFF600 /* (PIOB) Base Address */
static AT91PS_PIO s_piob;
INT32 pio_map(VOID)
{
INT32 i32Fd;
off_t addr;
static VOID *base;
if ((i32Fd = open("/dev/mem", O_RDWR | O_SYNC)) == -1)
{
printf("Cannot open /dev/mem.\n");
return 0;
}
#ifdef _DEBUG
printf("/dev/mem opened.\n");
#endif
addr = AT91C_BASE_PIOB; //map PIO controller B
...