长江大学 嵌入式报告.docx
《长江大学 嵌入式报告.docx》由会员分享,可在线阅读,更多相关《长江大学 嵌入式报告.docx(31页珍藏版)》请在冰豆网上搜索。
长江大学嵌入式报告
嵌入式操作系统WinCE的移植及应用程序设计
系(院):
计算机科学学院
专业班级:
计算机科学与技术学院
姓名:
学号:
指导教师:
王剑
设计时间:
设计地点:
目录
一、课程设计目的3
二、课程设计要求3
(1)功能要求3
(2)设计所需设备与工具3
三、嵌入式操作系统WindowsCE的特点3
四、WindowsCE的主要模块及各自的功能4
(1)WindowsCE层次架构:
4
(2)WindowsCE的主要模块及各自的功能4
2.1内核模块4
2.2对象存储模块4
2.3图形窗口和事件系统模块5
五、基于嵌入式操作系统WindowsCE的应用程序设计原理5
(1)PlatformBuilder开发工具5
(2)BSP原理5
六、基于WindowsCE操作系统的应用开发6
(1)应用程序的创建6
(2)编译生成可执行文件6
(3)应用程序的调试7
七、课程设计内容7
(1)嵌入式操作系统WindowsCE平台的搭建7
7.1.1实验平台的设置7
7.1.2平台的编译,构建系统,生成映像文件11
7.1.3下载内核镜像:
11
(2)ActiveSync的使用14
(3)七段数码管和LED显示控制程序设计16
7.3.1WindowsCE下访问物理地址的方法16
7.3.2硬件电路接口分析:
17
7.3.3实验步骤:
18
(4)IO接口控制-电机控制设计19
7.4.1硬件接口电路分析:
19
7.4.2实验步骤:
19
八、课设结果20
九、课设收获、体会和建议24
一、课程设计目的
1.学习嵌入式系统、嵌入式操作系统,掌握基于嵌入式系统的应用开发基本知识.
2.学习嵌入式操作系统WindowsCE的特点,WindowsCE的主要模块及各自的功能.掌握嵌入式操作系统WindowsCE内核的配置、编译、移植方法.
3.熟悉VisualStudio.NET开发环境,掌握基于WindowsCE平台的应用程序设计方法.
4.学习使用VisualStudio.NET对硬件设备编程的一般方法.熟悉PlatformBuilder开发工具使用方法
二、课程设计要求
(1)功能要求
安装XSBase270实验开发平台的BSP;在嵌入式操作系统WindowsCE平台定制的集成开发环境PlatformBuilder(PB)上定制内核,编译和调试并生成内核映像文件,下载并运行编译好的WindowsCE系统;在VS.NET中编写对XSBase270目标板上LED和七段数码管的控制程序,下载运行程序.
(2)设计所需设备与工具
①装有PlatformBuilder、VisualStudio.NET开发环境,有并口、串口和USB接口的PC机一台.
②XSBase270实验开发平台一套.
三、嵌入式操作系统WindowsCE的特点
MicrosoftWindowsCE是一个开放的、可裁剪的、32位的实时嵌入式窗口操作系统和其他桌面窗口操作系统(WindowsXP/2000)相比,它具有可靠性好、实时性高、内核体积小等特点,适用于各种嵌入系统和产品。
它拥有多线程、多任务、确定性的实时、完全抢先式优先级的操作系统环境,专门面向只有有限资源的嵌入式硬件系统。
同时,开发人员可以根据特定硬件系统对WindowsCE操作系统进行裁剪、定制,所以目前WindowsCE被广泛用于各种嵌入式智能设备的开发,是当今应用最多、增长最快的嵌入式操作系统。
WindowsCE被设计成为一种高度模块化的操作系统,每一模块都提供特定的功能,这些模块中的一部分被划分成组件,系统设计者可以根据设备的性质只选择那些必要的模块或模块中的组件包含进操作系统映像,从而使WindowsCE变得非常紧凑(只占不到200KB的RAM),因此只占用了运行设备所需的最小的ROM、RAM以及其它硬件资源。
四、WindowsCE的主要模块及各自的功能
(1)WindowsCE层次架构:
HL层:
可以可靠使用的硬件设备,具有可以运行WindowsCE的硬件配置。
OAL层:
设备原始制造商完成的与OS适配结合的抽象层。
OSL层:
WindowsCE内核及系统服务。
AL层:
应用程序层。
如下图所示:
(2)WindowsCE的主要模块及各自的功能
WindowsCE被分成不同的模块,其中最主要的模块有内核模块(Kernel)、对象存储模块、图形窗口事件子系统(GWES)模块以及通信(Communication)模块。
一个最小的WindowsCE系统至少由内核和对象存储模块组成。
2.1内核模块
内核模块是WindowsCE操作系统的核心,它为任何基于WindowsCE的设备提供处理器调度、内存管理、异常处理以及系统内通信等系统功能,并为应用程序使用这些核心功能提供内核服务。
WindowsCE的内核模块通过CoreDLL模块表示。
所有的操作系统定制设计都必须包含这个模块,但并不是这个模块的所有组件都必需的,有一些内核组件是可选的。
2.2对象存储模块
对象存储是WindowsCE的默认文件系统,它相当于WindowsCE设备上的硬盘。
对象存储是由共享一个内核堆的文件系统、系统数据库和系统注册表组成,即使在没有系统主电源时,对象存储也能维持应用程序及相关数据不会丢失。
对象存储可将用户数据和应用程序数据存入文件或注册器。
在操作系统创建进程(该进程中只包括那些必需选项)的过程中,对于这些不同的对象存储组件,可以选取,也可以忽略。
2.3图形窗口和事件系统模块
图形窗口和事件系统模块(GWES)包含大部分的核心WindowsCE功能,它集成了图形设备接口(GDI)、窗口管理器和事件管理器。
GWES模块时WindowsCE操作系统高度组件化的部分,它分别由USER和GDI两部分组成,USER用来处理消息、事件及鼠标和键盘等用户输入,而GDI用于处理图形的屏幕和打印输出等。
五、基于嵌入式操作系统WindowsCE的应用程序设计原理
(1)PlatformBuilder开发工具
PlatformBuilder(PB)是微软提供给WindowsCE开发人员进行基于WindowsCE平台下嵌入式操作系统定制的集成开发环境.它提供了所有进行设计、创建、编译、测试和调试WindowsCE操作系统平台的工具.它运行在桌面Windows下,开发人员可以通过交互式的环境来设计和定制内核、选择系统特性,然后进行编译和调试.该工具能够根据用户的需求,选择构建具有不同内核功能的CE系统.同时,它也是一个集成的编译环境,可以为所有CE支持的CPU目标代码编译C/C++程序.一旦成功地编译了一个CE系统,就会得到一个名为nk.bin的映像文件.将该文件下载到目标板中,就能够运行CE了。
PlatformBuilder提供的主要特性包括:
1.平台开发向导(PlatformWizard)和BSP开发向导;2.特性目录(Catalog)3.导出向导(ExportWizard)4.导出SDK向导(ExportSDKWizard)5.远程工具6.仿真器(Emulator)7.应用程序调试器8.内核调试器9.驱动测试工具包(WindowsCE.netTestKit)10.基础配置。
(2)BSP原理
BSP又称板级支持软件包,它是一个包括启动程序、OEM适配层程序(OAL)、标准开发板(SDB)和相关硬件设备驱动程序的软件包.BSP是基于WindowsCE平台系统的主要部分,它是由一些源码和二进制文件组成.BSP的主要功能在于配置系统硬件使其工作在正常状态,并且完成硬件与软件之间的数据交互,为OS及上层应用程序提供一个与硬件无关的软件平台。
BSP在系统中所处的位置,位于硬件平台与操作系统或应用软件之间,用于屏蔽上层软件对各种硬件的相关性。
BSP的主要功能在于配置系统硬件使其工作在正常状态,并且完成硬件与软件之间的数据交互,为OS及上层应用程序提供一个与硬件无关的软件平台。
六、基于WindowsCE操作系统的应用开发
WindowsCE操作系统是基于Win32API的,因此WindowsCE下的应用程序开发与在Windows97、WindowsNT和Windows2000下相似。
WindowseMbeddedVisualC++提供了开发WindowsCE应用程序的集成开发环境与工具,来帮助开发人员创建、编译与调试应用程序。
如果曾使用MicrosoftVisualC++开发过应用程序,会发现eMbeddedVisualC++提供了相似的开发环境。
不同的是eMbeddedVisualC++提供了特定的工具与资源来开发WindowsCE应用程序。
(1)应用程序的创建
使用应用程序向导AppWizard创建一个应用程序需经历以下过程:
从File菜单中选择New激活AppWizard。
选择Project中的WCEMFCAppWizard[exe],新建一个WindowCEMFC应用程序。
输入工程名,并根据目标WindowsCE设备,选择特定的CPU类型,在本例中选择了WCE模拟器。
a)选择程序风格与语言支持。
b)给工程添加新的特性,并选择控制条类型。
c)选择是否自动生成源代码注释,并选择MFC库是作为共享DLL还是作为静态链接库。
最后点击Finish,eMbeddedVisualC++将自动生成应用程序的框架,之后可以利用集成环境作进一步地开发。
(2)编译生成可执行文件
在编译生成可执行文件之前可以选择Project菜单栏中的Settings菜单项修改工程的设置,如设定编译器、链接器。
在本例中选择目标平台的SDK为STANDARDSDK,目标平台为WCE设备模拟器并且在编译生成可执行文件过程中产生调试信息。
eMbeddedVisualC++提供的WindowsCE操作系统设备模拟器使程序员可以在没有具体WindowsCE操作系统设备的情况下,开发与调试WindowsCE操作系统应用程序,从而提高了开发效率。
选择编译生成可执行文件的目标平台为WindowsCE操作系统设备模拟器,当运行应用程序时集成开发环境将激活模拟器,下载可执行代码到模拟器并执行。
(3)应用程序的调试
在调试程序前需要同编译生成可执行文件一样设定目标平台、目标设备(可选中菜单项Build一>SetPlatform与Build->SetActiveConfiguration设定,或从工具栏设定)。
为使在调试过程中程序自动被下载到远程设备(或WCE设备模拟器)上,选择Tools菜单栏上的Options项,在对话框中点击download标签,选中Alwaysdownloadbinarytothetarget与Alwaysdownloaddependenciestothetarget。
现在可以开始调试,将鼠标指向Build菜单栏下的StartDebug并选择适当的命令使程序在调试状态运行。
a)Go,开始执行程序,遇到断点时中断执行。
b)StepInto,在WinMain函数的入口点中断程序的执行,如果没有设置断点可以使用这条命令,从程序入口开始一步步地执行。
c)RuntoCursor,运行至光标处,这个命令只有在代码编辑窗口打开时有效。
七、课程设计内容
(1)嵌入式操作系统WindowsCE平台的搭建
7.1.1实验平台的设置
第一步:
新建一个目标平台:
a)选择菜单项“File”->“NewPlatformWizard.”;
b)输入目标平台名称和保存的位置,如下左图所示:
c)为目标平台选择所支持的BSP,XSBase270开发板选择选择“EMDOORSYSTEMXSBASE270:
ARMV4I”平台,如下图
d)为新建的目标平台选择一个合适的模板配置,如本页右上图:
e)在“Application&Media”选择有关特性(本实验选则默认项);如图
f)在“Networking&Communications”中选择可用特性(默认项);如下图:
g)完成“NewPlatformWizard.”,如下页左上图:
第二步:
平台的配置:
a)选择菜单项“Platform”->“Setting”.
b)在“PlatformSettings”对话框中设置“General”选项卡.选中“Release”,如下图所示
c)在“PlatformSettings”对话框中设置“BuildOptions”选项卡;针对该XSBase270开发板实验平台的选项配置如下图所示:
第三步:
配置系统组件和特性:
如图下图所示,左边的workspace区显示的是所配置的WinCE操作系统所具有的组件,右边的Catalog区显示的则是PB提供的能够加入到WinCE操作系统的所有组件.实验者可以在右边的catalog区中选择自己需要的设备驱动程序和功能组件.如果决定要添加它到左边的workspace区以参加编译,通过右击选项再选择“AddtoOSDesign”.
a)添加XSBase270实验平台提供的设备驱动程序XSBase270实验平台的驱动程序由平台BSP提供,其中包括输入设备(InputDevices)、网络设备(Networking)、PC卡(PCCard)、SD卡、串口、触摸屏、USB设备等;另外还包括EmdoorOEM驱动程序(主要包括:
CAN总线驱动、IDE接口驱动、LED显示驱动、电机接口驱动等).
b)添加系统功能组件
系统的功能组件属于平台无关部分,由PlatformBuilder开发环境统一提供.它们均是在CoreOs目录下进行添加.用户可以根据实验的需要添加系统功能组件,
本实验中添加以下系统功能组件:
①添加数据同步的组件:
CoreOS—>WindowsCEdevices—>Applications-EndUser—>ActiveSync—>FileSync;
②图片浏览器的添加:
CoreOS-WindowsCEdevices-Applications-EndUser—FileViewers—MicrosoftImageViewer
③大的软键盘组件的添加:
CoreOS—>WindowsCEdevices—ShellandUserInterface—>SoftwareInputPanel—>Software-basedInputPanel(SIP)(Choose1ormore)—>SIPforLargeScreens
④文件系统的添加:
CoreOS—>WindowsCE
devices—>FileSystemsandDataStore—>StorageManager—>FATFileSystem;
⑤配置信息保存模块添加:
CoreOS—>WindowsCEdevices—>FileSystemsandDataStore—RegistryStorage(Choose1)—>Hive-basedRegistry;
⑥CF卡模块的添加:
Catalog—>DeviceDrivers—StorageDevices—>CompactFlash/PCCardStorage(ATADISK)
⑦EVC调试程序组件模块的添加:
Catalog—>PlatformManager—>PlatformManager
7.1.2平台的编译,构建系统,生成映像文件
选择菜单项BuildOS—>Sysgen对平台进行编译(如下图所示),如果没出任何错误,编译完成后将生成一个系统映象文件NK.bin,该文件被放在所建工程所保存的目录下的/RelDir/工程名_ARMV4I_Release目录下(本实验的编译后的映像文件NK.bin保存在C:
\WINCE500\PBWorkspaces\xsbase270\RelDir\XSBase270_ARMV4I_Release目录下).
7.1.3下载内核镜像:
①将并口线(JTAG)、串口线、以太网线分别和微机连接好,连接ARM实验箱电源线,打开ARM电源.
②打开资源管理器,找到文件夹c:
\WindowsCE光盘\Jflash_Pxa270_P30下的文件cmd.bat,双击执行,在“>”提示后键入jflashmm.exepxa270EBOOT.nb0,然后回车,出现下图,选择”y”:
③写入并校对.写Eboot到flash存储器结束后出现下图(正常写入).写Eboot到flash:
④如果校对出错,重复②~③,直到出现上图为止.如果多次写入出错,关闭ARM电源,20秒后打开ARM电源,重新烧录.
⑤关闭ARM电源
⑥右键单击”网上邻居”→”属性”,弹出网络连接对话框.右键单击”本地连接”→”属性”,设置TCP/IP协议.修改IP地址为192.168.0.2,见下图.其他不变.
⑦在桌面上找到超级终端图标,双击启动.打开ARM电源.出现信息后按空格键(!
!
!
!
!
)进行设置.
⑧选择0改IP,只要保证ARM的IP和微机的IP在同一网段即可,如192.168.0.5或192.168.0.6
选择5,改为,ARM上的WINCE烧录后可自己启动,其他不用设置,和之前的保持一致就可以了.
⑨请将微机时间改为2007/10/1,PB才能使用.找到PB工程文件,启动.超级终端将出现下图:
⑩按下图的菜单进行PB和ARM的连接设置:
在Download选项点击Setting:
出现下图,选择XSBASE2700117,确定
⒒在PB中点击Target->AttachDevice,连接PB和ARM,出现文件下载对话框,同时在超级终端中出现WINCE烧录信息.如下图:
WINCE烧录结束后ARM上自动启动WINCE.自此,WINCE平台搭建完成.
(2)ActiveSync的使用
ActiveSync用来实现PC上的应用程序和ARM上的应用程序保持同步.
(1)打开目标机(ARM)电源,进入“网络和拨号连接”.
(2)双击“新建连接”,建立一个新连接.见下图.点击“下一步”.
(3)选择“直接连接”,点击“下一步”,选择设备“COM2”,点击“配置”,按下图进行配置.
(4)“我的连接”已经创建完毕.
(5)在ARM机的WINCE系统中选择“控制面板”→“PC连接”.出现下图对话框后,选择“更改”.
(6)选择“我的连接”,见左下图,确定,ARM中“我的连接”创建完成.见右下图.
(7)插上USB线,微机会自动识别USB设备,并启动ActiveSync.启动后选择”是”.
1.USB线一定要在第(6)步之后插,否则连接不成功.如果出现此情况,则拔掉USB线,重新建立一个新的连接,再插USB线.
2.ARM上的“我的连接”在ARM关电后会消失.
(8)在弹出的”新建合作关系”对话框中选择”联系人”、”任务”、”日历”、”文件”,然后点击”下一步”.弹出”文件同步”对话框,点击确定.选择”下一步”,然后点击”完成”.在弹出的MicrosoftOfficeOutlook对话框和MicrosoftOutlook同步对话框中点击确定.直到弹出的MicrosoftActiveSync对话框中出现已连接已同步.实验完成.
(3)七段数码管和LED显示控制程序设计
做此实验需要了解在WindowsCE下访问硬件I/O寄存器的一般方法;了解WinCE下IO访问机制和原理;了解数码管(LED)的显示及控制原理;熟悉VS.Net的使开发环境.
7.3.1WindowsCE下访问物理地址的方法
①虚拟内存函数
IO接口属于XScale处理器的外部设备,类似于通常所使用的PC的串口、并口或者PC喇叭.对于一般单片机,可以直接操作硬件,即通过直接读写IO端口来访问硬件.而对于WindowsCE操作系统,不允许直接访问硬件,尽管知道物理地址,我们仍不能直接访问它,因此必须使用特殊的方法来访问硬件.
WindowsCE操作系统出于稳定性和安全的要求,屏蔽了用户应用程序对硬件访问的权限,只有内核应用程序才可以访问硬件资源.如果要直接访问某一个地址的物理内存,可以采用内存映射的方法,将该硬件寄存器映射到普通的内存空间,像操作内存地址一样操作硬件寄存器.WindowsCE提供了VirtualAlloc()和VirtualCopy()函数,VirtualAlloc负责在虚拟内存空间内保留一段虚拟内存,而VirtualCopy负责把一段物理内存和虚拟内存绑定,这样,最终对物理内存的访问还是通过虚拟地址进行.下面简单介绍这些函数的作用和使用方法.
VirtualAlloc()函数用于分配一块内存空间.如果要映射一个硬件寄存器,必然要将其映射到一块确定的内存空间.在这里我们分配一个内存空间.这个内存空间并不占用实际内存空间,而是留待后面进行分配.
VirtualCopy()负责将硬件设备寄存器的物理地址与VirtualAlloc()分配的虚拟地址做一个映射关系,这样驱动程序访问虚拟地址即是访问对应的物理地址处的第一个寄存器.
7.3.2硬件电路接口分析:
XSBase目标板LED和七段数码显示接口电路如图3-1所示,74HC574为D锁存器,在时钟信号CLK作用下,该锁存器将输入信号进行锁存,即xQ=xD(x=1~8)。
从电路图中可以看出,LED和八段数码显示电路将74HC574的时钟信号输入端作为片选信号,其中LED显示的片选信号为LED_CS4、七段数码显示的片选信号为LED_CS1。
在七段数码显示电路中,数据的高位(D7、D15:
即数码管的小数点dp段)用作七段数码的公共选通信号,通过控制PNP三极管来控制数码管的显示。
图3-1LED和七段数码显示接口电路
显示电路中的片选信号LED_CSx(x=1-4),由XSBase270目标板系统的处理器PXA270x的地址信号BA22~BA20通过3-8译码器LC138产生(如图3-2所示)。
图3-2片选信号产生电路
由3-8控制功能可知,当BA22、BA21、BA20=101时产生LED显示电路的片选信号LED_CS4,当BA22、BA21、BA20=010、011、100时分别产生七段数码显示电路的片选信号LED_CS1、LED_CS2、LED_CS3。
根据分析,可以得出七段数码管和LED的片选信号为:
LED_CS1=0x10200000、LED_CS2=0x10300000、LED_