寄存器的疑问

aiwoziji13 2010-09-27 08:11:32
arm有37个寄存器(物理寄存器)

那比如 控制I/O口 的寄存器 又是什么呢?

有什么区别啊?
...全文
63 点赞 收藏 9
写回复
9 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
wwwunix 2010-09-29
[Quote=引用 6 楼 aiwoziji13 的回复:]

哦,万分感谢您的解答,基本理解了 再麻烦问下 我是否可以这样理解:

除了cpu内部的寄存器,剩下的寄存器可能是在不同的设备(I\O寄存器)或者是位于不同的模块中,而一些

模块(如UART)和 arm core 共同构成的S3c2410芯片?

这些模块的寄存器的地址是在地址总线上分配好了的?



引用 5 楼 wwwunix 的回复:
首先……
[/Quote]
这样理解基本正确。
回复
dfysy 2010-09-29
建议你随便买本ARM开发的书看看,市面上最烂的书都会讲到你上面的内容。
回复
wwwunix 2010-09-28
首先,寄存器都是真实存在的物理既存器。
你说的那些寄存器,对于基于arm的S3c2410芯片来说,不在arm core中,位于UART模块中。具体的地址是:
Register Address R/W Description Reset Value
ULCON0 0x50000000 R/W UART channel 0 line control register 0x00
ULCON1 0x50004000 R/W UART channel 1 line control register 0x00
ULCON2 0x50008000 R/W UART channel 2 line control register 0x00
等等
回复
aiwoziji13 2010-09-28
谢谢您,有点明白了, 不过 那您说有些I/O寄存器是位于外部设备上的,

那比如说 控制异步串行通信(USART)的 状态、控制、波特率 这些类型的寄存器是真实存在的物理寄存器吗

他们位于什么地方,还是就是一段物理地址?

[Quote=引用 3 楼 wwwunix 的回复:]
你前面说的37个寄存器指的是CPU中的寄存器,用于通用的各种运算。汇编指令可以直接用寄存器的名字的方式来访问这些寄存器
而I/O寄存器是控制外设的寄存器,不存在于CPU中,一般通过地址总线与CPU相连。汇编指令需要通过地址来访问这些寄存器。有些I/O寄存器位于外部设备上。
[/Quote]
回复
wwwunix 2010-09-28
你前面说的37个寄存器指的是CPU中的寄存器,用于通用的各种运算。汇编指令可以直接用寄存器的名字的方式来访问这些寄存器
而I/O寄存器是控制外设的寄存器,不存在于CPU中,一般通过地址总线与CPU相连。汇编指令需要通过地址来访问这些寄存器。有些I/O寄存器位于外部设备上。
回复
aiwoziji13 2010-09-28
楼上说spec 是什么啊? google下也没查到和我的问题有什么关系啊!
回复
alex_gogo 2010-09-28
学习!
回复
aiwoziji13 2010-09-28
哦,万分感谢您的解答,基本理解了 再麻烦问下 我是否可以这样理解:

除了cpu内部的寄存器,剩下的寄存器可能是在不同的设备(I\O寄存器)或者是位于不同的模块中,而一些

模块(如UART)和 arm core 共同构成的S3c2410芯片?

这些模块的寄存器的地址是在地址总线上分配好了的?



[Quote=引用 5 楼 wwwunix 的回复:]
首先,寄存器都是真实存在的物理既存器。
你说的那些寄存器,对于基于arm的S3c2410芯片来说,不在arm core中,位于UART模块中。具体的地址是:
Register Address R/W Description Reset Value
ULCON0 0x50000000 R/W UART channel 0 line control register 0x00
ULCON1 0……
[/Quote]
回复
Wenxy1 2010-09-27
为何不看spec.
回复
相关推荐
发帖
Linux_Kernel
创建于2007-08-27

4156

社区成员

Linux/Unix社区 内核源代码研究区
申请成为版主
帖子事件
创建了帖子
2010-09-27 08:11
社区公告
暂无公告