嵌入式操作系统课程设计报告_第1页
嵌入式操作系统课程设计报告_第2页
嵌入式操作系统课程设计报告_第3页
嵌入式操作系统课程设计报告_第4页
嵌入式操作系统课程设计报告_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、嵌入式系统设计报告系 (院): 计算机科学学院 专业班级: 计科11201 姓 名: 微 尘 学 号: 指导教师: 王剑 设计时间: 2015.6.22 - 2015.7.3 设计地点: 4教硬件实验室 目录一、课程设计的目的21.1设计目的21.2任务介绍2二、实验及开发环境32.1 实验室环境32.2 个人计算机课后开发环境3三、总体设计3四、详细设计44.1 Windows CE系统编译与安装44.2 编程驱动LED和数码管显示正确的信息74.3 编程驱动电机运转84.4 个人设计小程序10五、课程设计小结175.1 设计小结17一、 课程设计的目的1.1 设计目的本次课程设计的目的是了

2、解嵌入式系统、嵌入式操作系统,掌握基于嵌入式系统的应用开发基本知识。了解嵌入式操作系统Windows CE的特点,Windows CE的主要模块及各自的功能。掌握嵌入式操作系统Windows CE的配置、编译、移植方法。了解Visual Studio .NET开发环境,掌握基于Windows CE平台的应用程序设计方法。1.2 任务介绍以下任务需基于实验室的XSBase270开发平台完成1. 嵌入式操作系统Windows CE平台的搭建使用Platform Builder编译出自己的Windows CE 5.0操作系统,然后根据实验提供的EBOOT引导程序将编译出的Windows CE 5.0

3、系统安装(刷入)到实验平台。2. IO接口控制-七段数码管的LED显示控制程序了解Windows CE下I/O访问机制的原理。了解LED和七段数码管的显示和控制原理。掌握Windows CE下访问硬件I/O寄存器的方法。3. IO接口控制-点击控制设计了解Window CE下I/O访问机制和原理。掌握Windows CE下访问硬件I/O寄存器的方法,以及使用Visual Studio .NET对硬件设备编程的一般方法。4. 编写实用小程序并在指定的Windows CE平台上运行调试(选做)这一部分我选择的是在Windows CE平台上使用Visual Studio 2005基于.NET利用C#

4、语言编写一个简易计算器小程序。从而体验对嵌入式设备编程与普通PC编程的区别。二、 实验及开发环境2.1 实验室环境硬件环境:PC机:X86构架Pentium D处理器、1G内存开发板:XSBase270开发平台、ARM处理器、PXA270软件环境:PC机:Windows XP SP3、Visual Studio 2005 SP1、Platform Builder 6.0 for Windows CE 5.0、jflashmm2.2 个人计算机课后开发环境软件环境:Windows 8.1、Visual Studio 2005 + SP1 Package、Windows CE SDK、 Windo

5、ws CE SDK .NET 、DevEmulator for Windows CE 5.0由于个人开发环境缺乏外部硬件支持,所以采用模拟器仿真环境。三、 总体设计本次课程设计的第一个任务也是后续设计的前提条件,第一个任务要求在实验平台上安装Windows CE 5.0嵌入式操作系统,大致步骤如下,首先像平时做实验一样将EBOOT引导程序EBOOT.nb0烧录到实验平台,此时PC机端使用“终端”工具与装有EBOOT的实验平台进行通讯,然后在终端上控制实验平台设置其网络环境,使得实验平台与PC机能够联网;然后,使用Platform Builder编译出指定的Windows CE 5.0系统镜像n

6、k.bin文件,并且通过连通的网络将nk.bin下载到实验平台;重启实验平台,正常加载Windows CE操作系统,则第一步正常完成。第二步,编写I/O接口控制的程序用来控制LED和七段数码管正常显示,编译成功并且下载到目标机(实验平台)成功正确运行则完成第二步。第三步,编写I/O接口控制的程序用来控制实验平台上的两个电机正常运转,编译成功并且下载到目标机(实验平台)成功正确运行则完成第三步。最后一步,自己编写一个小程序在目标机上成功运行或者是使用自己以前编写的程序移植到目标机上成功运行,则完成任务。四、 详细设计4.1 Windows CE系统编译与安装本次课设所用到的Windows CE

