ARM11访问芯片内部的寄存器空间
2010-08-20 17:21
225 查看
arm1136jzf-s把memory和Peripheral接口分开了,你需要在初始化时告诉cpu,哪些地址范围是属于Peripheral的,否则它就当memory访问,当然就访问不到属于Peripheral 区间的IO口寄存器。可以通过ARM11的协处理器cp15来告诉CPU外设寄存器的地址,在ARM11芯片架构手册上可以看到怎样实现该操作:
CRn Op1 CRm Op2
c15 0 c2 0 Data Memory Remap R/W 0x01C97CC8 page 3-162
1 Instruction Memory Remap R/W 0x01C97CC8 page 3-162
2 DMA Memory Remap R/W 0x01C97CC8 page 3-162
4 Peripheral Port Memory Remap R/W 0x00000000 page 3-162
下面的代码就是在初始化是告诉CPU外设寄存器的基地址和地址空间
CRn Op1 CRm Op2
c15 0 c2 0 Data Memory Remap R/W 0x01C97CC8 page 3-162
1 Instruction Memory Remap R/W 0x01C97CC8 page 3-162
2 DMA Memory Remap R/W 0x01C97CC8 page 3-162
4 Peripheral Port Memory Remap R/W 0x00000000 page 3-162
下面的代码就是在初始化是告诉CPU外设寄存器的基地址和地址空间
ldr r0, =PERIPHERAL_BASE_ADDR_PA orr r0, r0, #0x13 mcr p15, 0, r0, c15, c2, 4
相关文章推荐
- Linux 下访问PHY芯片寄存器
- R0-R37它是Arm 寄存器,那是,CPU内部。和GPIO注册所有外设。换句话说,要是arm的cpu,它包含了其他芯片公司将有R0-R37,和GPIO寄存器只有一个特定的芯片。
- 【从零开始,从内核驱动驱动到用户空间调用】编写第一个linux驱动,通过端口访问I/O寄存器。
- R0-R37是Arm 的寄存器,就是CPU内部的。而GPIO寄存器都是外设的。换句话说,只要是arm的cpu,包括其他的公司的芯片都会有R0-R37,而GPIO的寄存器就是某个特定的芯片才有。
- 【从零开始,从内核驱动驱动到用户空间调用】编写第一个linux驱动,通过端口访问I/O寄存器。
- Spring的内部bean与空间命名
- 汇编语言(王爽)第三章 寄存器(内存访问)
- 黑马程序员—命名空间、类、访问修饰符日志
- (9)ok6410学习之芯片内部初始化之核心初始化
- 通过设置路由,实现外网与企业内部子网的便捷访问
- NAT端口映射配图详解-外网访问代理服务器内部的实现方法
- jquery内部域访问,及其方法的声名问题
- Git 通过公司内部的代理服务器访问外部代码库 git proxy
- 汇编入门学习笔记 (二)—— 寄存器(内存访问)、栈
- PC下串口IO空间及其寄存器详解
- Java中各种修饰符与访问修饰符的说明(稍谈内部类)
- 从 Linux 内核访问用户空间内存
- 局部内部类 局部内部类访问局部变量必须用final修饰
- 进程不具有此命名空间的访问权限
- At24lc512存储器访问内部地址方法---i2c通信获取