IPAD显示充电
IPAD连USB显示"不在充电",看着不爽.仔细看过MFI协议,有设置充电电流的命令,发了之后依然没有效果(硬件通过设置D+,D-上拉也可以设置充电电流,没有测试)据同事介绍,装华硕的补丁软件Ai Charger后,充电显示正常.用BUS HOUND抓包,依葫芦画瓢,驱动加载后发送Requeset包0x40,0x40,0x00,0x64,0x00,0x64,0x00,0x00,充电显示正常(没有测试充电电流是否有变化)[@more@]
HTML5:未来OS的基础?
新浪科技讯 北京时间2月27日晚间消息,美国手机芯片制造商高通、西班牙电信运营商Telefonica和火狐浏览器开发商Mozilla基金会(Mozilla Foundation)共同打造的智能手机操作平台在周一开幕的2012年移动通信世界大会上亮相。 据悉,上述三家公司自去年开始就致力于为更为廉价的智能手机研发操作平台。 该平台采用HTML5标准,并将其和Linux技术的部分核心元素相结合,使得智能手机无需搭载独立的操作系统,同时也加快了新机型的推出速度。 由于削减了传统操作系统的部分结构,搭载该平台的设备的运行速度将有大幅提升,其设备组件
查看线程所在模块
wince可以比较方便的查看线程相关的信息,如CeShell或者KernelTracker,可以通过系统接口得到线程占用CPU时间,堆栈等等.然而知道了出问题的线程,却没有标准的接口得到线程所在模块.附件是列出当前所有线程的小工具,大部分代码来自CeShell,以及private下的handle.c(将线程Handle转换为PTHREAD,以得到入口地址)该工具(点击下载)只能在wince6上运行,结果输出到调试串口,结果如下: ========== showth ========== PROC: Name hProcess: CurAKY :dwVMBase:CurZone THRD: State :hCurThrd:hCurProc: CurAKY :Cp :Bp :Kernel Time Use
wince7初体验
wince7大概叫winec7更加合适,因为它的全称是Windows Embedded Compact 7.费了很大功夫装上运行起来.比CE6.0看起来没有大的差别,呵呵,桌面上的logo倒是大了不少.wince7要求VS2008,而且明确要求机器上不能安装之前的CE版本.找个没有安装CE的机器说容易也不容易,说难也不难,我有VMWARE.运行起来是颇费周折.略做记录.1 VMWARE安装windows 7,其实XP,vista都可以2 安装VS20083 安装VS2008 SP14 安装wince7(下载地址 https://connect.microsoft.com/windowsembeddedce)wince7目前还不支持DeviceEmulator,方便起见,安装了x86和armv6的CPU支持建立基
在wince6设备上运行魅族 M8 程序
[@more@]
Remote Display Control for Windows CE
PB 自带的工具,通过网络(或者Activesync),在PC上远程控制wince设备(包括Smartphone,PPC)添加了两个功能1 自动连接,启动cerhost的时候,通过activesync拷贝cerdisp到wince设备并自动连接cerhost2 保存截图到BMP文件软件截图[@more@]转帖请注明出处(http://simplaman.itpub.net)下载程序及源码
wince下鼠标钩子
这篇文章算是wince下按键钩子的姊妹篇吧.关键的代码也就是这么一句QASetWindowsJournalHook(WH_JOURNALRECORD, MouseProc, &msg).但是验证起来却是颇费了一番功夫.写下这么几句,希望可以省掉您不少功夫:1 用VS联机调试时,虽然QASetWindowsJournalHook返回成功,但实际上系统不会调用MouseProc2 MouseProc中不会调用MessageBox[@more@]转帖请注明出处(http://simplaman.itpub.net)点击下载示例代码 (在WINCE5,PPC2003,WM5上测试正常)
基于命令行的WINCE驱动开发工具
1 主要功能查看,修改,比较物理内存,寄存器值.进程管理动态卸载,加载驱动(需要wince5或以上)动态卸载,加载服务(需要wince5或以上)[@more@]2 版本此次发布有两个版本,都是基于命令行的,功能完全一样同步版 rconsole.exe + shell.dll rconsole.exe在PC上,通过ActiveSync同wince机器连接.调试串口版 cedbg.exe 在wince机器上运行,在PC上通过串口(连到wince的调试口)发送命令,接收命令响应注 : 如果需要在wince6下访问物理内存,需要手工将mapper.dll拷贝到wince机器根目录或者其他能加载的目录.3 使用说明3.1 功能介绍# 访问物理内存,寄存器mem
wince remote call profiler(性能分析)
如何使用1 建立工程,CPU类型必须于目标机型一致如ARMV4I,所以选择WCE Application,然后选择empty project2 project settings 中,link页,Object/library modules中添加 cecap.lib(前面有空格),Ingore libraries中添加,libc.lib(前面有逗号).C/C++页Project Options最后添加 /callcap(前面有空格)cecap.lib 在C:Program FilesCommon FilesMicrosoft SharedWindows CE ToolsPlatmansdkwce500lib 下(wce500是目标机器平台)3 添加文件main.cpp,(文档中要求必须include文件cecap.h,实际上可以不包含该文件)4 编译(确保Active Configuration是ARM
wince下按键钩子
wince上按键钩子网上有很多源码,但有不同程度的误解(如钩子回调函数必须在单独的动态库),且示例代码相当繁琐(LoadLibrary,GetProcAddress...).下面为我在PPC2003和WM5上测试通过的代码: 点击下载示例代码几点体会1 必须在主线程中调用GetMessage,否则KeyBoardProc不会被调用,从此也可见wince上按键钩子是基于窗体消息机制的,并不需要将KeyBoardProc注入到其他进程,因此不需要单独的动态库2 该钩子只能钩按键消息,如keybd_event发送的消息,可以截获软键盘的上下左右等按键,但不能截获软键盘上数字字母键[@more@]
wince 自带的web server
同arm linux相比,wince的网络功能用的相对较少.实际上,wince的网络功能并不逊色,比如"remote display control"就能通过网络远程控制终端.wince自带的web server也是功能强大,绝非arm linux上轻量级的boa之类可比(当然arm linux上有很多其他选择).PB工程加上web server的组件:Catalog-Core OS-Windows CE devices-Communication Services and Networking-Servers-Web Server,如果需要ASP,加上JScript或者VBScript,体验一把吧.编译下载,连接好网络.就可以通过浏览器访问web server了.缺省,服务器文件目录为/windows/www/wwwpub.静
wince remote spy 原理
一直好奇remote spy是如何截获其他窗口消息的,用IDA肢解了一下,大概流程如下1 用GetWindow得到窗口树2 针对用户选择的窗口,调用 GetWindowLong(hwnd,GWL_WNDPROC) 得到之前的消息处理函数3 SetWindowLong替换窗口消息处理函数到自己的处理函数,在该函数内记录消息,并会用CallWindowProc调原来窗口消息处理函数验证:打印出特定窗口的GWL_WNDPROC,发现remote spy前后GWL_WNDPROC发生了变化,关闭消息窗口后,GWL_WNDPROC恢复之前值[@more@]
嵌入式:本机查看串口调试信息
串口输出信息是嵌入式系统开发最基本的调试手段.但由于空间,外观的限制,很多产品无法在最终产品上连接出调试串口.前后期调试手段的差异,给产品的后期调试带来不少的麻烦.可以在最初开发的时候考虑到输出信息的重定向.如wince应用程序,调试时可以将RETAILMSG即 重定向到主机开发工具上.如果是Release版本,也可以用wprintf替换NKDbgPrintfW,修改注册表,拷贝console.dll到windows目录,调试信息就会输出到控制台窗口.如果是系统调试信息,动态加载的驱动也可以用wprintf,不过wprintf会比较费时间,非动态加载部分则相对麻烦,除非在OEM函数如OEMW
ActiveSync Service Provider实现wince联系人同步
1 什么是ActiveSync Service Provider(ASP)参考文章,引用2处有一个完整的例子引用1 Developing ActiveSync Service Providers: The First Look引用2 Developing ActiveSync Service Providers: Desktop Part Implementation引用3(中文)2 为什么要'重现'联系人同步实际上,mobile和wince上都有现成的联系人同步组件.如果你可以接受POOM复杂的接口,接受POOM中联系人的固定属性以及POOM存储联系人的实现方式,那好,加上POOM同步组件就可以了.POOM联系人在wince上是存在ObjectStore中的Contact数据库(CEDATABASE中).在wince5上,ObjectStore只能在
wince6.0下DeviceEmulator 基于共享文件夹的hive实现
从wince6.0开始,注册表缺省就 是Hive based.不过缺省情况下Hive会存放在Ram Filesys中,掉电后就不复存在.修改注册表即可将Hive存放到DeviceEmulator的共享文件夹中,修改部分的注册表如下(粗体部分为添加内容); HIVE BOOT SECTION; @CESYSGEN IF FILESYS_FSREGHIVE[HKEY_LOCAL_MACHINEinitBootVars]; "DefaultUser"=""; "Start DevMgr"=dword:1 "RegistryFlags"=dword:1 "Flags"=dword:F; @CESYSGEN ENDIF[HKEY_LOCAL_MACHINESystemStorageManagerAutoLoadObjectStore] "M
wince hive based 注册表清除
1 在OEMIOControl中实现IOCTL_HAL_GET_HIVE_CLEAN_FLAG,系统启动时,根据特定标志决定是否需要清除HIVE.[注 这种方式会清除所有HIVE中内容,包括注册表,数据库等,不仅仅是注册表]2 调用函数RegReplaceKey,如RegReplaceKey(HKEY_LOCAL_MACHINE,NULL,NULL,NULL);设置成NULL后需要复位,相应分支注册表才会恢复为缺省内容[@more@]
WINCE System Event Log
关于wince上Eventlog的介绍与使用http://blog.ccw.com.cn/blog-htm-uid-17284.html 有比较详细的描述.补充几点1 WINCE5.0 下 Eventlog没有单独可选的catalog选项.可以在平台的bat文件(或者工程属性)中添加 SET CE_EXTRA_MODULES=eventlog eventlogmsgs2 WINCE6.0 上 Eventlog组件为Core OS-CEBASE-Core OS Services-System Event Log若别的工程有编译好的eventlog.dll,可以修改platform.bib(或project.bib),添加文件eventlogmsgs.dll,eventlog.dll,修改platform.reg,添加如下[HKEY_LOCAL_MACHINESYSTEMObjectStore] "EnableEven
wince6.0下用户程序访问物理地址
应用程序直接访问物理地址可以极大的方便硬件驱动开发.如直接访问LCD控制器,可以很直接的对各种参数进行微调,不必一次次的编译打包,下载运行.wince6.0之前可以通过MmMapIoSpace将物理地址映射到程序空间.MmMapIoSpace内部实现就是常见的VirtualAlloc+VirtualCopy.Wince6.0对内核模式也用户模式做了相当大的改动,具体如何还不是很明了,清楚的是用户态程序调用VirtualCopy物理地址时会返回失败,导致MmMapIoSpace返回0.绕过去的思路就是加载部分代码到内核模式,在这部分代码中完成地址映射.有两种实现的方法,一个是通过ActivateDevice加载一个
GSM07-10(multiplexer protocol)笔记
multiplexer protocol(以下简称MUX) 简单一点就是多路复用,将原有的一条物理通道虚拟成几条可并发的逻辑通道,同网络协议中的物理链路,逻辑链路有点类似.实现上也类似,将逻辑通道上的数据打包,加上包头包尾,再发到物理通道上.上图为建立逻辑通道,发送数据的例子.其中AT+CMUX=0是物理通道上的数据,告诉GSM MODEM(以下简称猫)我要进到MUX模式了,猫响应OK.主机依次发送SAMB0,1,2,3,建立编号为0~3的逻辑通道.猫响应UA表示同意.然后主机就可以使用逻辑通道发命令了,如上图的UIH(1,"ATrn"),猫也在该通道(地址为1)上响应UIH包,数据同物理
ucgui 字体相关实现
ucgui支持等宽字体和变宽字体,支持不同编码格式字符集如ascii,unicode,shift-jis 字体定义为 typedef struct { GUI_DISPCHAR* pfDispChar; GUI_GETCHARDISTX* pfGetCharDistX; GUI_GETFONTINFO* pfGetFontInfo; GUI_ISINFONT* pfIsInFont; tGUI_ENC_APIList* pafEncode; U8 YSize; U8 YDist; U8 XMag; U8 YMag; union { void *pFontData; const GUI_FONT_MONO* pMono; const GUI_FONT_PROP* pProp; } p; U8 Baseline; } GUI_FONT; 不同字体对应的显示方式可能有差异