7、5.0操作系统是一中嵌入式操作系统,该系统是由微软提供的闭源商业软件,但是它将各功能模块编译为静态库文件(lib),用户可以通过配置编译选项对系统做裁剪,从而得到用户所需要的Windows CE系统。在Platform Builder中新建系统,有配置选项如下:上面是询问系统平台,由于我们用的是XBase PXA270,选择最后一项,下一步;后续步骤中将会出现系统的类型,此时选择Internet Application,这是由于我们的后续任务中需要使用到网络连接进行同步。待所有选项配置完毕后,执行Compiler & Sysgen操作进行系统编译,并且生成系统镜像bk.bin。接下来,找到实验

8、室提供的系统引导程序EBOOT.nb0,这个程序能够提供系统的引导以及未安装系统时通过网络下载并安装系统的功能。使用下载工具jflashmm.exe将EBOOT.nb0下载到目标机,注意,下载过程中将会有询问“是否为了节省时间而不编程指定区域”,初次下载建议选择否(N),将目标机中的原有内容全部覆盖。整个下载有两个过程,编程(Programming)过程和验证(Verify)过程,两个过程进度正确完成并且最后没有任何的报错表示下载成功,若有报错建议完全重新下载,不要为了偷懒而就此略过,因为即使后面终端能够正常通讯也无法保证后续步骤能够正确进行。下一步是启动Windows XP系统附件中的“终端

9、”程序,将波特率设置为38400,重启目标机,终端与目标机通讯成功,如下图:待其询问是“继续载入存在的镜像还是取消”,此时按空格键选择取消,接下来EBOOT会自动进入主菜单,选择0,设置IP为(只需要设置前3段位192.168.0保证在同一网段即可),然后选择1,设置子网掩码(Subnet mask)为。然后,设置PC机的IP为,与目标机同一网段,以及子网掩码,与目标机一致。最后输入D,进入等待镜像下载状态。接下来设置PC机上的Platform Builder的Connectivity Option

10、设置如下:点击“应用”(Apply),是设置生效,关闭,在菜单栏Target选择Attach,开始下载镜像,镜像通过网络传输,如下:此时,终端显示如下:下载完毕后不要立即重启目标机,等待终端显示的三个步骤结束后才能重启,中断点线进度条显示擦除(FlashErase)过程,写入过程(Writting),验证过程(Verify),三个过程结束,目标机会自动重启,重启后会听到Windows CE的开机声音,以及屏幕上显示Windows CE 的界面,至此,Windows CE 5.0系统安装成功。第一个任务完成。4.2 编程驱动LED和数码管显示正确的信息实验室提供了参考代码,此处程序设计的关键部分

11、是对硬件设备的控制,即I/O控制。各端口设置代码如下:#define LED_BASEADDR10x#define LED_BASEADDR20x#define LED_BASEADDR30x#define pLightIoBaseAddress 0xBYTE NumData10=0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F;设定LED:void CLedDlg:SetLedValue(unsigned int indata)USHORT Data;UINT buf;buf=indata;buf=buf%;Data=NumDatabuf/;

