2681|3

99

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

关于ARM板IO地址转换的问题 [复制链接]

在ARM板上PC104总线上外挂一个数据采集板PM511P,PM511P上有IO端口,根据PM511P硬件手册上定义,这个IO的地址是
100H,根据ARM的特性,这个地址是不能直接访问的,需要从物理地址到虚拟地址的转换。下面是BSP的地址转换表:
OEMAddressTable
    ;;;-------------------------------------------------------------
    ;;; Virt Addr   Phys Addr   MB
    ;;;-------------------------------------------------------------
    DCD 0x80000000, 0x02000000, 30  ; 30 MB SROM(SRAM/ROM) BANK 0
    DCD 0x82000000, 0x08000000, 32  ; 32 MB SROM(SRAM/ROM) BANK 1
    DCD 0x84000000, 0x10000000, 32  ; 32 MB SROM(SRAM/ROM) BANK 2
    DCD 0x86000000, 0x18000000, 32  ; 32 MB SROM(SRAM/ROM) BANK 3
    DCD 0x88000000, 0x20000000, 32  ; 32 MB SROM(SRAM/ROM) BANK 4
    DCD 0x8A000000, 0x28000000, 32  ; 32 MB SROM(SRAM/ROM) BANK 5
    DCD 0x8C000000, 0x30000000, 64  ; 64 MB DRAM BANK 0,1
    DCD 0x90800000, 0x48000000,  1  ; Memory control register
    DCD 0x90900000, 0x49000000,  1  ; USB Host register
    DCD 0x90A00000, 0x4A000000,  1  ; Interrupt Control register
    DCD 0x90B00000, 0x4B000000,  1  ; DMA control register
    DCD 0x90C00000, 0x4C000000,  1  ; Clock & Power register
    DCD 0x90D00000, 0x4D000000,  1  ; LCD control register
    DCD 0x90E00000, 0x4E000000,  2  ; NAND flash control register
    DCD 0x91000000, 0x50000000,  1  ; UART control register
    DCD 0x91100000, 0x51000000,  1  ; PWM timer register
    DCD 0x91200000, 0x52000000,  1  ; USB device register
    DCD 0x91300000, 0x53000000,  1  ; Watchdog Timer register
    DCD 0x91400000, 0x54000000,  1  ; IIC control register
    DCD 0x91500000, 0x55000000,  1  ; IIS control register
    DCD 0x91600000, 0x56000000,  1  ; I/O Port register
    DCD 0x91700000, 0x57000000,  1  ; RTC control register
    DCD 0x91800000, 0x58000000,  1  ; A/D convert register
    DCD 0x91900000, 0x59000000,  1  ; SPI register
    DCD 0x91A00000, 0x5A000000,  1  ; SD Interface register
        DCD 0x92000000, 0x00000000,  2  ;  2 MB SROM(SRAM/ROM) BANK 0
        DCD 0x93000000, 0x2A000000,  32 ;  Upper 32 MB PCMCIA Register BANK 5
        DCD 0x95000000, 0x2C000000,  64 ;  64 MB PCMCIA Controller (CPLD) Register BANK 5
    DCD 0x00000000, 0x00000000,  0  ; End of Table (MB MUST BE ZERO!)
    END

//////////////////
请问:
1 如果我要访问PM511P 100H这个物理地址,是否只要在这个地址转换表里倒数第三行添加一行:
DCD 0x99000000, 0x00000100  1
让后在程序里访问0x99000000就可以访问到PM511P的100h这个地址了?
此帖出自ARM技术论坛

最新回复

楼主,这个相当于访问寄存器 通常使用VirtualAlloc VirtualCopy 这两个函数实现动态映射  详情 回复 发表于 2008-7-30 11:30
点赞 关注
 

回复
举报

69

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
自己顶!!!
此帖出自ARM技术论坛
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
可以使用这两个函数建立动态映射的:
  1. #include
  2. volatile PS3C2410X_IOPORT_REG g_pGpio; //定义寄存器结构体指针
  3. PHYSICAL_ADDRESS PA;//定义地址结构体
  4. PA.QuadPart = S3C2410X_BASE_REG_PA_IOPORT;//给结构体赋值物理地址
  5. g_pGpio = (PS3C2410X_IOPORT_REG) MmMapIoSpace(PA, sizeof(PS3C2410X_IOPORT_REG), FALSE);//映射物理地址

  6. MmUnmapIoSpace((PVOID)g_pGpio, sizeof(PS3C2410X_IOPORT_REG));//取消映射
复制代码
此帖出自ARM技术论坛
 
 
 

回复

83

帖子

0

TA的资源

一粒金砂(初级)

4
 
楼主,这个相当于访问寄存器
通常使用VirtualAlloc
VirtualCopy
这两个函数实现动态映射
此帖出自ARM技术论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表