端口映射内存映射... upnp 端口映射

#define A (* (volatile unsigned *) 0x48000000 )#define A (* (volatileunsigned *) 0x48000000 )对于不同的计算机体系结构,设备可能是端口映射,也可能是内存映射。如果系统结构支持独立的IO地址空间,并且是端口映射,就必须使用汇编语言完成实际对设备的控制,因为C语言并没有提供真正的“端口”的概念。
如果是内存映射,那就方便的多了。
举个例子,比如向寄存器A(地址假定为0x48000000)写入数据0x01,那么就可以这样设置了:
#define A (*(volatile unsigned *) 0x48000000 )... A =0x01;...
这实际上就是内存映射机制的方便性了。其中volatile关键字是嵌入式系统开发的一个重要特点。
volatile(可变的)这个关键字说明这变量可能会被意想不到地改变,这样编译器就不会去假设这个变量的值了。这种“意想不到地改变”,不是由程序去改变,而是由硬件去改变。
volatile 限定编译器不对这个指针的指向的存储单元进行优化,即不用通用寄存器暂时代替这个指针的指向的存储单元,而是每次取值都直接到指针的指向的存储单元取值.volatile主要用于变量会异步改变的情况下,主要有三个方面:
1.cpu外设寄存器
2.中断和主循环都会用到的全局变量
3.操作系统中的线程间都会用到的公共变量.

端口映射内存映射... upnp 端口映射
上述表达式拆开来分析:
首先(volatile unsigned *) 0x48000000的意思是把0x48000000强制转换成volatileunsigned类型的指针,即对指针的操作的范围是从0x48000000开始的4个字节(int型),暂记为p。那么就有:
#define A *p,即A为P指针指向位置的内容了。这里就是通过内存寻址访问到寄存器A,可以读/写操作!

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/zhangjian8613/archive/2010/02/01/5276607.aspx

映射 很自然想到 数学里面的 函数映射 有一一映射等 通过一个X 可以确定 一个或者多个Y

借用他人的一个比喻

“你家在一个小区里B栋2410室,你朋友来找你,找到小区门口,不知道你住哪层哪号?就问守门的保安,保安很客气的告诉了他你家详细门牌,所以你朋友很轻松的找到了你家。这个过程就是外网访问内网通过端口映射的形象比喻,”

端口映射 内存映射

来自网络的参考:


几乎每一种外设都是通过读写设备上的寄存器来进行的。外设寄存器也称为“I/O端口”,通常包括:控制寄存器、状态寄存器和数据寄存器三大类,而且一个外设的寄存器通常被连续地编址。CPU对外设IO端口物理地址的编址方式有两种:一种是I/O映射方式(I/O-mapped),另一种是内存映射方式(Memory-mapped)。而具体采用哪一种则取决于CPU的体系结构。

CPU的单一物理地址空间”就是指RAM,前文有描述"有些体系结构的CPU(如,PowerPC、m68k等)通常只实现一个物理地址空间(RAM)"。也就是说,这类结构(内存映射方式)的CPU只对RAM编址,其他对象如I/O,ROM等都要映射到RAM中才能被CPU访问。"而另外一些体系结构的CPU(典型地如X86)则为外设专门实现了一个单独地地址空间",这类(I/O映射方式)CPU就是我们现在用的PC中的CPU,这类CPU的寻址空间不是分为常规内存/保留内存/扩展内存吗?其中的保留内存就是用来对I/O,ROM等的直接编址。但由于参与直接编址的I/O,ROM等的读的速度没有RAM快,所以主板提供了映射功能,映射后参与保留内存编址的实际也是物理RAM,这种情形下就跟内存映射方式类似了


有些体系结构的CPU(如,PowerPC、m68k等)通常只实现一个物理地址空间(RAM)。在这种情况下,外设I/O端口的物理地址就被映射到CPU的单一物理地址空间中,而成为内存的一部分。此时,CPU可以象访问一个内存单元那样访问外设I/O端口,而不需要设立专门的外设I/O指令。这就是所谓的“内存映射方式”(Memory-mapped)。 而另外一些体系结构的CPU(典型地如X86)则为外设专门实现了一个单独地地址空间,称为“I/O地址空间”或者“I/O端口空间”。这是一个与CPU地RAM物理地址空间不同的地址空间,所有外设的I/O端口均在这一空间中进行编址。CPU通过设立专门的I/O指令(如X86的IN和OUT指令)来访问这一空间中的地址单元(也即I/O端口)。这就是所谓的“I/O映射方式”(I/O-mapped)。与RAM物理地址空间相比,I/O地址空间通常都比较小,如x86 CPU的I/O空间就只有64KB(0-0xffff)。这是“I/O映射方式”的一个主要缺点。===========================================

  

爱华网本文地址 » http://www.413yy.cn/a/25101013/159584.html

更多阅读

GPSGATE怎么设置GPS共享端口 精 gpsgate pc破解版

GPSGATE怎么设置GPS共享端口 精——简介在我们用GPS的时候有时候需要共享几个端口GPS端口,那么怎么用GPSgate共享呢!这里说一下GPSgate设置端口共享的方法!GPSGATE怎么设置GPS共享端口 精——工具/原料?GPSgate?CNT?GPSGPSGATE怎

怎样设置打印机端口 打印机无法打印

笔者以 HP Deskjet 3748 打印机为例,详细介绍使用 HP Deskjet 3000 系列打印机进行网络打印的配置方法。怎样设置打印机端口——适用机型怎样设置打印机端口 1、HP Deskjet 3320、3323、3325、3420、3425、3538、3558、3658、3668、

如何查看某个端口被谁占用 如何查看adb 端口占用

如何查看某个端口被谁占用——简介我们在启动应用的时候经常发现我们需要使用的端口被别的程序占用,但是我们又不知道是被谁占用,这时候我们需要找出“真凶”,如何做到呢?如何查看某个端口被谁占用——工具/原料电脑一台如何查看某个

教你路由器端口映射设置方法 思科路由器端口映射

教你路由器端口映射设置方法——简介本文就以TD-W89841N无线路由器为例做一个端口映射80端口号和映射3389端口号为例,希望能帮到局域网内想使用路由器做端口号映射到自己电脑的网友一个帮助。工具/原料教你路由器端口映射设置方法

内网端口穿透 windows ngrok

内网端口穿透,是通过开放的第三方端口穿透软件,如nat123端口映射,通过内网IP映射到外网,实现在无公网IP时,一样可以外网访问内网应用。端口穿透nat123端口映射的使用方法如下。1.在内网安装nat123端口穿透软件。启用并添加映射。配

声明:《端口映射内存映射... upnp 端口映射》为网友美女爱穿妥协分享!如侵犯到您的合法权益请联系我们删除