12、buf=buf%;Data|=NumDatabuf/100008;WRITE_PORT_USHORT(v_pLEDBaseAddr1,(Data|BIT7|BIT15);buf=buf%10000;Data=NumDatabuf/1000;buf=buf%1000;Data|=NumDatabuf/1008;WRITE_PORT_USHORT(v_pLEDBaseAddr2,(Data|BIT7|BIT15);buf=buf%100;Data=NumDatabuf/10;buf=buf%10;Data|=NumDatabuf8;WRITE_PORT_USHORT(v_pLEDBaseAddr3

13、,(Data|BIT7|BIT15);定时器:void CLedDlg:OnTimer(UINT_PTR nIDEvent)switch(nIDEvent)case 1:count+;if(count1;elseoutdata=outdataGPSR_z|=GPIO_81/用于直流电机#define GPIO_81_PullLow()v_pGPIOReg-GPCR_z|=GPIO_81#define GPIO_82_PullHigh()v_pGPIOReg-GPSR_z|=GPIO_82/用于直流电机#define GPIO_82_PullLow()v_pGPIOReg-GPCR_z|=GPI

14、O_82#define GPIO_83_PullHigh()v_pGPIOReg-GPSR_z|=GPIO_83/用于产生步进电机脉冲#define GPIO_83_PullLow()v_pGPIOReg-GPCR_z|=GPIO_83#define GPIO_84_PullHigh()v_pGPIOReg-GPSR_z|=GPIO_84/用于控制步进电机方向#define GPIO_84_PullLow()v_pGPIOReg-GPCR_z|=GPIO_84#define GPIO_53_PullHigh()v_pGPIOReg-GPSR_y|=GPIO_53/用于步进电机输出使能#defi

15、ne GPIO_53_PullLow()v_pGPIOReg-GPCR_y|=GPIO_53步进电机运行线程:UINT StepMotorThread(LPVOID lpParam)/步进电机运行线程CMotorDlg *pDlg=(CMotorDlg*)lpParam;CWait waitTime;WaitForSingleObject(pDlg-StepThreadBegin.m_hObject,INFINITE);GPIO_53_PullLow();while(1) if(pDlg-m_StepMotorPositive.GetCheck()GPIO_84_PullLow();elseG

16、PIO_84_PullHigh();if(!pDlg-m_StepContinue.GetCheck()pDlg-m_StepRunTime-;if(pDlg-m_StepRunTime StepThreadEnd.m_hObject,0);if(result=WAIT_OBJECT_0)break;GPIO_83_PullHigh();waitTime.usWait(pDlg-g_HighTimeA);GPIO_83_PullLow();waitTime.usWait(pDlg-g_LowTimeA);GPIO_53_PullHigh();return 0;直流电机运行线程:UINT DCM

17、otorThread(LPVOID param)/直流电机运行线程CMotorDlg *pDlg=(CMotorDlg*)param;:WaitForSingleObject(pDlg-DCThreadBegin.m_hObject ,INFINITE);while(1)int result=:WaitForSingleObject(pDlg-DCThreadEnd.m_hObject ,0);if(result=WAIT_OBJECT_0)GPIO_82_PullHigh();GPIO_81_PullHigh();break;if(pDlg-m_DCMotorPositive.GetChec

18、k()GPIO_82_PullLow();GPIO_81_PullHigh();elseGPIO_81_PullLow();GPIO_82_PullHigh();if(!pDlg-m_DCContinue.GetCheck()Sleep(pDlg-m_DCRunTime);GPIO_82_PullHigh();GPIO_81_PullHigh();break;return 0;4.4 个人设计小程序小程序介绍:本次课程设计中的小程序,我们组设计的是一个Windows CE平台上的简易计算器,Windows CE 5.0中运行的界面如下:上图是在Windows CE 5.0模拟器中运行的结果,在

19、实体机上的Windows CE中运行的结果一样,都能够正常运行。程序实现:1. 新建项目 其它语言 Visual C# 智能设备 Windows CE 5.0 设备应用程序,建立项目,如图。2. 界面设计如下3. 各数字按键Click事件函数4. 按键预处理函数/ 将输入的数据解析为数字private void key_input_num(string input) / 没输运算符 if (append = true) lb_screen.Text += input; if(input=.) return; try lb_screen.Text = double.Parse(lb_screen

20、.Text).ToString(); catch (Exception e) status = 0; lb_screen.Text = ERROR!; else if(append = false) lb_screen.Text = input.ToString(); append = true; if(operation!=0) status = 3; 5. 加减乘除按键Click事件函数/* */private void btn_divide_Click(object sender, EventArgs e) if (status = 1) status = 3; operation =

21、4; /* */ num1 = double.Parse(lb_screen.Text); lb_status.Text = 数; append = false; / xprivate void btn_multiply_Click(object sender, EventArgs e) if (status = 1) status = 3; operation = 3; /x num1 = double.Parse(lb_screen.Text); lb_status.Text = 数; append = false; private void btn_minus_Click(object

22、sender, EventArgs e) if (status = 1) status = 3; operation = 2; /- num1 = double.Parse(lb_screen.Text); lb_status.Text = 数; append = false; private void btn_plus_Click(object sender, EventArgs e) if (status = 1) status = 3; operation = 1; /+ num1 = double.Parse(lb_screen.Text); lb_status.Text = 数; a

23、ppend = false; 6. 等于按键Click事件/ 等于private void btn_run_Click(object sender, EventArgs e) /lb_screen.Text = ERROR!; if (status = 3) /lb_status.Text = run; num2 = double.Parse(lb_screen.Text); try if (operation = 4) / check 除 if (num2 = 0) throw new Exception(除数为); else lb_screen.Text = calculate(opera

24、tion, num1, num2); num1 = double.Parse(lb_screen.Text); num2 = 0; status = 1; operation = 0; else lb_screen.Text = calculate(operation, num1, num2); num1 = double.Parse(lb_screen.Text); num2 = 0; status = 1; operation = 0; catch (Exception ex) status = 0; lb_screen.Text = ERROR!; else /lb_status.Text = not; 7. 处理运算private string calculate(uint operation, double num1, double num2) double result = 0; if(1=operation)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论