winCE嵌入式开发程序入门
- 格式:doc
- 大小:31.50 KB
- 文档页数:10
[Windows CE嵌入式系统开发概述][傅曦][研发经理][多普达通讯有限公司]本次课程内容包括z嵌入式系统概述z Window CE开发环境z Window CE开发概述收听本次课程需具备的条件z一定的C/C++基础z一定的嵌入式开发概念Level 200嵌入式系统是什么?嵌入式系统的定义嵌入式道对象体系(设备或产品应用)中的专用计算机应用系统z嵌入性:完成应用系统或产品功能的智能内核z专用性:实现特定的用途z计算机系统:简化的、软硬件一体化z应用性:面向用户、面向产品、面向应用传统PC机是面向个人的,是一个通用平台嵌入式计算机系统是面向设备的,是一个专用平台嵌入式系统技术发展的历史z20世纪70年代:单片机引入z20世纪80年代:嵌入式RISC CPU与DSPz20世纪90年代:嵌入式实时操作系统占主导地位z21世纪初期:网络化、智能化的嵌入式系统广泛的应用于:¾网络、通讯¾多媒体消费电子¾工控、医疗电子、仪器仪表等领域嵌入式系统技术特点:z智能内核:嵌入式处理器-RISC结构/DSPz软硬一体化:无冗余;软件固化(Firmware);硬件要求高z专用性:主要完成单一功能/用途z实时性:时间相关任务z高可靠性:适用于应用环境的多样性z移动性:低功耗、高性价比z技术融合性:计算机、微电子、通讯、控制、多媒体、传感器、网络等技术当前嵌入式产品应用规模z嵌入式计算机在应用数量上远远超过了各种通用计算机,一台通用计算机的外部设备中就包含了5-10个嵌入式微处理器,键盘、鼠标、软驱、硬盘、显示卡、显示器、Modem、网卡、声卡、打印机、扫描仪、数字相机、USB集线器等均是由嵌入式处理器控制的。
在制造工业、过程控制、通讯、仪器、仪表、汽车、船舶、航空、航天、军事装备、消费类产品等方面均是嵌入式计算机的应用领域。
z嵌入式系统是将先进的计算机技术、半导体技术和电子技术和各个行业的具体应用相结合后的产物,这一点就决定了它必然是一个技术密集、资金密集、高度分散、不断创新的知识集成系统。
目录:实验1:Windows CE 5.0的启动实验2:Windows CE 5.0的基本使用实验3:恢复默认设置实验4:构建Windows CE 5.0开发平台实验5:建立一个Hello World应用程序实验6:SQLite数据库应用实验7:WinCE内核定制——支持SQLCE3.0数据库应用实验8:小型点餐系统的需求分析实验9:小型点餐系统的概要设计实验10:点餐系统的后台实现实验11:数据同步RDA方法实验12:SQLCE数据库的基本操作实验13:点餐功能的实现实验1:windows CE5.0的启动以下所有实验PC机上安装的是Windows XP操作系统。
MagicARM2410实验箱在出厂时已经预装了2个操作系统,一个是Linux,另外一个是Windows CE 5.0。
.开机后,系统默认启动Linux 2.4.18。
MagicARM2410实验箱提供2种方法启动Windows CE 5.0。
一种是在液晶屏上直接启动;另一种是通过PC机串口终端启动。
1、通过在液晶屏上直接启动(1)断开MagicARM2410实验箱上DeviceARM2410核心板附近的跳线JP8,然后打开实验箱的电源,当液晶屏上出现如图1.1所示的提示时,请按住实验箱上4*4键盘上的任意一个按键,当液晶屏上显示出按下的键值时,请松开按键。
(2)松开按键后,可以看到液晶屏上显示如图1.2所示的菜单,然后按按键“4”,这时液晶屏上提示Start run Windows 5.0(Evaluation Version)for MagicARM2410,系统开始启动Windows CE 5.0。
(3)等待大约30s后,Windows CE 5.0启动完成,在液晶屏上可以看到Windows CE 5.0桌面,如图1.3所示。
(4)在图1.3中,大家可看到熟悉的Windows风格的桌面;其中“我的设备”相当于PC 机Windows操作系统的“我的电脑”,还有“回收站”、My Documents等快捷图标。
《嵌入式WinCE系统开发》实验指导书张小进编写适用专业:计算机科学与技术闽江学院计算机科学系2009年7月前言嵌入式C语言设计实验由验证性实验一、WinCE 平台的构建与配置,验证性实验二、线程同步调试实验,验证性实验三驱动程序结构实验,验证性实验四IO接口控制实验,验证性实验五动态链接库实验,验证性实验六UDP和Ping实验,综合性实验七CAN总线实验构成,通过实验应达到下列要求:1.熟悉嵌入式WinCE系统开发平台的搭建,PB集成环境的使用。
掌握Windows CE 内核的配置、编译方法;掌握构建一个适合特定开发平台的Windows CE 系统方法;为后续的其它实验打下基础。
2.加深对嵌入式WinCE系统的认识,了解WinCE 下IO 访问机制和原理;掌握WinCE 线程编程方法;掌握线程同步原理和实现线程同步的方法;进一步熟悉 的使开发环境;能较熟练地进行嵌入式WinCE的程序设计。
3.熟悉嵌入式WinCE系统驱动程序的结构, 了解驱动程序的原理和功能;掌握流式接口驱动程序的结构;掌握编写流式接口的驱动程序的方法;能根据实验内容的要求进行验证性的编程实验以掌握驱动程序的框架结构。
4. 掌握在Windows CE 下访问硬件I/O 寄存器的一般方法;了解WinCE 下IO 访问机制和原理;了解数码管(LED)的显示及控制原理;能根据实验内容的要求进行验证性的编程实验以掌握I/O接口控制方法。
5. 了解WinCE 动态链接库的基本原理;掌握WinCE 动态链接库程序的编程方法;掌握采用静态和动态调用动态链接库方法;能根据实验内容的要求进行验证性的编程实验以掌握动态链接库的实现技术和使用方法。
6. 了解UDP 网络通信的基本内容;掌握PING 实现的基本原理;了解TCP/IP 和ICMP 协议;能根据实验内容的要求进行验证性的编程实验以掌握嵌入式WinCE 下的网络通信。
7. 了解串口通信的基本原理;掌握串口编程的方法;掌握应用程序的GUI编程;能根据实验内容的要求进行综合性的编程实验以初步掌握串口通信的应用。
嵌入式系统开发入门教程嵌入式系统是现代科技领域中的重要组成部分,广泛应用于各个领域,如智能家居、汽车电子、医疗设备等。
作为一名初学者,了解嵌入式系统开发的基本概念和流程是非常重要的。
本文将为你介绍嵌入式系统开发的入门教程,帮助你快速掌握开发嵌入式系统的基本知识和技能。
首先,让我们了解什么是嵌入式系统。
简单地说,嵌入式系统是一种专门设计和制造的计算机系统,用于特定应用领域。
与传统的计算机系统不同,嵌入式系统通常具有小型化、低功耗、高效能和实时性的特点。
这是因为嵌入式系统往往用于执行特定的任务,并且需要在受限的资源条件下运行。
接下来,我们将了解嵌入式系统开发的基本概念。
在开发嵌入式系统之前,你需要掌握以下几个方面的知识:1. 编程语言:C语言是嵌入式系统开发中最常用的编程语言。
你需要学习C语言的语法和编程技巧,掌握嵌入式系统的开发和调试技术。
2. 微控制器:嵌入式系统通常使用微控制器来实现其功能。
你需要了解微控制器的工作原理、结构和接口。
常见的微控制器包括8051、AVR、PIC等。
3. 电路设计:了解电路设计的基本原理和常用元件。
熟悉使用电路设计软件,如Eagle、Altium Designer等。
4. 嵌入式操作系统:学习使用嵌入式操作系统,如FreeRTOS、uC/OS等。
了解操作系统的特点和使用方法,掌握任务调度、内存管理、驱动开发等技术。
5. 传感器和外设:嵌入式系统常常需要与各种传感器和外设进行交互。
学会选择和使用合适的传感器和外设,并了解它们的工作原理和接口协议。
当你掌握了上述基本概念后,就可以开始开发自己的嵌入式系统了。
下面是一个简单的嵌入式系统开发流程:1. 确定需求:明确你的嵌入式系统需要解决的问题和实现的功能。
编写需求文档,描述系统的基本功能和硬件要求。
2. 电路设计:根据需求文档设计电路。
选择合适的微控制器和外设,并进行连线和布局设计。
3. 嵌入式软件开发:使用C语言编写嵌入式系统的软件。
嵌入开发(WinCE)的一些经验[摘录]WindowsCE下Unicode和Ansi字符间互相转换的例子纵所周知,WindowsCE下编程99%的问题都和Unicode有关.比如文件编辑,一般都保存为Ansi格式;无线通讯中控制Modem需要发送的AT指令,必须是Ansi格式;网络通讯中,PC端一般都是Ansi的,为了和PC上协议兼容,在WindowsCE中必须把要发送的一个指令从Unicode转换成Ansi格式…等等.很多初学者对于这些问题总是感到很麻烦.其实WindowsCE 中有标准的API实现了Unicode和Ansi字符间的互转.下面就是网络通讯中的程序片断.m_psocket是指向一个从CCeSocket派生的类,如果没有连接的话其为NULL;m_snd是要发送的CString,和一个EDIT相对应.//发送函数片断void CClient1Dlg::OnButtonSend(){// TODO: Add your control notification handler code hereif (!m_psocket) //无Socket连接,退出{MessageBox(TEXT(―无连接!‖),TEXT(―信息‖));return;}UpdateData(TRUE); //保存输入的字符串到m_sndunsigned char buf[129]; //发送缓冲区ZeroMemory(buf,sizeof(buf)); //缓冲区清零CString tmpstr(m_snd); //复制要发送的字符串int multibytelen=WideCharToMultiByte( //计算从Unicode转换到Ansi后需要的字节数CP_ACP, //根据ANSI code page转换WC_COMPOSITECHECK | WC_DEFAULTCHAR, //转换出错用缺省字符代替tmpstr.GetBuffer(m_snd.GetLength()), //要转换的字符串地址m_snd.GetLength(), //要转换的个数0, //转换后字符串放置的地址0, //最多转换字符的个数,为0表示返回转换Unicode后需要多少个字节0, //缺省的字符:‖\0″0 //缺省的设置);WideCharToMultiByte( //转换Unicode到AnsiCP_ACP,WC_COMPOSITECHECK | WC_DEFAULTCHAR,tmpstr.GetBuffer(m_snd.GetLength()),m_snd.GetLength(),(char *)buf, //转换到缓冲区中128, //最多128个字节0,);int sendcount=m_psocket->Send(buf,multibytelen+1); //发送转换后的缓冲区CString statusstr;statusstr.Format(TEXT(―共发送字节数:%d‖),sendcount);m_status.SetWindowText(statusstr); //更新显示栏}程序接收到的字符串最后保存到CString tmpstr中.//接收函数片断void MyCeSocket::OnReceive(int nErrorCode){// TODO: Add your specialized code here and/or call the base classunsigned char p[129]; //接受缓冲区ZeroMemory(p,sizeof(p)); //接收缓冲区清零this->Receive(p,128); //接收128个字节int widecharlen=MultiByteToWideChar( //计算从Ansi转换到Unicode后需要的字节数CP_ACP,MB_COMPOSITE,(char*)p, //要转换的Ansi字符串-1, //自动计算长度0,);CString tmpstr;tmpstr.GetBuffer(widecharlen); //为转换后保存Unicode字符串分配内存MultiByteToWideChar( //从Ansi转换到Unicode字符CP_ACP,MB_COMPOSITE,(char*)p,-1,tmpstr.GetBuffer(widecharlen), //转换到tmpstrwidecharlen //最多转换widecharlen个Unicode字符);m_clientdlg->m_listbox.InsertString(0,tmpstr); //插入到listbox中显示CCeSocket::OnReceive(nErrorCode);}注意:以上代码都是在WindowsCE样板机上运行,PC端发送和接收到的字符均为Ansi格式的.把以上代码稍微修改一下用到自己的产品中,就可以利用以前的协议无缝连接PDA和PC.以上代码在MicroSoft Embed Visual C++ 3.0 + 联想天玑5100(WindowsCE3.0)+ Eagle Tec 10M CF卡通过.用eVC编制了一个ActiveX控件,提示需要registered to the desktop,用vs提供的ActiveX control test container 进行注册,可怎么也注册不上为什么?应该怎么注册呢?可以用VC的ActiveX control test container 进行注册,只不过要进行稍微改动。
WinCE嵌入式开发程序入门MicrosoftWindows CE是紧凑的、高效的和可升级的操作系统,它被广泛的应用在各种嵌入式式的产品中,从手持电脑到专门的工业控制器和消费用电子产品中。
Windows CE已经通过了其自身的能力证明:它能够满足32位嵌入式式程序开发的需求。
同样重要的是: Windows CE使嵌入式式系统的设计者得以充分利用Microsoft的32位基于Windows的开发工具的全部的函数。
嵌入式的应用软件选择Windows CE的首要原因之一是Microsoft Win32应用编程接口(API)的广泛应用。
从运行在Microsoft WindowsNT操作系统下的高端服务器到最小的台式机和内嵌式的应用中,WIN32 API几乎是所有为面向Windows开发32位应用软件的内核。
本文的目的是向那些开发基于Windows CE的新的嵌入式式系统的开发者介绍WIN32 事件驱动编写程序。
本文将:概述32位Windows操作系统和WIN32编程模型。
介绍线程,事件和消息是如何操作的。
给出Win32如何管理Windows CE的内存。
解释 Win32意外操作的概念。
比较同步和不同步设备的界面的不同的方法。
总结明确定义的API的优位。
本文并不是刻意要完全做Win32的编程指南,而是要介绍用Win32作为嵌入式式应用程序的开发工具。
简介对于全世界的成千上万的程序开发者来说,Win32程序模式很常见。
WIN32是台式机或企业广泛应用的强大目标,而且随着Windows CE的涌现,它也成了嵌入式式系统的理想的程序界面形式。
WIN32为Windows CE操作系统提供了一致的,文档完备的并且函数强大的程序界面。
用WIN32在Windows CE平台开发的程序同其他的WIN32程序差不多;这意味着程序开发者在开发新的面向Windows CE操作系统的应用程序的时候,能够应用这些大量的WIN32的程序资源、第三代工具和外部的专门的技术。
具有WIN32编程经验的程序员会发现创建新的(维护已有的)面向Windows CE设备(如手持电脑)的应用程序远比创建类似的面向特殊的平台或其他应用不广的嵌入式式的操作系统的应用程序简单。
嵌入式式系统的设计者们很快意识到Windows CE的强大,并且以惊人的快速使这个操作系统与它们的新产品一体化。
可是,许多嵌入式式软件的开发者对Windows的事件驱动程序的一般技术不熟悉。
对于这些软件开发者来说,在他们开始他们第一次的基于Windows CE的项目之前,了解一些WIN32的基础的知识是有好处的。
什么是WIN32?“WIN32”表示对于所有的Microsoft 32位平台的一种普通的应用编程接口(API)。
这些平台通常指:Windows 95, Windows 98Windows NTWindows CE本文我们主要关注Windows CE操作系统,可是需要弄清楚的是大多数 Win32的应用编程接口对上面所有三种平台都适用。
这种同用的应用编程接口的优位有很多:容易登录到应用程序中,有大量的已有程序的知识,范例和第三代软件的资源。
平台的差别WIN32的应用编程接口定义了你作为一个程序员有用的Windows平台。
WIN32应用编程接口的目的是提供了一个常用的界面的设置,可是虚拟,不同的平台由于不同的特性及硬件的约束,其应用编程接口也不同。
WIN32平台家族的一些成员支持全部的WIN32的应用编程接口(下简称API),而其他的只支持一部分的API。
为紧凑的、嵌入式式的应用软件和小型设备而设计的Windows CE,WIN32的API最受限制。
尽管如此, Windows CE 的API也是足够完善的,能够处理实际的大量的高级的嵌入式式应用程序。
WIN32与Microsoft基本类库(MFC)用WIN32界面设计并不是创建32位基于 Windows的应用程序的唯一的途径。
另一种重要的途径是可在WIN32与 Microsoft Visual C++开发环境使用的Microsoft基本类库(MFC)。
MFC为许多(不是所有)的WIN32的API进行了高度的封装(图1)。
通常,MFC提供了代表重要的WINDOWS的用户界面对象的类,象窗口,对话框,画刷,画笔,和字体。
MFC也为没有任何用户界面要求的嵌入式式应用软件提供了相应的类。
MFC类的成员函数调用WIN32API的函数,可以使复杂的应用程序的设计巧妙的简化。
作为WIN32的程序员,你可以自由的选取使用C或C++和WIN32 API,或者用C++与MFC。
VISUAL C++开发系统对于所有的,包括 Windows CE 的WIN32的目标操作系统都支持以上的两种开发系统。
本文直接介绍WIN32 API。
应用 Windows CE下的MFC的详细的消息,参阅Windows CE SDK文档。
WIN32程序模型WIN32是超越所有32位WINDOWS平台的常用和一致的(尽管并不全部相同)API。
为了对WIN32 API有一个透彻的了解,以便高效的使用它的函数,了解一些底层操作系统的基础十分重要。
本节总结了32位操作系统和 Win32 API的最重要的概念,为你更深入的学习提供基础。
要得到更多更详细的关于32位WINDOWS的体系结构、 Win32 API、以及其他的程序设计的主题,你可以读一本关于那个主题出版的书。
Microsoft出版社能提供一些这样的书籍;在本文的最后,列着部分这些书的条目。
Windows CE的内核和 Win32 API那些对WINDOWS CE的人可能会有一个错觉,认为它仅仅是现有的操作系统(如WINDOWS95)降级版。
但事实上Windows CE是以小型的、高度用户化的面向嵌入式式应用程序的操作系统开发起来的。
在WINDOWS CE排除(或代替)了一些基于WINDOWS CE的应用软件所不需要的操作系统特性的同时,它的内核也具有大量的其他Microsoft 32位的操作系统的最精华的东西。
例如在Windows NT 下,所有的在Windows CE下运行所应用软件都运行在有优先权的多任务处理环境下,在被全保护的内存空间里。
还有,象 Windows NT一样,Windows CE支持本地统一的字符编码标准码字符串,使它更适于国际推广。
可是,不象其他的32位WINDOWS平台,, Windows CE是十分紧凑和用户化的,仅仅占用小于200K 的内存。
Windows CE的WIN32 API比其他的32位的Windows操作系统的WIN32 API 要小;它只包括大约相当于Windows NT的半数的API。
但是 Windows CE的WIN32 API也有其他系统所没有的特性。
例如:通知API,它能够操作系统的层次,而不是在运行的应用程序的层次上处理通知事件(如时钟)。
触屏的API和对Windows CE的数据库的内置的支持是其他的操作系统所没有的。
触屏的API使用于触觉敏感显示器的屏幕校正和用户交互的管理容易实现,而数据库的API提供了快速简捷的访问紧凑的、一般用途的数据库的工具。
另一个关于Windows CE的鲜为人知的方面是它的高度的模块化;嵌入式式系统开发者(用Microsoft Windows CE内含的面向Visual C++的软件包)能够创建一个对于它们的独特的硬件平台和应用软件用户化了的Windows CE的版本。
Windows CE操作系统为设计提供了全新的设计环境。
Windows CE的开发者几乎不需要支持原有的应用程序或设备,所以操作系统在设计时可以考虑到应用一些最新的思想和应用程序,并且应用最先进的嵌入式式的32位微处理器产品作为它的硬件目标平台。
这对于一个使用Windows CE平台的WIN32 API的用户来说意味着什么呢?这意味着对于现代的、32位的嵌入式式系统,它是一种更简单的API,更加优化的目标操作系统。
下面,我们将研究一些重要的WIN32 API和Windows CE操作系统的内部的内容。
程序和线索了解WIN32 API和Windows CE操作系统的底层内容的第一步就是了解多任务和多线索索应用程序是如何组织的。
WIN32术语中,程序被定义成一个正在运行中的程序实例。
象其他的32位Windows 平台一样,Windows CE是一个多任务的操作系统,在一个运行中的程序里,它支持执行多个线索所。
对于嵌入式式的应用程序,Windows CE的多线索索执行能力是它函数的重要的体现。
这样就使WIN32嵌入式式程序开发者优先考虑WIN32的线索索的创立与同步。
WIN32的线索索的处理同其他常用的嵌入式式的操作系统是有区别的。
不象Unix或其派生的系统,32位Windows平台从一开始设计就支持多线索索应用程序。
线索索管理(时序安排,同步和资源管理)由内核来完成,程序开发者利用函数装入内核(通过WIN32 API访问)来建立和管理他们应用程序中的线索索。
例如,如果一个嵌入式式应用程序必须监视多个输入设备并且在监视到一个或多个设备上不同步发生的事件的时候要作出恰当的反映。
更进一步,如果这样一个程序也需要更新一些共享的资源(如全局数据结构,磁盘上的文件,或其他设备)来作为与相关设备事件的反映。
象这样的一个程序需要一个可*的线索索管理系统。
这恰恰是WIN32 API能够提供的函数:多个线索索能够快捷并且容易的用WIN32 API线索索创建界面建立;同步线索索(多个线索索同时访问一个数据)可以通过不同的方式完成,包括关键的段,有名称和没有名称事件,以及互斥的目标。
Windows CE 被设计成在执行这些同步时占用最少的程序资源。
这位对那些函数不强大的开发者来说十分重要;因为内核来负责线索索的管理,不需要使用另外的处理器来循环检测程序或线索索完成,以及执行其他的无用的应用程序层次上的线索索管理。
内核已构建好如何管理若干的线索索并且使程序高效地进行的程序。
对于包括若干个程序的应用程序,WIN32 向用于线索索、程序管理和同步提供了一套的完备的处理方法。
这些线索索管理特性非常适于嵌入式式应用程序软件,并且对Windows CE开发者是容易得到的。
消息在32位windows平台上运行的程序更专门化,程序的线索依赖于消息来初始化程序,控制系统资源并且与操作系统和用户通信。
windows消息有各种各样来源,包括操作系统,用户活动诸如键盘输入、鼠标、触到屏幕,以及其它运行的程序或者线索。
当消息被送到线索时,这条消息被放置在消息队列中等待最后处理(图3)。
每一条线索拥有完全不独立于其它线索所拥有的消息队列的消息队列。
线索一般有不断运行的消息循环,恢复和处理消息。