《嵌入式系统课程设计报告.docx》由会员分享,可在线阅读,更多相关《嵌入式系统课程设计报告.docx(23页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、嵌入式系统课程设计报告系(院):专业班级:计算机科学学院计科*学 号:指导教师:设计时间:设计地点:*号楼*号机房(2)双击“新建连接。建立一个新连接。图如下。点击“下一步”。(3)选择“直接连接”,点击“下一步”。(4)选择设备“COM2”,点击“配置”,按下图进行配置。(5) “我的连接”已经创建完毕(6)在ARM机的WINCE系统中选择“控制面板” 一 “PC连接二(7)出现对话框后,选择“更改”,选择“我的连接二确定,ARM中“我的连 接”创建完成。(8)插上USB线,微机会自动识别USB设备,并启动ActiveSync。注:LUSB线一定要在第(7)步之后插,否则连接不成功。如果出现
2、此 情况,则拔掉USB线,重新建立一个新的连接,再插USB线。2.ARM上的“我的连接”在ARM关电后会消失。五.基于Windows CE的应用程序设计原理在Windows CE下,应用程序开发(Application Development)是针对驱 动和内核而言的。应用程序开发是指针对给定的Windows CE平台,利用该 平台提供的编程接口(API),使用特定工具(如Visual Studio. NET2003. eMbedded Visual C+或 Platform Builder 5. 0),实现特定功能的程序设 计活动。这里需要指出的是,对于特定的平台,结合图7. 1所示的Win
3、dows CE 体系结构,可知应用程序处于整个Windows CE体系结构的最上层,应用程 序直接与操作系统交互。因为Windows CE是一个可高度定制的操作系统, 因此基于Windows CE平台提供的API可能会不同。Windows CE应用程序内核对象存储GWES通信开发工具外壳内置驱动程序、可安装驱动程序硬件平台对于Windows CE的编程接口,在Windows CE设计之初,微软就决定对 桌面Windows和Windows CE采用几乎一样的编程接口。这样做一方面可使 Windows下的应用开发人员快速、平滑地过渡到Windows CE平台下,另一 方面有利于大量现有的桌面Win
4、dows下的应用程序移植到Windows CE平台 下。而平台的价值是依赖于运行在其上的应用程序的,这也是我们选择 WindowsCE平台的主要原因。六.使用Visual Studio. NET对硬件设备编程的一般方法Visual Studio 2005是微软于2005年推出的集成开发环境,是Visual Studio. NET 2003的后续产品。对于嵌入式开发者来说,Visual Studio 2005 与Visual Studio. NET 2003最大的区别是增加了本机代码的开发,以及 对.NET Compact Framework 2.0的支持。因此,如果希望在Windows CE下
5、 开发应用程序,那么建议使用Visual Studio 2005o Visual Studio中的“新 建项目”对话框如图7. 5所示。4在Visual Studio 2005中,IDE强化了对图形界面设计的支持。开发 人员可以所见即所得的方式设计Pocket PC和Smartphone的应用程序,这 样避免了以前在IDE中无法知道目标设备的确切分辨率而导致的图形界面 问题。在Visual Studio 2005中,所有的Windows CE模拟器都是基于ARMV4 体系结构的。这对于开发Pocket PC和Smartphone的应用程序来说有非常 重要的意义,因为现在市场上所有的Pocket
6、 PC和Smartphone设备的CPU 都是清一色的ARM处理器。这样,在模拟器下运行的代码,无须重新编译, 即可在真实的Pocket PC和Smartphone上运行。七.课设结果及分析1.10接口控制-七段数码管和LED显示控制程序设计控制程序设计:define LED_BASEADDR10x10200000define LED_BASEADDR20x10300000ttdefine LED_BASEADDR30x10400000#define pLightloBaseAddress 0x10500000BYTE NumData 10 = 0x3F, 0x06, 0x5B, 0x4F,
7、0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F;void CLedDlg:SetLedValue(unsigned int indata)USHORT Data;UINT buf;buf=indata;buf=buf%1000000;Data=NumDatabuf/100000;buf=buf%100000;Data|二NumDatabuf/100008;WRITE_PORT_USHORT(v_pLEDBaseAddrl, (Data|BIT7|BIT15);/*v_pLEDBaseAddr1= (Data|BIT7|BIT15);buf=buf%10000;Data=N
8、umDatabuf/1000;buf=buf%1000;Data|=NumDatabuf/1008;WRITE_PORT_USHORT(v_pLEDBaseAddr2, (Data|BIT7|BIT15);/*v_pLEDBaseAddr2=(Data|BIT7|BIT15);buf=buf%100;Data=NumDatabuf/10;buf=buf%10;Data|=NumDatabuf8;WRITE_P0RT_USH0RT(v_pLEDBaseAddr3, (Data|BIT7|BIT15);*v PLEDBaseAddr3 (Data | BIT71BIT15);/*定义定 时器:*/
9、void CLedDlg:0nTimer(UINTPTR nIDEvent) -switch(nIDEvent)(case 1:count+;if (count1;else outdata=outdataGPSR_z | =GPI0_81用于直流v_pGPIOReg-GPCR_z|=GPI0_81v_pGPIOReg-GPSR_z | 二GPI0_82/用 于直流v_pGPIOReg-GPCR_z|=GPI0_82v_pGPIOReg-GPSR_z | =GPIO 83/用于产生v_pGPIOReg-GPCR_z|=GPI0_83v_pGPIOReg-GPSR_z | =GPI0_84 / 用
10、于控v_pGPIOReg-GPCR_z|=GPI0_84v_pGPIOReg-GPSR_y | =GPI0_53 用于步进2.IO接口控制电机控制设计控制程序设计:#define StepBaseTime 2500ttdefine GPI0_81_PullHigh() 电机define GPI0_81_PullLow()ttdefine GPI0_82_PullHigh () 电机ttdefine GPI0_82_PullLow()ttdefine GPIO 83_PullHigh() 步进电机脉冲define GPI0_83_PullLow()ttdefine GPI0_84_PullHig
11、h () 制步进电机方向define GPI0_84_PullLow()ttdefine GPI0_53_PullHigh () 电机输出使能ttdefine GPI0_53_PullLow() v_pGPIOReg-GPCR_y|=GPI0_53/*步进 电机运行线程:*/UINT StepMotorThread(LPV01D IpParam)(CMotorDlg *pDlg= (CMotorDlg*)IpParam;CWait waitTime;WaitForSingleObject(pDlg-StepThreadBegin. m hObject, INFINITE);GPI0_53_Pu
12、llLow();while (1)(if (pDlg-m_StepMotorPositive. GetCheck() GPI0_84_PullLow();elseGPI0_84_PullHigh();if(!pDlg-m_StepContinue. GetCheck() -pDlg-m_StepRunTime-;if (pDlg-m_StepRunTime StepThreadEnd. m hObject, 0);if (result二二WAIT OBJECT 0)break;GPI0_83_PullHigh();waitTime. usWait(pDlg-g_HighTimeA);GPI0_
13、83_PullLow();waitTime. usWait(pDlg-g_LowTimeA);)GPI0_53_PullHigh();return 0;)/*直流 电机运行线程:*/UINT DCMotorThread (LPVOID param)CMotorDlg *pDlg=(CMotorDlg*)param;:WaitForSingleObject(pDlg-DCThreadBegin. m_h0bject , INFINITE); while (1)int result=:WaitForSingleObject(pDlg-DCThreadEnd. m hObject , 0);if(r
14、esult=WAIT_0BJECT_0)(GPI0_82_PullHigh();GPI0_81_PullHigh();break;if (pD1g-m DCMotorPositive. GetCheck()( GPI0_82_PullLow();GPI0_81_PullHigh();else|GPI0_81_PullLow();GPI0_82_PullHigh();if (!pD1g-m_DCContinue. GetCheck() -Sleep(pDlg-m_DCRunTime);GPI0_82_PullHigh();GPI0_81_PullHigh();break;return 0;)CM
15、otorDlg:CMotorDlg(CWnd* pParent /*=NULL*/):CDialog(CMotorDlg:IDD, pParent),mDCRunTime(1000),mStepRunTime(1000),m_RatioH(l),m RatioL(l)(m_hlcon = AfxGetApp ()-LoadIcon(IDRMAINFRAME);1 电机显示结果截图:3.简易计算机程序设计(自己编写的小程序)控制程序设计:int pos=0;/运算符的标志double tempi = -1;数字键赋值:public void addNum(int num)textBoxl. Te
16、xt = textBoxl. Text )private void buttonl_Click(object( .addNum(7);)private void button2_Click(object1 -addNum (8);private void button3_Click(object -addNum(9);)private void button4 Click (objectaddNum (4);)private void button5_Click(object (addNum (5);private void button6_Click(object(addNum (6);pr
17、ivate void button7_Click(object addNum (1);private void button8_Click(object addNum (2);)private void button9_Click(object+ num. ToString ();sender, EventArgs e) sender, EventArgs e) sender, EventArgs e) sender, EventArgs e) sender, EventArgs e) sender, EventArgs e) sender, EventArgs e) sender, Even
18、tArgs e) sender, EventArgs e)addNum(3);private void buttonlOClick(object sender, ( addNum(O);)加减乘除四键触发的事件:private void buttonllClick(object sender,( if (textBoxl. Text = )(tempi = -1;)else( textBoxl. Text += .;)private void buttonl2_Click(object sender, -pos = 1;tempi = Convert. ToDouble(textBoxl. T
19、ext)textBoxl. Text 二;)private void buttonl3_Click(object sender, -pos = 2;tempi = Convert. ToDouble(textBoxl. Text)textBoxl. Text 二;)小数点的处理:private void buttonl4_Click(object sender,pos = 3;tempi = Convert. ToDouble(textBoxl. Text)textBoxl. Text = ;)private void buttonl5_Click(object sender,pos - 4;
20、tempi = Convert. ToDouble(textBoxl. Text)textBoxl. Text = ;EventArgs e)EventArgs e)EventArgs e)EventArgs e)EventArgs e)EventArgs e)private void buttonl6_Click(object sender, EventArgs e)textBoxl. Text = pos = 0;tempi = -1;)退位键:private void buttonl7_Click(object sender, EventArgs e)( tempi = Convert.
21、ToDouble (textBoxl. Text);textBoxl. Text = Convert. ToString( (tempi - tempi % 10) / 10);)加减乘除运算:private void buttonl8_Click(object sender, EventArgs e)double temp2 = Convert. ToDouble (textBoxl. Text);switch (pos)case 1:textBoxl. Text =(tempi + temp2). ToStringO ; break;case 2:textBoxl. Text = (tem
22、pi - temp2). ToStringO ; break;case 3:textBoxl. Text = (tempi * temp2). ToString(); break;case 4:tryif (temp2 = 0)(throw new Exception (除数为 0 !);elsetextBoxl. Text = (tempi / temp2). ToStringO ;)catch (Exception)(MessageBox. Show(ERROR!);pos = 0;) break;一 .设计目的及要求2二 .设计主要内容 21 .基于Windows CE的应用开发环境的建
23、立2 . Windows CE平台的搭建3 .七段数码管和LED显示控制程序设计4 . 10接口控制-电机控制设计5 .编写实用小程序在Windows CE平台上运行调试6 .嵌入式操作系统Linux的移植Windows CE的特点、主要模块及各自的功能 3四.Windows CE配置、编译、移植的基本原理和过程4五基于Windows CE的应用程序设计原理10六.使用Visual Studio. NET对硬件设备编程的一般方法11七.课设结果及分析 121.10接口控制-七段数码管和LED显示控制2.10接口控制-电机控制3 .简易计算机程序八.程序调试过程中的主要难点及解决思路和办法 19
24、K.收获、体会和建议 20程序运行结果截图:结果分析:实验最终完好的显示在winCE平台上,并具有计算器的基本功能,在 winCE平台上准确的实现了程序所要求的功能。八.程序调试过程中的主要难点及解决思路和办法主要针对自己编写的计算器程序来说,有以下几个注意点:1 .在自己电脑上的VS版本与实验室里的版本不一样,可能导致某些地方的 不兼容情况,网上得知版本高于2008后都不支持winCE,因此需要在 VS2005上新建项目文件Calculator,选择C #中的智能设备,Windows CE 5Q设备应用程序重新载入程序。2 . 一定要在winCE平台与PC连接成功的前提下进行试验,特别是在自
25、己 搭建的winCE系统下,总会存在一些小问题不能忽略,否则影响实验效 果。3 .在初次运行程序后,发现程序中用于输入的文本框没有在winCE平台上显 示,通过不断的调试,加入弹窗显示,发现确实有数字输入,于是调整文 本框位置,发现输入可以完好的显示,因此,只需稍微调整文本框位置即 可,问题可能是某个东西挡住了文本框或是兼容性问题导致。九.收获、体会和建议通过本次实验,对嵌入式系统有了更深的了解,感觉嵌入式系统是一个 很好的玩意儿,在上面操作,就像做游戏一样,从前让我感觉抽象的内容变的 具体化,了解了 arm机的强大功能.很多时候,虽然我只是验证程序,但其中 的过程学到了很多东西,arm机的组
26、成原理,arm机的强大内核.也认识到了 解决兼容性的重要性.虽然遇到了很多问题,但在同学的帮助下,也一步步解 决了问题.再通过自己的努力,一步步的靠自己的大脑和双手解决了问题,这 时候自己的思路也变得清晰了起来,这让我明白了实践的重要性.在这期间, 也感谢我的队友的支持,她帮我不断查找资料,和我一起讨论问题,最终在我 们的努力下,实验完满成功.指导老师意见:成绩:教师签名:嵌入式系统设计与应用一、设计目的及要求1.设计目的1 .学习嵌入式系统、嵌入式操作系统,掌握基于嵌入式系统的应用开发基本知识.2 .学习嵌入式操作系统Windows CE的特点,Windows CE的主要模块及各自的功能.
27、掌握嵌入式操作系统Windows CE内核的配置、编译、移植方法.3,熟悉Visual Studio.NET开发环境,掌握基于Windows CE平台的应用程序设计方法. 4.学习使用Visual Studio.NET对硬件设备编程的一般方法.熟悉Platform Builder开 发工具使用方法2 .功能要求安装XSBase270实验开发平台的BSP;在嵌入式操作系统Windows CE平台 定制的集成开发环境Platform Builder(PB)上定制内核,编译和调试并生成内核映 像文件,下载并运行编译好的Windows CE系统;在VS.NET中编写对XSBase270 目标板上LED
28、和七段数码管的控制程序,下载运行程序。3 .设备与工具要求 装有 Platform Builder、Visual Studio.NET 开发环境,有并口、串口和 USB 接口的PC机一台。XSBase270实验开发平台一二.设计主要内容1 .基于Windows CE的应用开发环境的建立介绍嵌入式操作系统Windows CE的特点,了解Windows CE的主要模 块及各自的功能。了解微软提供给Windows CE开发人员进行基于Windows CE平台下嵌入式操作系统定制的集成开发环境Platform Builder(PB),掌握 通过交互式的环境来设计和定制内核、选择系统特性,然后进行编译和
29、调试 的全过程。了解BSP在嵌入式系统中位置及其作用。介绍在嵌入式操作系 统Windows CE上搭建嵌入式应用开发环境的方法,在Visual Studio.NET中 建立移动设备开发工程、程序调试以及下载运行的方法。2 . Windows CE平台的搭建安装XSBase270实验开发平台的BSP。根据XSBase270实验开发平台 的特点和系统需求,利用Platform Builder集成开发环境配置Windows CE 操作系统的特性和功能。编译、链接操作系统内核,生成系统映像文件。下 载并运行编译好的Windows CE系统。3 .七段数码管和LED显示控制程序设计了解Windows C
30、E下I/O访问机制和原理。了解LED和七段数码管的显示和控制原理。掌握Windows CE下访问硬件I/O寄存器的方法,以及使用 Visual Studio.NET对硬件设备编程的一般方法。4 .10接口控制-电机控制设计了解Windows CE下I/O访问机制和原理。掌握Windows CE下访问硬件 I/O寄存器的方法,以及使用Visual Studio.NET对硬件设备编程的一般方法。5 .编写实用小程序在Windows CE平台上运行调试运用所学的计算机语言编写一个不少于100行的源代码,在WindowsCE 平台下运行测试,增强对WindowsCE平台的了解。6 .嵌入式操作系统Li
31、nux的移植(选做)三.嵌入式操作系统Windows CE的特点、主要模块及各自的功能1 .Windows CE操作系统特点Microsoft Windows CE是一个开放的、可裁剪的、32位的实时嵌入 式窗口操作系统。和其他桌面窗口操作系统(Windows XP/2000)相比,它 具有可靠性好、实时性高、内核体积小等特点,适用于各种嵌入系统和 产品。它拥有多线程、多任务、确定性的实时、完全抢先式优先级的操 作系统环境,专门面向只有有限资源的嵌入式硬件系统。同时,开发人 员可以根据特定硬件系统对Windows CE操作系统进行裁剪、定制,所 以目前Windows CE被广泛用于各种嵌入式智
32、能设备的开发,是当今应用 最多、增长最快的嵌入式操作系统。Windows CE被设计成为一种高度模 块化的操作系统,每一模块都提供特定的功能,这些模块中的一部分被划 分成组件,系统设计者可以根据设备的性质只选择那些必要的模块或模块中 的组件包含进操作系统映像,从而使Windows CE变得非常紧凑(只占 不到200 KB的RAM),因此只占用了运行设备所需的最小的ROM、 RAM以及其它硬件资源。WindowsCE被分成不同的模块,其中最主要的 模块有内核模块(Kernel)对象存储模块、图形窗口事件子系统(GWES) 模块以及通信(Communication)模块。另外 Windows CE
33、还包含一些附 加的可选择模块,这些模块可支持的任务有管理可安装设备驱动程序、支 持COM等。一个最小的Windows CE系统至少由内核和文件系统模块组 成。2 .主要模块及功能.内核模块内核模块是Windows CE操作系统的核心,它为任何基于Windows CE的设备提供处理器调度、内存管理、异常处理以及系统内通信等系统 功能,并为应用程序使用这些核心功能提供内核服务。WindowsCE的内 核模块通过CorcDLL模块表示。所有的操作系统定制设计都必须包含这 个模块,但并不是这个模块的所有组件都必需的,有一些内核组件是可选的。 ,图形窗口和事件系统模块图形窗口和事件系统模块(GWES)包
34、含大部分的核心Windows CE功能, 它集成了图形设备接口( GDI)、窗口管理器和事件管理器。GWES模块 时Windows CE操作系统高度组件化的部分,它分别由USER和GDI两部分组成,USER用来处理消息、事件及鼠标和键盘等用户输入,而GDI 用于处理图形的屏幕和打印输出等。GWES是用户、应用程序和操作系统 之间的图形用户接口。GWES通过处理键盘、鼠标动作与用户交互,并 选择传送到应用程序和操作系统的信息。GWES通过创建并管理在显示设 备和打印机上显示的窗口、图形以及文本来处理输出。GWES的中心是窗口。 所有应用程序都通过窗口接收来自操作系统的消息,即使那些为缺少图形 显
35、示的设备创建的应用程序也是如此。GWES提供控制器、菜单、对话 框以及图形显示的设备资源,还提供GDI以控制文本与图形显示。.通信模块通信模块为基于Windows CE的设备提供有线或无线通信能力,使 Windows CE设备能够与其他设备或计算机进行连接与通信,通信组件提 供对下列通信硬件和数据协议的支持: 串行I/O支持 远程访问服务(RAS) 传输控制协议/Internet协议(TCP/IP) 局域网LAN) 电话技术API (TAPI) WinCE的无线服务,可选组件模块除上述主要模块之外,还可使用其它的操作系统模块。这些模块与组 件主要有: 设备管理器和设备驱动程序 多媒体(声音)支
36、持模块 COM支持模块 WinCE外壳模块WinCE提供的每一模块或组件都支持一组可用的相关API函数。四.Windows CE配置、编译、移植的基本原理和过程实验平台的配置过程:第一步:新建一个目标平台:a)选择菜单项File” - New Platform Wizard.b)输入目标平台名称和保存的位置;c)为目标平台选择所支持的BSP, XSBase270开发板选择选择 “ EMDOOR SYSTEM XSBASE270:ARMV4I” 平台;d)为新建的目标平台选择一个合适的模板配置;e)在“Application & Media”选择有关特性(本实验选则默认项);f)在“ Netwo
37、rking & Communicationsn中选择可用特性(默认项);g)完成 New Platform Wizard vo第二步:平台的配置a)选择菜单项“Platformv Settingb)在“ Platform Settingsn 对话框中设置“Generaln 选项卡。 选中 “ Releasec)在“ Platform Settingsn对话框中设置“Build Options”选项卡;针对 该XSBase270开发板实验平台的选项配置。第四步:配置系统组件和特性左边的workspace区显示的是所配置的WinCE操作系统所具有的组 件,右边的Catalog区显示的则是PB提供的
38、能够加入到WinCE操作系 统的所有组件。实验者可以在右边的catalog区中选择自己需要的设备驱 动程序和功能组件。如果决定要添加它到左边的workspace区以参加编译, 通过右击选项再选择“Add to OS Designvoa)添加XSBase270实验平台提供的设备驱动程序XSBase270实验平台的驱动程序由平台BSP提供,其中包括输入 设备(Input Devices) 网络设备(Networking) PC 卡(PC Card) SD卡、 串口、触摸屏、USB设备等;另外还包括EmdoorOEM 驱动程序(主要包括:CAN总线驱动、IDE接口驱动、LED显示驱 动、电机接口驱动
39、等)。如果用户想向新建平台添加设备驱动程序,通 过右击选项再选择“ Add to OSDesignv即可。b)添加系统功能组件系统的功能组件属于平台无关部分,由Platform Builder开发环境 统一提供。它们均是在Core 0s目录下进行添加,如图1-17所示。用 户可以根据实验的需要添加系统功能组件,本实验中添加以下系统功能组 件: 数据同步的组件图片浏览器 大的软键盘组件 文件系统 配置信息保存模块CF卡模块添加802.11b无线CF卡EVC调 试程序组件模块。第五步:平台的编译,构建系统,生成映像文件选择菜单项Build OS - Sysgen对平台进行编译,如果没出任何错 误,
40、编译完成后将生成一个系统映象文件NK.bin,该文件被放在所建工 程所保存的目录下的/RelDir/工程名_ ARMV4I_Release目录下(本实验的 编译后的映像 件 NKbin 保存在 D:WINCE500PBWorkspacesxsbase270RelDirXSBase270_ARM V4I_Release目录下)。具体编译链接花费的时间根据主机的速度和所配置 平台的大小而定,一般需要2030分钟。下载内核镜像:Ethernet Bootloader(EBOOT),下载内核镜像文件将并口线(JTAG)、串口线、以太网 线分别和微机连接好,连接ARM实验箱电源线,打开ARM电源。1 .
41、Ethernet Bootloader(EBOOT)(1 )打开资源管理器,找到文件夹c:Windows CE光盘Jflash_Pxa270_P30 下的文件cmd.bat,双 击执行,在“”提示后键入jflashmm.exe pxa270 EBOOT.nbO,出现下图。K C:IIin)0ISsysteB32cBd. exeC:Windows CE 光盘Jf lash_Pxa270_P30cmd.exeMicrosoft Windows XP 版本 5.1.2600 版权所有 1985-2001 Microsoft Corp.C:Windows CE 光盘lash_Pxa270_P30jf
42、lashmm pxa270 eboot .nbS,(2)键入回车(Enter),出现图2,选择“y”。(3)下图是正在写入并校对。(4)写Eboot到flash存储器结束后出现下图(正常写入)。c C:-INDO-Ssyste32cd. exe版权所有 19852001 Microsoft CorpC: Windows CE 光盘3 lash_Pxa270_P30j lashmm pxa270 eboot .nb0Copyright 2000 - 2003 Intel CorporationPLATFORM SELECTION: Processoi*= Development Systen=
43、Data Uersion=PXA27x reuision ?Found flash type: 28F128K18The last 72 percent of image file is all zerosWould you like to saue time by not programming that area? y/n: y Unlocking block at address 0 Erasing block at address 0Start ing progranningUsing BUFFER programming node.Prograrming done Starting Uerify Verification successful?bJ匕Windows CE 光盘Jlash Pxa270 P30I(5)如果校对出错,重新键入jflashmm.exe pxa270 EBOOT.nbO,重复(1) (3),直到出现上图为止。如果多次写入出错,关闭ARM电源,20秒后打 开ARM电源,重新烧录。第六步:代码下载测试超级终端的配置一超级终端的通信参数设置启动目标平台,超级终端显示Boot Loader配置选项如下图,如果需要 下载新的映像文件,则第三项必须为:3) DHCP: Disable,第五项必
限制150内