整天说内存,寄存器,端口,他们有什么联系,有什么不同之处,你了解他们么?
第一、寄存器和内存的区别
寄存器和内存都是可以用来读写的,但寄存器的操作时有副作用,称之为(side effect 边际效果)
读取一个寄存器可能导致寄存器中的内容发生变化,比如在一些设备的中断状态寄存器中,读取了寄存器后会自动清零
第二、IO空间和内存空间
并不是所有的体系结构都有IO空间这个定义的,我所了解的只有X86体系上有,而ARM体系结构就没有这种区别,
在X86上,IO空间和内存是独立的,他们各自有各自的总线,并且IO空间一般是64K,即16位,内存空间为4G
可见他们的差别是很大
第三、IO 端口和IO内存
在有了IO空间的概念后,就有IO端口和IO内存
当一个寄存器或内存位于IO空间时候,称之为IO端口
当一个寄存器或内存位于内存空间时候,称之为IO内存
这种映射是通过OS的MMU来把虚拟地址映射为物理地址的
可能单纯的这样解释会不明白,看下面这个图或许会好些
当你还在疑惑为什么指针可以想减而不可以相加的时候,了解了页表映射会或许就明白了!
在Linux驱动程序开发中,关于二者的不同,可以参看下这篇文章
http://www.360doc.com/content/10/1011/07/1317564_60018145.shtml
分享到:
相关推荐
几乎每一种外设都是通过读写设备上的寄存器来进行...CPU对外设IO端口物理地址的编址方式有两种:一种是I/O映射方式(I/O-mapped),另一种是内存映射方式(Memory-mapped)。而具体采用哪一种则取决于CPU的体系结构。
大家知道,STC单片机 IO端口 有四个模式:准双向(默认)、推挽、高阻、开漏。通过PxM1/PxM0 2个寄存器 进行设置。这个小工具STCIOset V1.0b9h 可以很方便地生成设置代码,而且还有C51的例程。(原创)
TQ2440IO端口驱动 端口控制描述 端口配置寄存器GPACON~GPJCON:用来决定复合引脚使用哪个功能。 端口数据寄存器GPADAT~GPJDAT:若端口被配置成输出口,数据能写入PnDAT相应的位,若被配置成输入口,数据能从PnDAT...
在访问任何寄存器前,地址端口输入的是数据端口的寄存器地址,寄存器的地址必须保存在地址端口。 2、存储器直接访问控制 DM9000提供DMA(直接存取技术)来简化对内部存储器(下称存储器)的访问。对存储器起始地址...
S3C2440上IO口寄存器进行读写,使用C#实现,以及简单的IIC寄存器操控样例
我们这节课的主要内容有: ·I/O端口简介 ·数字I/O寄存器 ·配置数字I/O
开始学习c8051f020单片机时里面有一些一些寄存器设置不懂,程序看不懂,很苦恼,在此为方便后来人,特整理了这份资料,里面记载了我从空白到熟练应用C8051F系列单片机的过程,希望对大家有帮助
每个GPI/O 端口有两个32 位配置寄存器(GPIOx_CRL,GPIOx_CRH),两个32位数据寄存器(GPIOx_IDR,GPIOx_ODR),一个32 位置位/复位寄存器(GPIOx_BSRR),一个16 位复位寄存器(GPIOx_BRR)和一个32 位锁定寄存器(GPIOx_...
1.学会操作 MSP430F5438 一般端口,了解端口寄存器的组成 2.了解学习板相应端口管脚原理图。 3.利用 JTAG 口将程序烧写进入单片机中。 4.进行程序调试,当按下按钮 K1, K2 , 观察 LED1,LED2有什么变化。
STM32的每个GPIO端口都有两个特别的寄存器,GPIOx_BSRR和GPIOx_BRR寄存器,通过这两个寄存器可以直接对对应的GPIOx端口置'1'或置'0'。
5、能描述计算机中IO端口的编制方式有几种(独立编址和统一编址2种),每种编址方式的特点?8086采用IO独立编址方式,注意X86中IO接口的寻址方式,X86的IO操作指令,IN和OUT指令的端口地址、IN/OUT指令只能是端口与...
#define SJA1000_Data_Port portA000 ioport unsigned int portA000; //定义数据输入/输出端口 #define SJA1000_Address_...//向模式寄存器写0x01,进入复位模式 while((TempData & 0x01) != 0x01); //等待SJA1000复位
//ST_CP-->PB.10端口配置 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz; //IO口速度为2MHz GPIO_Init(GPIOB, &GPIO_InitStructure); ...
在固件库中设置 ODR 寄存器的值来控制 IO 口的输出状态是通过函数 GPIO_Write 来实现 的: void GPIO_Write(GPIO_TypeDef* GPIOx, uint16_t PortVal); GPIO_WriteBit(GPIOR,GPIO_Pin_0,(BitAction)(1));//LED控制 ...
1. 对IO口输入输出操作程序举例:A口接流水灯并实现闪烁 void main(void) { while(1) { DDRA=0xff;...J,P,M,T,S这五个口除具有数据寄存器外,他们都另外多出另一个端口输入寄存器(该寄存器功能我未知)!
1、8255 芯片初始化 (1) 分析原理图,计算 8255 芯片和 8253 芯片在 IO 空间中各内部寄存器的端口地址,修改 Demo 程序(main.asm 和 INTDemo.asm)中 IO 空间地址的符号定义(xxH)。 (2) 分析原理图中 8255 芯片 ...
GPIO简介 ...STM32 的每个 IO 端口都有 7 个寄存器来控制其工作方式,而每一个寄存器都需要用32bit来控制。在STM32中,一组GPIO有16个IO口。 端口位基本结构: 原创文章 2获赞 0访问量 679 关注
5、能描述计算机中IO端口的编制方式有几种(独立编址和统一编址2种),每种编址方式的特点?8086采用IO独立编址方式,注意X86中IO接口的寻址方式,X86的IO操作指令,IN和OUT指令的端口地址、IN/OUT指令只能是端口与...
ATmega8L每个端口引脚都有3个寄存器位:DDxn、 PORTxn和PINxn。DDxn位于DDRx寄存器,PORTxn位于PORTx寄存器,PINxn位于PINx寄存器。DDxn用于选择引脚方向,DDxn为“1”时,Pxn设置为输出,否则设置为输入。当引脚置为...
本书详细介绍了TMS320C28x系列DSP的事件管理器、模-数转换器、32位CPU定时器...附录A.IO时钟、系统控制及PIE寄存器一览 附录A.11片内Flash、OTP寄存器一览 附录A.12外设接H XINTF的寄存器一览 附录B 词汇表 参考文献