主题 : wince5 下如何访问一个 物理地址 复制链接 | 浏览器收藏 | 打印
级别: 侠客
UID: 6170
精华: 0
发帖: 60
金钱: 300 两
威望: 60 点
综合积分: 120 分
注册时间: 2009-05-22
最后登录: 2020-01-11
楼主  发表于: 2010-02-22 12:27

 wince5 下如何访问一个 物理地址

wince 5 下 如何访问 0x8000000 这个地址   对他进行读写操作呢 ?

硬件上 我 连接 了ldata0--ldata15  和 读写信号 用的 micro 2440 的 con5接口 扩展连接的,最好能给个例子 写谢谢了
能实现访问 0x8000000 这个地址就行 ,不在wince下的访问比较好实现,可是在wince下就不知道怎么实现了
友善的板子还不错
级别: 新手上路
UID: 1892
精华: 0
发帖: 39
金钱: 195 两
威望: 39 点
综合积分: 78 分
注册时间: 2008-10-09
最后登录: 2019-12-05
1楼  发表于: 2010-02-22 14:04
PHYSICAL_ADDRESS pha = {addr,0};
ULONG * ptr=(ULONG*) MmMapIoSpace(pha,1,FALSE);
WRITE_PORT_ULONG(ptr,data);
MmUnmapIoSpace(ptr,1);

addr 就是你想写的地址,如0x20000000
data 是数据
级别: 侠客
UID: 6170
精华: 0
发帖: 60
金钱: 300 两
威望: 60 点
综合积分: 120 分
注册时间: 2009-05-22
最后登录: 2020-01-11
2楼  发表于: 2010-02-27 18:48
谢谢 你的程序 可以,测试过了 ,还有个问题


我手上有个 3.3供电的 点阵图形液晶 和 micro2440 做如下连接
硬件连接

data0-----data7                                和屏幕的 data0---data7 连接
LnOE(读) LnWE(写)                 和屏幕的 读 写 信号 连接
nGCS1                                                   和屏幕的 CS(片选 ) 连接
LADDR3                                                和屏幕的 C/D (命令/数据) 连接
电源接开发板的地和3.3v
这样 屏幕的地址就是 0x08000000 (传命令) 0x08000008 传数据

用开发板带的 那个无系统的 myled 程序 修改 main函数 对屏幕进行操作 可是发现 怎么都无法点亮屏幕
可以确定的是 屏幕保证是 好的 操作时序也是正确的(8051上调好的程序 修改地址移植的),
通过supvivi 串口控制 选择 [d] 下载运行 程序始终无法通过。 我还发现0x08000001地址操作程序就会崩溃
我估计是 程序下载到sdram上运行的 SDRAM运行用的是32 位数据宽 低2位数据线不能操作地址的原因。
我把bank1的 访问周期已经设成最大 数据宽度也(设置bank1的数据宽度) 试着设置过始终 都不行,示波器看 nGCS1 什么信号都看不到
请高手帮忙分析一下,或者分析出不行的原因,(用gpio 模拟总线 屏幕可以正常显示,已经试过了)。
QQ 28797337
级别: 侠客
UID: 6170
精华: 0
发帖: 60
金钱: 300 两
威望: 60 点
综合积分: 120 分
注册时间: 2009-05-22
最后登录: 2020-01-11
3楼  发表于: 2010-02-27 19:56
级别: 侠客
UID: 6170
精华: 0
发帖: 60
金钱: 300 两
威望: 60 点
综合积分: 120 分
注册时间: 2009-05-22
最后登录: 2020-01-11
4楼  发表于: 2010-02-28 12:16
是不是MMU没有设置好

MMU_SetMTT( 0x08000000 , 0x08000008 ,0x08000000,RW_NCNB);
级别: 新手上路
UID: 9672
精华: 0
发帖: 41
金钱: 215 两
威望: 46 点
综合积分: 82 分
注册时间: 2009-10-09
最后登录: 2016-09-08
5楼  发表于: 2010-06-06 00:24
#include <windows.h>
#include <ceddk.h>
#include <nkintr.h>
#include <oalintr.h>
#include <pm.h>
#include "pmplatform.h"
#include "Pkfuncs.h"
#include "s2440.h"
#pragma comment(lib,"ceddk.lib")

  PHYSICAL_ADDRESS pha = {0x08000014,0};

    ULONG * ptr=(ULONG*) MmMapIoSpace(pha,4,FALSE);
    WRITE_PORT_ULONG(ptr,7);
    MmUnmapIoSpace(ptr,1);
编译时出错了,不知何解,请高人指点,谢谢了。
1  LEDDriver.obj : error LNK2019: unresolved external symbol MmUnmapIoSpace referenced in function "unsigned long __cdecl LED_Write(unsigned long,void const *,unsigned long)" (?LED_Write@@YAKKPBXK@Z)
2      LEDDriver.obj : error LNK2019: unresolved external symbol WRITE_PORT_ULONG referenced in function "unsigned long __cdecl LED_Write(unsigned long,void const *,unsigned long)" (?LED_Write@@YAKKPBXK@Z)
3      LEDDriver.obj : error LNK2019: unresolved external symbol MmMapIoSpace referenced in function "unsigned long __cdecl LED_Write(unsigned long,void const *,unsigned long)" (?LED_Write@@YAKKPBXK@Z)
站得高,望得远。