tag 标签: 映射

相关博文
  • 2023-11-7 16:28
    167 次阅读|
    0 个评论
    映射 j81g588600.goho.co:43295 内网服务 127.0.0.1:3389 内网服务转发失败,请进行映射诊断 从你的问题描述来看,你似乎在尝试通过某种方式(可能是路由器映射或者其他网络配置)在内网中访问j81g588600.goho.co:43295这个地址。你尝试通过127.0.0.1:3389进行访问,但是出现了“内网服务转发失败”的错误。 首先,我们需要明确的是,127.0.0.1是回环地址,也称为环回地址,通常用于本机测试。这个地址是本地计算机的自我回环地址,当网络程序之间的通信不需要网络网关,只需要经过自己这台电脑时,通常使用127.0.0.1进行访问。 对于你的问题,我猜测你可能在尝试进行端口转发或者NAT(网络地址转换)。在这种情况下,你需要确保你的路由器支持你所使用的协议(如TCP或UDP),并且正确配置了目标地址和端口(在这种情况下是j81g588600.goho.co:43295)。此外,你可能还需要检查你的防火墙设置,确保没有阻止你的请求。 如果你能提供更多关于你的网络环境、你正在尝试实现的功能以及你使用的设备或软件的信息,我可能能提供更具体的建议。对于具体的配置步骤,通常会因路由器的型号和制造商而异,因此你需要查看你的路由器的文档或联系制造商的技术支持以获取具体的指导。
  • 热度 34
    2019-8-8 15:19
    3873 次阅读|
    0 个评论
    创建PCIe空间映射子函数
    BAR初始化第一步,即BAR_SCAN子函数了解完了,下面我们了解初始化第二步,即TSK_BUILD_PCIE_MAP函数。再次复习下BAR初始化步骤( 在TSK_BAT_INIT任务里面其实是在模拟BIOS和驱动程序的操作,首先会对BAR寄存器进行赋值,然后会对BAR指向的设备内存进行IO或者mem映射,最后就是对设备的配置寄存器的参数写入。 ): /************************************************************ Task : TSK_BAR_INIT Inputs : None Outputs : None Description : Initialize PCI core based on core's configuration. *************************************************************/ task TSK_BAR_INIT; begin TSK_BAR_SCAN; TSK_BUILD_PCIE_MAP; TSK_DISPLAY_PCIE_MAP; TSK_BAR_PROGRAM; end endtask // TSK_BAR_INIT TSK_BUILD_PCIE_MAP源代码有点长,这里就不贴了。其主要目的就是执行存储器或I/O映射算法,并依据Endpoint需求分配Memory 32、Memory 64和I/O空间。具体来说,就是根据上一步 TSK_BAR_SCAN得到的各个BAR的range变量,检查这些range,根据检查结果,判断每个BAR是否被使能、及其对应的映射结果(是MEM32啊还是MEM64啊,或者是I/O空间)。仿真的时候会将检查结果打印如下: 注 :函数 TSK_BUILD_PCIE_MAP在检查正常的时候只会打印上图中的第一句;下面每个BAR空间的检查结果,是在调用函数TSK_DISPLAY_PCIE_MAP的时候打印的。 BAR空间初始化最后一步,看似就是将之前读回的BAR状态重新使用Type0配置写再写回去( 这里应该对应应用程序里的BAR空间基地址的产生,电脑开机扫描获取PCIe的各个BAR的信息,为它们分配地址空间,这里的Program应该是将分配好的地址空间基地址重新写回到BAR寄存器 ),比如对BAR0的写: // Program BAR0 TSK_TX_TYPE0_CONFIGURATION_WRITE(DEFAULT_TAG, 12'h10, BAR_INIT_P_BAR , 4'hF); DEFAULT_TAG = DEFAULT_TAG + 1; TSK_TX_CLK_EAT(100); 这个子函数还对其它BAR空间进行Type0配置写,个人觉得,其它BAR空间都Disable了,写不写都无所谓。值得注意的时候,该子函数最后还对PCI命令寄存器和PCIe器件控制寄存器进行了编程: // Program PCI Command Register TSK_TX_TYPE0_CONFIGURATION_WRITE(DEFAULT_TAG, 12'h04, 32'h00000003, 4'h1); DEFAULT_TAG = DEFAULT_TAG + 1; TSK_TX_CLK_EAT(100); // Program PCIe Device Control Register TSK_TX_TYPE0_CONFIGURATION_WRITE(DEFAULT_TAG, 12'h68, 32'h0000005f, 4'h1); DEFAULT_TAG = DEFAULT_TAG + 1; TSK_TX_CLK_EAT(1000); 注意上述两次写和BAR0写的区别,比如最后一个参数为4‘h1,则表示只有最低字节被Enable了,即只需传递低8位即可。 了解完BAR空间的初始化,后面开始了解正常的PIO仿真,即存储器写和存储器读。
  • 热度 3
    2018-4-23 19:32
    1883 次阅读|
    0 个评论
    一个非常悲伤的消息,俺的键盘Return键坏了! 虽然俺平时并不是暴力的人,难道敲击Return的时候会变暴力?Any way,下面是方法: 1. 在Fedora26下映射Return: Fedora26使用Wayland,所以xmodmap没有用,方法是修改/usr/share/X11/xkb/keycodes/evdev文件。 将Return和要更换的键的code值对调。 2. 在Ubuntu16.04LTS下映射Return: 安装xkeycaps,在图形界面上操作就可以啦。 3. 在Windows7下映射Return: 安装KeyTweak,在图形界面上操作就可以啦。
  • 热度 23
    2014-10-30 17:33
    1315 次阅读|
    1 个评论
    硬件平台: CC2530-F256 开发环境: IAR 8051 (版本 8.10 ) 参考: 1 、《 CC2530 User's Guide.pdf 》( swru191c ) 2 、《 IAR C/C++ Compiler Reference Guide.pdf 》 3 、《 IAR Linker and Library Tools.pdf 》 一、 CC2530 代码空间介绍       CC2530-F256 有着 256K 的 Flash ,其代码 存储 空间如图 2-2 (来自 CC2530User‘s Guide )所示,但是 51 单片机只支持 64K 的访问空间。        于是 CC2530 便采用 Bank 映射的方式,地址空间 0x0000-0x7FFF ,作为 ROOT ,用于存放启动代码等,地址空间 0x8000-0xFFFF 用于映射不同的 Bank ( 0~7 ),如图 4 (来自 IARC/C++ Compiler Reference Guide )所示,需要访问某个 Bank 的数据或代码时,将该 Bank 映射到地址空间 0x8000-0xFFFF 。         映射不同 Bank 时,需使用 FMAP 寄存器。 注: CC2530 ROM的不同地址: 物理地址 :0x00000~0x3FFFF Bank 地址 : Bank0:0x00000~0x07FFF Bank1:0x18000~0x1FFFF Bank2:0x28000~0x2FFFF Bank3:0x38000~0x3FFFF Bank4:0x48000~0x4FFFF Bank5:0x58000~0x5FFFF Bank6:0x68000~0x6FFFF Bank7:0x78000~0x7FFFF 二、 CC2530 存储空间使用         IAR 中 CC2530 的有两种代码模式, Near 和 Banked 。其中 Banked 模式是 ZStack 使用的模式,ZStack 的 ROM 使用大约在 100 多 KB 。其中 Near 是普通的 51  单片机 模式,只支持 64KB 的访问范围。         在目录 8051\src\lib 中有一个 iar_banked_code_support.s51 文件用于程序运行时自动切换 Bank。         测试代码如下: __code const char code0_buf @0x48000 = {0, 1}; #pragma location="BANK4" void demo1_code() { TRACE("FMAP: %02x\r\n", FMAP); TRACE("%02x %02x\r\n", code0_buf , code0_buf ); } __code const char code1_buf @0x58000 = {2, 3}; #pragma location="BANK5" void demo2_code() { TRACE("FMAP: %02x\r\n", FMAP); TRACE("%02x %02x\r\n", code1_buf , code1_buf ); }         其中 BANK5 , BANK4 是连接配置文件 ”lnk51ew_CC2530F256_banked.xcl“ 定义的 segment。运行结果如下:         串口打印的调试信息如下:
  • 热度 22
    2012-11-27 19:12
    2070 次阅读|
    2 个评论
    最近在学Windows编程,在学到GDI的时候给映射模式,尤其是窗口和视口之间怎么转换给搞得头大,现在总结一下,希望能给其他人一些帮助。 关于什么是设备坐标,什么是逻辑坐标,还有什么是设备坐标系统很多书上都有,这里就不再赘述,重点只讲一下窗口和视口是怎么转换的。首先讲一下三条规则,这是关键中的关键,一切的变化都由此而来。 映射模式被定义为从“窗口”(逻辑坐标)到“视口”(设备坐标)的映射。 xViewport=(xWindow-xWinOrg)*xViewExt/xWinExt+xViewOrg yViewport=(yWindow-yWinOrg)*yViewExt/yWinExt +yViewOrg 视口的(0,0)指的是客户区的左上角(也可以是屏幕或全窗口),x值向右增加,y值向下增加,这是不会改变的。 我们通过几个例子来解释。 一、 首先我们使用MM_LOMETRIC映射模式,它的x值向右增加,y值向下减小,视口范围是(1024,-768),意思是指xViewExt=1024,yViewExt=-768,窗口范围是(3200,2400),意思是xWinExt=3200,yWinExt=2400。这里的范围请只把它理解成一个数,而不要理解成一个区间,因为它只是要用来求xViewExt/xWinExt这样一个比值而已。 一开始的时候,xWinOrg,yWinOrg,xViewOrg,yViewOrg的值都是0。 所以当我们调用函数SetPixel(hdc,100,-100,0)时(GDI函数使用的参数是逻辑坐标,通过转换为(xViewport,yViewport)找到在客户区的位置) xViewport=(100-0)*(1024/3200)+0=32 yViewport=(-100-0)*(-768/2400) +0=32 也就是在客户区左上角右数32个像素点,下数32个像素点的位置画点。 而如果调用函数SetPixel(hdc,100,100,0),则 yViewport=(100-0)*(-768/2400) +0=-32,对应的点在客户区上方,显示不出来。 因为MM_LOMETRIC模式不能修改范围,只能修改xViewOrg和yViewOrg,所以我们可以使用函数SetViewportOrgEx(hdc,0,64,NULL)修改yViewOrg,这样就有 yViewport=(100-0)*(-768/2400) +64=32,即又显示在客户区左上角右数32个像素点,下数32个像素点的位置,直观上看是把坐标系的原点位置往下移动了64个像素点,可以这样想象一下,然而实质上的原因是yViewOrg的改变导致计算结果不同,设备点(0,0)仍然在客户区左上角,这一点一定要理解清楚。   二、上面的例子比较简单,为了加深理解,现在我们使用MM_ISOTROPIC模式,这个模式一开始的窗口范围和视口范围和MM_LOMETRIC相同,不同的是在这个模式下我们可以自己改变窗口范围和视口范围,且是各向同性的,也就是水平方向和竖直方向的每一个单位对应的像素点个数相同,。 和上面同样的问题在这个模式下我们有另外一种解决的方法,使用函数SetViewportExtEx(hdc,1024,768,NULL)改变yViewExt,则调用SetPixel(hdc,100,100,0)有 yViewport=(100-0)*(768/2400) +0=32,这样又可以正常显示了。 这里要注意一点,改变了yViewExt之后,现在向下的方向成了y值增加的方向,因为yViewExt/yWinExt的值为正,所以点(0,100)和点(0,200)算出来后点(0,200)在点(0,100)下方,而原来向下的方向是y值减小的方向,因为yViewExt/yWinExt的值为负,点(0,-100)和点(0,-200)算出来后点(0,-200)在点(0,-100)的下方,这就是为什么说MM_ISOTROPIC模式x,y值增加的方向可选的原因。 MM_ISOTROPIC模式比较灵活,理解了它之后对于GDI映射就能比较好的理解,最后以构建笛卡尔坐标系为例来分析帮助理解。 (1)SetMapMode(hdc,MM_ISOTROPIC); (2)SetWindowExtEx(hdc,1000,1000,NULL); (3)SetViewportExtEx(hdc,cxClient/2,-cyClient/2,NULL); (4)SetViewportOrg(hdc,cxClient/2,cyCleient/2,NULL); (2)将窗口大小设定为1000,(3)把视口范围宽度设定为客户区宽度的一半,高度设定为客户区高度的一半的负数,此时xViewExt/xWinExt为正数,yViewExt/yWinExt为负数,整个客户区只可以显示x值为正数,y值为负数的点,相当于坐标系的第四象限。因为要保持各项同性,所以窗口大小1000就对应于客户区高度的一半(因为高度比宽度小)。(4)把xViewOrg设为cxClient/2,把xViewOrg设为cyClient/2,相当于把坐标系的原点移动到客户区中心。这样最终就创建了一个以客户区中心为原点的笛卡尔坐标系,并向各方向延展1000个单位。 到这里应该就差不多了,有不理解的请仔细琢磨一开始讲的那三条规则,以上是个人理解,希望能有帮助,如有错误请指出。
相关资源