长期从事嵌入式软件开发,包括µC/OS 、WinCE、Linux和Android等。
N久以前写过一篇《WinCE下自定义的大软键盘》,这个自定义软键盘就是为RM905a+项目来做的。RM905a+的系统分辨率是640*480,WinCE原生键盘小的太小,大的又太大。所以就去除了大软键盘其中很多没必要的按键,既满足了使用需求,又提高了用户体验,不至于一个软键盘就占了大半个屏幕。
虚拟仪器(VI) RM905a+医用放射性核素活度计 RM905a+活度计远程检定方法研究 车载导航
前文《RM905a+医用放射性核素活度计》中已经提到,基于WinCE5.0系统的RM905a+可以很方便的实现远程界面显示和控制。所以远程检定的主要工作在于服务器端的业务部分。基于《WinCE桌面助手》扩展了一下,增加了客户信息登记功能、通过网络同步客户仪器中的核素信息功能、远程操作指令发送和显示功能、活度测量值识别功能、处理测量值、保存检定结果、形成报表并支持打印。
RM905a+医用放射性核素活度计大概是我做的第一个WinCE项目,RM905a的升级版。RM905a是曾经的老大LZF 2000年左右的作品,基于51单片机开发,数码管显示,稳定可靠,好似目前还在生产和使用中。
虚拟仪器技术就是利用高性能的模块化硬件,结合高效灵活的软件来完成各种测试、测量和自动化的应用。虚拟测量仪器(VI)概念由美国国家仪器公司NI(National Instruments)提出,并引发了传统仪器领域的一场重大变革,使得计算机和网络技术得以长驱直入仪器领域,和仪器技术结合起来,从而开创了"软件即是仪器"的先河。
之前在做WinCE车载方案时,曾做过一个小工具TraceMonitor,用于显示WinCE系统上应用程序的调试信息,特别是在实车调试时,用于监控和显示CAN盒与主机之间的串口数据。因为需要抢占市场先机,经常在新车上市前,就得配合CAN解码盒厂商同步调试车机端软件。
一般来说,车载导航主机都需要外接若干个UART的外设,如支持HFP的蓝牙模块、与原车通信的CAN解码盒模块、u-blox的GPS模块和DVD机芯等。早年使用Telechips TCC8902+WinCE6.0的方案,该芯片串口比较多,基本够用。
VERSION LOG for Android Remote Displayer Features:The app allows you to see your Android device remotely and capture the screen.
Books The Linux Programming Interface Android Internals Android Security (and Not) Internals 博客 墨香 Android基础&进阶 深入理解Android 老罗的Android之旅 ...
WinCE驱动调试助手V2.9 http://www.cnblogs.com/we-hjb/archive/2009/05/17/1458725.html WinCE串口调试助手V2.1 http://www.
工欲善其事必先利其器,之前做WinCE开发时,经常写一些小工具以提高开发调试的效率,如WinCE驱动调试助手、WinCE串口调试助手、WinCE6.0寄存器访问工具、WinCE远程桌面助手和S3C2410 IIC调试助手等,虽然有些功能不算完善,但在实际工作中还是发挥了一些作用。
《Windows Embedded Compact 7初体验》中曾简单介绍了其开发环境的搭建,时隔一年,最近项目中打算正式导入进来,于是需要再次搭建其开发环境。由于它不能和先前所有版本的CE开发环境共存,之前是在虚拟机里安装的。
借助于第三方提供的驱动程序,WinCE6.0也能支持NTFS文件系统,可以访问超大容量的移动硬盘,并播放存储于其中的1080P的视频文件。 需要注意的是WinCE下NTFS中文件及目录名区分大小写,即在同一目录下,能同时创建多个文件名大小写不同的同名文件,如下图所示。
《WinCE下多份BSP的维护技巧》中曾介绍了维护不同项目BSP的方法,可以很方便的使用同一解决方案,在多个BSP中任意切换,编译出不同项目对应的IMAGE。即便对于同一项目来说,有时也需要编译不同IMAGE,即同一份BSP、同一个解决方案,编译出不同版本IMAGE。
目前还没有新的发现,先把所有现象再次整理如下,望牛人帮忙指正。 完整代码: 1 int _tmain(int argc, _TCHAR* argv[]) 2 { 3 volatile PS3C6410_GPIO_REG pGPIO1; // 注意:与vol...
最近在调试一块S3C6410的核心板。为了验证核心板扩展槽上的所有接口,LD特地设计了一个扩展底板,上面遍布红红绿绿的LED。软件上用总线读写和GPIO来控制这些灯。观察LED的亮灭,该亮的亮,该灭的灭,说明接口没有问题,否则就需要拿给硬件检查了。
Rebuild Current BSP and Subprojects并不像通常所理解的,会强制重新编译整个BSP以及所有子工程,实际上,它仅仅强制重新编译了BSP,而子工程是没有强制重新编译的,这里说的强制重新编译是指以"build -c"的方式重新编译所有代码。
驱动调试助手是针对Windows CE做的,在Windows Mobile中使用会有一些问题,最主要的就是其菜单栏被Windows Mobile系统的任务栏给遮住了,导致相应的功能无法正常使用,如下图所示。
在一些项目中,系统需要实时监测U盘或SD卡的插入拔出。当文件系统加载成功后通知特定应用程序,启动自动播放功能。在U盘或其他外部存储设备移除时,也需要立即通知相应的程序,停止访问这些设备,如播放其中的音视频文件,以免程序出错。
世乒赛如火如荼的进行着,WinCE7的移植工作也紧张有序的开展起来。一边看着王浩打柳承敏,一边移植WinCE7。王浩有惊无险的赢了,WinCE7也基本移植成功了,高兴! WinCE7的移植方法,在《Windows Embedded Compact 7初体验》中已经简单介绍过,具体细节有待进一步整理,先上两幅WinCE7的截图,这还是第一次亲见WinCE7的界面真身。
Windows Embedded Compact 7试用版已经发布一段时间了,微软官网提供的是在线安装包,不太方便下载和安装。微软嵌入式中文社区提供了离线安装包的下载,地址如下: http://download.winitpro.com.cn/MS/MSEmbed/WinCompact7evaluation_1.rarhttp://download.winitpro.com.cn/MS/MSEmbed/WinCompact7evaluation_2.rar 感谢David.Zang提供了方便,让广大WinCE的开发人员能在第一时间接触到WinCE7.0。
前段时间整理了《WinCE下调试串口的动态复用》,基本实现了调试串口与普通功能串口之间的动态切换。其中实现的方法有点欠缺,在重新烧录或者升级系统后,导致系统无法正常启动。这算是个BUG。该功能加上才几天,就陆续有好几个同事碰到。
《Memory Usage Tool for Windows CE 6.x》中介绍了一个用于查看和分析WinCE6.0内存状态的工具,具体内容参见原文。 该工具主要有两部分组成,一个是运行于设备端的命令行程序(DevHealth60.exe),另一个是运行于PC端的分析和显示内存状态报告的工具(DevHealthViewer6.exe)。
车机项目中用到了很多串口外设,如DVD机芯、GPS、蓝牙、雷达和胎压监测等,而主CPU(TCC89XX)与小MCU(STM32)之间也是通过串口通讯的。一时之间,串口使用有点捉襟见肘的感觉,只能把调试串口拿出来用做普通串口。
最近一周一直在忙于测试NAND文件系统的稳定性和可靠性,今天终于有所进展。测试组所有同事齐上阵,加上小高和我,测试了一天,都未发现问题。虽然还不能保证完全OK,但至少有所改善了。 测试组今天主要做了文件拷贝、比较和删除的循环操作。
之前在《WinCE中公开源代码的编译方法》和《WinCE下定制触摸校准界面的方法》里介绍了如何修改Public目录下的源代码并且快速编译的方法。这里补充一个定制WinCE6.0标准界面的方法。
Windows Embedded Compact 7已经出来半年多了,一直没时间搞。最近它又出了Refresh的版本,电脑也换了个1T的硬盘,所以就下载下来体验一把。 先说说开发环境的搭建。
之前整理过一篇《WinCE6.0中应用程序如何直接访问物理空间》的短文,文中介绍的方法突破了WinCE6.0系统本身的限制,使应用程序能够直接读写指定的内存地址,如访问系统显存。在WinCE中,使用托管代码编写应用程序直接访问物理空间,之前也曾简单介绍过,当时是基于VB.NET实现的,请参考《WinCE下VB.NET程序的开发》。
《WinCE桌面助手》基本实现了远程操作WinCE设备的功能,支持鼠标和键盘。而这个远程键盘工具,除了支持键盘外,还支持远程字符粘贴,挺有想法的一个功能,在某些时候,很有作用。 CeKeyboard的界面如下图所示。
一般情况下,WinCE流驱动的索引为0~9。应用程序中,通过CreateFile(_T("XXXN:"),…)打开对应的驱动,N也为0~9。这样看来,似乎在WinCE下同名流驱动个数被限制在10个以内。
这两天用C#在WinCE6.0上做了两个后台程序,一个是获取天气预报,另外一个是获取歌词。拿到设备上运行时,都会弹出系统繁忙的沙漏图标,与设备的界面灰常的不和谐,也失去了后台运行的意义。 如何去除这个用于提示等待的沙漏图标呢?方法有二,一是不让它弹出,二是修改图片资源,让它即使弹出来也不可见。
这一周尝试着用C#写了两个后台程序,主程序用CreateProcess()传递命令行参数并创建进程。在实现的过程中,碰到了一个问题,命令行参数中如果带有空格该如何处理。一直认为,命令行中的空格用作参数的分隔符。
《合并BIN文件的两种方法》介绍了如何合并BIN文件,在这个基础之上再配合hex2bin.exe和bin2hex.exe这两个小工具就可以很方便的将两个HEX文件合并成一个了。当然,最终目标是在编译完成之后,自动完成所有转换的工作。
在单片机的开发过程中,经常需要将两个单独的BIN文件合并成一个文件,方便烧写和生产。下面结合STM32的IAP Bootloader Code和Application Code的合并,介绍两种合并BIN文件的方法。
在《WinCE驱动程序的分类》中曾提到,WinCE6.0的流驱动既可以加载到内核态也可以加载到用户态。下面通过一组图片简单说明一下这两种驱动的关系。 首先编写一个流驱动WCEDrv,代码如下。
在电脑上通过ActiveSync同步软件安装WinCE或者Windows Mobile的应用程序时,如果异常退出,会引来一点麻烦。每次同步上以后,都会弹出"添加/删除程序"的对话框,提示“没有可用的设备兼容程序”。
拿到模块后,先请ZWEI帮忙把模块飞到板子上,最后的情形有点像蜈蚣跟蜘蛛在打仗,而且难分难解。 飞完线后用串口调试助手发送AT#指令,以确认蓝牙模块和串口都能正常工作。结果,运气不太好,发出去的指令就好像石沉大海了一样。
TexFAT(Transaction-safe Extended FAT)与TFAT功能一样,在WinCE6.0之前,包括Windows Mobile6.5使用的是TFAT,WinCE6.0和WP7则使用TexFAT。
今天偶然发现了一个WinCE下的系统资源查看工具,个人觉得非常不错,值得收藏。 http://www.wolfgang-rolke.de/wince/是它的官方网站,有兴趣的同学可以自己看看去。
在《四线电阻式触摸屏驱动的优化》基础之上,针对手写输入的灵敏度参数过低又做了一些调整,比原来有所改善,如下图所示,现在能达到72/s。一般以正常速度手写时为60/s左右,所以应该能满足绝大多数的需求了。
很早以前在《四线电阻式触摸屏驱动的优化》一文中,介绍了TCC89平台触摸驱动的改造方法。实践证明,使用此方法后,触摸屏几乎再也没有出现跳笔的情况,达到了预期的目的。最近YJUN在调试应用时,发现一个问题,怀疑跟触摸屏驱动有关系——触摸驱动在一秒内上报给操作系统的点数太少,导致界面显示在滑动时不太流畅。
对《基于Windows 7旗舰版搭建WinCE6.0开发环境的过程》做一点补充,本文简单介绍一个快速安装WinCE补丁包的方法,其实也很简单,就是写一个批处理文件INSTALL_CE_UPDATES.bat,让它自动安装已经下载好的补丁包。
在BSP开发的早期阶段,我们一般是Clone一个与目标平台最相近的的BSP,然后以此为基础做修改。在实际开发过程中,还可能同时存在多种型号的产品。它们的硬件几乎一样,主要是外设不同,如LCD分辨率、按键定义和GPIO的使用等。
上一篇介绍了VB.NET读写WinCE注册表的方法,用着确实方便。在驱动或者应用程序开发的过程中,其实也有一种简便的方法读写注册表,使用微软提供的CReg类(Registry helper class)。
与桌面Windows系统类似,WinCE将有关操作系统、应用程序和驱动的设置信息都保存在系统注册表中。WinCE的注册表与桌面系统中的组织方式也差不多,包括了如下四个根键: HKEY_CLASS_ROOT,包含了文件扩展名信息和COM子系统的配置信息 HKEY...
重装Windows 7之后,今天第一次正式编译WinCE内核,结果又遇到了一点状况,截图如下。 从编译的阶段来看,Sysgen已经成功完成,在执行Post-Sysgen Build的操作时编译PLATFORM\COMMON\SRC\COMMON\CACHE\.\global.c文件出了错,这个错误之前一直没有碰到过——fatal error C1033: cannot open program database ''。
用过VS2005的人都知道,它提供了两套远程工具软件,一个可从VS2005的菜单"Target”——"Remote Tools”打开,而另一个在“开始”菜单——"Microsoft Visual Studio 2005”——"Visual Studio Remote Tools”下。
在Windows 7旗舰版上,每次运行VS2005时都会弹出如下图所示的对话框。 如何避免弹出这个碍事的提示框呢?显而易见的方法就是勾掉“总是显示此消息”,但这个方法看起来似乎治标不治本。
首先感谢JeffreyLi提供了更简便的安装WinCE6.0 R3的方法,今天验证过了,确实比我之前整理的《WinCE6.0 R3的安装步骤》方便很多,十分感谢! 为了方便大家参考,重新整理的安装步骤如下: * Please install the...
怪事经常有,最近特别多。这两周接二连三的碰到了很多奇怪的问题。刚开始都是百思不得其解,不过后来大多都找到了合理的解释,唯独今天这个,折腾了一天,最后还是不得不暂时放下。 先说说现象吧,使用原厂提供的最新的USBHOST驱动编译出来的系统,读写U盘不正常。