长期从事嵌入式软件开发,包括µC/OS 、WinCE、Linux和Android等。
M8的USB端口有两种工作模式,U盘模式和同步模式。U盘模式下,文件拷贝速度较快,同步模式下M8可以通过PC访问Internet,在开发调试时也经常使用该模式。M8自带的管理工具在与电脑连接的情况下不能在这两者之间切换,必须先移除USB连接,修改模式后再插上。
这两天在WinCE6.0上调试了下3G模块,华为的EM730,它支持GPRS和WCDMA。虽然没有涉及到驱动的移植(没有源代码),但调试过程还是几经周折,记下来以便后用。 EM730是MINI PCI接口的,也支持USB。
USB On-The-Go是什么 USB接口的设备现在是随处可见了,打印机、相机、手机、MP3等几乎目前能想到的消费类电子设备都具有USB接口。USB传输速率快,接口简单、支持热插拔的特性,使其在诸多接口中脱颖而出,大有统一天下之势。
WinCE6.0的R3已经发布了,为了方便大家下载,简单做了一个下载助手,能自动生成R3所有安装文件的下载链接,使用迅雷下载全部链接就免去了通过Setup.exe在线安装的苦楚。 需要的同学请到这里下载,http://files.
仔细看了昨晚搜刮到的那篇关于WinCE错误报告的文章,受益匪浅。使用流程已经介绍得足够详细,这里不再赘述。需要参考的同志,请直接看原文。这里补充一点原文中貌似没讲到的,个人觉得很关键的地方,如何在产品中保留错误报告。
这个对话框,大家应该都不陌生。程序员做开发时经常会见到,用户肯定也曾被它骚扰过。很显然,这是软件的BUG所致。软件中存在的BUG肯定是会出现的,只是时间的问题,或早或晚,有些很幸运在测试时就会被发现,那些不幸的就成了客户抱怨的缘由。
/************************************************************************//* * Copyright (C) Meizu Technology Corporation Zhuhai China * All rights reserved.
今天整理了一个M8下的远程桌面客户端工具,在模拟器中测试了一下,能用。 M8RDP共有五个文件,直接拷贝到机器上,运行M8RDP.exe即可。 M8RDP.exe的界面,很简单,它只是用来调用微软提供的cetsc.exe程序。
把原来的驱动调试助手稍微改造了一下,现在基本可以在M8上正常使用了,除了字体有点不协调之外,其他都还可以。 为了能在英文的WinCE6.0系统上正常使用,所以界面也全部改成英文,免得出现一堆方格格,让人摸不着头脑。
觊觎M8N9了,还没有入手,继续等着。相信东西会越来越好的,固件越来越稳定,信号也不再是问题……最好还能小降一点,估计是不可能了。。。 以前倒腾过一个M8的SDK,纯粹的山寨版,基本没用。
键盘作为收入设备,在嵌入式系统中应用广泛。它与PC键盘不同,嵌入式系统中的键盘千差万别,随实际应用的场景不同而不同。今天在这里介绍就是一种非标准键盘的驱动程序设计。在一些应用中,可能只会用到有限的几个按键。
今天去参加MCTS 70-571的考试了,过程有点波折,结果还行,考了978分,不管怎样,通过就好。 本来打算上午考的,到那边报名时被告知上午有人考试,下午1点后才能考。又让我多忐忑了几个小时。
Windows Embedded CE 6.0的中断处理过程主要分为两部分: 中断服务例程(ISR):处于内核中的低级处理程序,中断发生时首先被调用。 中断服务线程(IST):处于驱动或者应用中的中断处理线程,由系统调度,完成大部分的中断处理工作。
驱动调试助手的下载次数已经过万,很多网友也提出了一些宝贵建议,非常感谢。这里再做一个更新,V2.9中主要增加了注册表查找和注册表项重命名这两个功能,至此,有关注册表操作的所有功能基本都已实现了。
指针是用来存放另外一个变量的地址的变量。C语言中,指针被广泛使用。有时是因为非用不可,有时是因为它能让代码更紧凑,更高效。指针也是一个定时炸弹,稍有不慎会导致程序崩溃。另外,指针乱飞也会影响程序的可读性。
GPS Tracker已经基本成型了,虽然有点闭门造车的感觉,但经过反复修改,自己觉得还不错。好用不好用,得看用户怎么用,然后根据他们的建议再改。 今天看博客,发现WinCE驱动调试助手已经被下载超过5600次了,有点出乎意料,但说明这个小工具还是蛮受实用的。
WMP100的开发,真是举步维艰,寸步前行。虽然越来越顺手,但还是不断碰到奇怪的问题。想是想不通的,百度一下,还是不知道的,Google里也冒不了几个泡。就说数学函数在OPEN AT中的使用,就让我很是郁闷了一阵。
ADL User Guide for Open AT. OS v6.1 今天在调试程序时,发现了ARM-GCC下sprintf()的一个问题,它不支持浮点数。以前从来没碰到这个问题,而且认为这肯定不会有问题,折腾了半天,最后在ADL_User_Guide中找到了答案。
从WinCE5.0开始,微软就公开了WinCE的相关源代码。一方面,这使我们可以更深入的学习WinCE操作系统,另外一方面,也让定制个性化WinCE操作系统成为可能。这里要介绍的就是如何编译WinCE公开的源代码,以开机输入密码的界面为例。
前面曾说过WinCE6.0中的RomImage.exe存在一个BUG,在某些情况下不能正确生成nb0文件,不管是正式版还是试用版。最近发现试用版Platform Builder 6.0中的RomImage.
跑了两天的现场,终于对用户有了一个交代。最后还用远程显示工具录制了一段演示视频,供他们参考,效果也不错。但写文档必须用图片的,找了很久的AVI转BMP的工具,都没能找到好用的,郁闷坏了。所以整理了下以前弄的一个WinCE下的截屏工具,希望能方便用户使用。
WinCE开机即运行定制的Shell是很多系统的基本要求,有时还需要屏蔽WinCE自带的Shell。WinCE中程序的自启动,一般有两个实现方法,修改注册表和添加自启动快捷方式。修改注册表比较方便,如下: [HKEY_LOCAL_MACHINE\init] "Launch70"="MyApp.exe" "Depend70"=hex:14,00,1e,00 只要将MyApp.exe打包到NK,并在platform.reg中加入上面的注册表信息,这样WinCE启动时便会自动运行该程序。
前段时间,介绍了一个WinCE下的串口调试软件Serial Splitter Mobile 3.2。它的主要功能是将一个物理串口克隆成N个,供不同的应用程序使用,以监视物理串口收发的数据。今天介绍一个WinCE下的串口虚拟软件VSPD Mobile 4.2。
关注M8有一段时间了,主要是因为它采用WinCE6.0的操作系统,很想搞一个来玩玩。不过,至今还没正式上市。内测版体验版什么的,也没偶的分,相比那些狂热的煤油们,自叹弗如啊。 M8无疑是国产手机中最受关注也是最受争议的一款手机。
串口是嵌入式系统中应用很广的一种通讯接口。在WinCE中,通常会有一个串口供调试使用,另外的串口可与外围设备连接,如GSM和GPS等模块,以获取相应的信息并进行处理。 在WinCE中,为了使用串口,必须有相应的串口驱动程序,一般在BSP中都有实现。
1.WMP100 Core CPU 2.Peripheral Interfaces 3.Software Architecture
下午拿到了一块WAVECOM的板子,上面采用的是他们的无线CPU(Wireless MicroProcessor)WMP100,运行OPEN AT RTOS,这种方案在无线M2M领域的应用应该是很广泛的,价格、体积以及软硬件的设计方面都很有优势。
WinCE应用程序的开发是WinCE开发中很重要的一个环节。本文将简单介绍一些WinCE应用程序开发的基本概念。 先说开发工具,目前用得比较多的开发工具有EVC4(SP4)、VS2005、VS2008和Platform Builder。
文件系统是一个实现了数据的存储、组织、处理和获取等操作的抽象数据类型。一般分为磁盘文件系统,网络文件系统和特定功能的文件系统。 磁盘文件系统主要包括FAT(FAT12、FAT16、FAT32),NTFS、HFS、ext2、ext3,现在ext4也出来了。
折腾了一天的MULTI-BIN,最后发现PXA270&&K9K8G08不能正常使用MULTI-BIN。使用MULTI-BIN后,虽然系统启动快很多,但运行时很不稳定,GWES.exe和Device.exe等系统组件,总是不规律的出现Data Abort。
1G变8T的问题解决了,K9K8G08已能在PXA270上正常使用。问题的根源是修改头文件中的一个宏定义(CMD_READ1)时不小心弄错了。 简单总结一下,从64M的K9F1208升级到1G的K9K8G08,主要修改Read、Write的函数即可,如果在BOOTLOADER中使用了BINFS,需要修改BP_Init()的参数,超级终端的打印信息会提示应该设为多少。
PXA270上的双启动已经实现了,WinCE的启动速度也提高不少,接下来开始升级NAND FLASH的驱动,由K9F1208(64M Bytes)升级到K9K8G08(1G Bytes)。 首先对比这两款NAND FLASH的Datasheet,找出两者的异同。
如果WinCE的默认语言是英语,也没有支持MUI的话,很多中文的应用程序就不能正常显示了,汉字全变成了方框。这里介绍一种比较简便的方法,让那些方框变回有用的汉字,象变魔术一样。:-D 先说一下中文显示为乱码的两个原因。
PXA270上的双启动功能已经实现了,但又引入了一个新问题,WinCE的启动太慢,大概需要2分钟!这显然是不能忍受的。通过两天的努力,现在已经缩短到20秒,虽然还是有点长,但已改善不少了。
最近有一些同学发邮件问我,驱动调试助手到底能动态加载哪些驱动,为什么在加载USB设备驱动时总是失败。要解释这个问题,首先得弄清楚WinCE中驱动的相关概念。本文将主要介绍WinCE下驱动程序的分类。
双启动的意思是,在PXA270上同时支持Linux和WinCE操作系统,通过外部控制,选择进入哪一个系统。很多处理器都原生态的支持双启动,甚至多启动。如S3C2410的MCU本身支持NOR BOOT和NAND BOOT。
VI已告一段落,RM905的问题也解决了,这周开始学习EK-STM32F的开发板,从零开始。以前没玩过这板子,手上除了这块开发板和一张ST官方的光盘外,别无资源,连标配的串口线和USB线都没,真得从零开始! 先熟悉一下开发板的硬件,它的MCU是ST公司的STM32F103VB,核心属于ARM Coretex M3系列,板载了ULINK-II仿真器,外围接口也很丰富,包括两个串口、CAN口、LCD、SD、USB等,板子做得很不错,据说促销时才卖199RMB,相当超值。
今天在这里给大家介绍一本Windows Embedded CE6.0的经典好书,《Windows Embedded CE 6.0 Fundamentals》。这是11月6日在梧桐俱乐部参加微软Windows Embedded活动时拿到的,书很新、很全、很细,很值得一看。
S3C2410的内核是ARM920T,所以,这里先介绍一下ARM920T的异常。ARM920T中有一个当前程序状态寄存器(CPSR),其中BIT6和BIT7分别控制FIQ和IRQ的使能与否。大家经常说的开中断和关中断,就是指的设置这两个BIT。
GPS Tracker真是无处不在。今天看一新闻,巴西一厂商竟然把GPS Tracker做到内衣里去了,匪夷所思。 A Brazilian model displays lingerie with a GPS device attached (the dark square on her waist) in Parana, Brazil.
GPS Tracker即GPS跟踪仪,它跟目前流行的GPS导航仪有一点相似,GPS导航仪结合GIS技术,给用户提供导航功能。而GPS Tracker则是将当前的GPS信息返回给特定用户,一般用GSM模块通过发送短信的方式实现。
前文分析了S3C2410 WinCE6.0 OAL的启动代码,本文接着介绍OAL的移植过程。在继续之前,再明确一下WinCE6.0 OAL的作用。在WinCE6.0中,OAL首先起了穿针引线的作用,这一点可从其启动代码看出来。
到现在为止,我们已经了解了S3C2410平台上WinCE6.0的启动过程,包括NBOOT、EBOOT、OAL.exe、Kernel.dll的工作流程。关于WINCE600的目录也做了介绍。准备工作都做好了,接下来开始介绍S3C2410平台上WinCE6.0的移植。
在介绍S3C2410的WinCE6.0移植之前,我们先熟悉一下WINCE600的目录组织和PQOAL的相关概念。 这里简单说一下WinCE6.0开发环境的搭建。WinCE6.0的开发环境是Platform Builder6.0,但与Platform Builder 5.0不同的是,它作为VS2005的一个插件来用。
“谁动了我的GPIO”,我想很多做嵌入式开发的同行可能也碰到过类似的问题:硬件没有按照设计的程序工作,好像是相关的寄存器在别处被改了。遇到这种情况,一般有两种处理方法,一是通过JTAG仿真器进行调试,单步跟踪,确认相关的寄存器就是我们要设的值。
这两天在调试一款新的硬件平台,它采用的MCU依然是S3C2410。该平台新增了一个RTC模块,采用的芯片是DS1337。这是一个IIC接口的时钟芯片。在开始调试时碰到了一些问题,MCU始终无法与DS1337通讯,走了些弯路,浪费了不少时间。
KITL(Kernel Independent Transport Layer)即内核独立传输层,它为我们提供了一种调试WinCE的简便方法。KITL将通信服务协议和用于通信的硬件分离开来。所以我们在创建硬件传输层时就省去很多麻烦,否则我们自己必须实现与设备进行数据交互的协议。
WinCE6.0的OAL跟WinCE5.0中的有较大差别。了解这些差别,对我们移植OAL部分很有帮助。本文将简要介绍WinCE6.0 OAL的特点。 WinCE5.0将内核、OAL和KITL链接成一个内核可执行文件NK.exe。
通过前两篇文章的介绍,我们已经知道NBOOT用来引导EBOOT,继而EBOOT加载并引导WinCE操作系统(NK)。那么,WinCE6.0的启动过程又是怎样的呢?本文基于S3C2410的平台做一个详细的分析。
WinCE6.0的Romimage.exe依然存在BUG,跟WinCE5.0一样。当新建的工程和PB的安装目录不在同一分区时就不能正确生成nb0文件。本以为WinCE6.0已经解决这个问题,不想饱汉不知饿汉饥,他们似乎没有发现这个BUG,也就不可能修复了。