社区
嵌入开发(WinCE)
帖子详情
WINCE中如何操作板极寄存器
cherishhu
2004-07-18 08:39:52
WINCE中如何操作板极寄存器,读取和写入
请高手指点
...全文
107
9
打赏
收藏
WINCE中如何操作板极寄存器
WINCE中如何操作板极寄存器,读取和写入 请高手指点
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
cjyun
2004-07-21
打赏
举报
回复
那应该怎么映射啊??
请教!!
yrj
2004-07-21
打赏
举报
回复
你总不会为每个寄存器单独映射一次虚拟地址吧
yrj
2004-07-21
打赏
举报
回复
你需要对以256个字节为边界的一个段的地址做映射,你不能对任意边界的地址做映射,而且映射的内存大小必须是以page作为单位的
cherishhu
2004-07-21
打赏
举报
回复
Sitsang板上的板级寄存器
LLEDR 0x0800 0024
HLEDR 0x0800 0028
EX_BCR 0x0800 002c
EX_BSR 0x0800 0030
.............
手册上写的,我也看了前面的,应该是物理地址的,但它们除256后不都是一样的吗,那我怎么分它们这些寄存器呢
yrj
2004-07-21
打赏
举报
回复
有些错误,你能确定0x08000024是物理地址,而不是经过一级映射的虚拟地址
如果是物理地址,你就需要这样调用:
bRet=VirtualCopy((PVOID)lpv,ADD_LLEDR/256,SIZE,PAGE_READWRITE|PAGE_NOCACHE|PAGE_PHYSICAL);
cjyun
2004-07-21
打赏
举报
回复
yrj(机枪)高见!
是页面映射的访问的问题,
首先,要用定义lpv为 PVOID类型
定义SiZE为255
访问寄存器时用short int类型转换,
ss.Format(_T("LLEDR %d "),*((short int*)lpv));
访问相应的其他寄存器只是偏移地址的改变。
ss.Format(_T("LLEDR %d "),*(short int*)lpv+ x );即可
我试了可以的
cherishhu
2004-07-20
打赏
举报
回复
自己顶一下
cherishhu
2004-07-20
打赏
举报
回复
//另一个按钮的事件里,写0xFF,应该16个LED都亮才对的
这段里最后少一句
*lpv=0xffff;
cherishhu
2004-07-20
打赏
举报
回复
我的程序是这样的
#define ADD_LLEDR ((PVOID)0x08000024) //LLEDR为一个板极寄存器,User Guide上写的地址是0x08000024
#define SIZE 0x4 //它下一个寄存器地址为0x08000028,但它是一个十六位的,我觉得2好
CString ss;
int *lpv;
BOOL bRet,bRet2;
//一个按钮读数据
lpv=(int *)VirtualAlloc(0,SIZE,MEM_RESERVE,PAGE_READWRITE);
bRet=VirtualCopy((PVOID)lpv,ADD_LLEDR,SIZE,PAGE_READWRITE|PAGE_NOCACHE|PAGE_PHYSICAL);
ss.Format(_T("LLEDR %d "),*lpv);
m_list.AddString(ss);
//另一个按钮的事件里,写0xFF,应该16个LED都亮才对的
lpv=(int *)VirtualAlloc(0,SIZE,MEM_RESERVE,PAGE_READWRITE);
bRet=VirtualCopy((PVOID)lpv,ADD_LLEDR,SIZE,PAGE_READWRITE|PAGE_NOCACHE|PAGE_PHYSICAL);
没有语法错误,但执行出来没有值的,即使我先按的赋值的按钮再读也没有值,也没有错误提示
高手看下是怎么回事呀
WinCE
5.0全程导学
由于本人拿到实验板时以上两步已做好,即我拿到的实验板上就有烧好的
WinCE
5.0
操作
系统,因此以上两步是我猜测的! 3、打开VS,按照天嵌手册4.2节内容进行
操作
,如果成功运行,则OK!本步骤成功后则说明平台搭建成功...
定制
WinCE
6.0
操作
系统的几个关键步骤
为一个新的硬件设备定制
WinCE
6.0
操作
系统,一般需要完成以下几个主要步骤: 1. 针对特定的硬件设备创建板级支持包(Board Support Package缩写为BSP),BSP必须包括BOOTLOADER、OEM适配层(OEM Adaptation Layer缩写为...
WinCE
OAL
中
的OEMInit函数
OEMInit是OAL
中
的重要函数,用来初始化板级的硬件设备。实际上,
WinCE
的内核最开始只做了CPU级的初始化,随后会初始化调试串口,然后就会调用该函数了。应该说OAL
中
的OEMInit函数有点像EBOOT
中
的OEMPlatformInit函数...
WinCE
系统下BootLoader的开发
微软为每种类型的CPU都提供了某种标准开发板的BootLoader例程,因此通常的做法是:从这些例程
中
寻找与硬件平台最接近的作为标本程序,然后再从自己的硬件平台上入手做相应的改动。可以说,一个功能齐全的Loader,...
WinCE
控制面板和驱动通信
//在这里执行相关
操作
,比如:读写注册表,
操作
寄存器
等等 //------------------------------------------------------------------------- } CloseHandle(hEvent); return 0; } 3.接下来,...
嵌入开发(WinCE)
19,502
社区成员
41,568
社区内容
发帖
与我相关
我的任务
嵌入开发(WinCE)
硬件/嵌入开发 嵌入开发(WinCE)
复制链接
扫一扫
分享
社区描述
硬件/嵌入开发 嵌入开发(WinCE)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章