您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 其它行业文档 > 嵌入式系统原理与应用--答案
第1页系别信息科学与技术班级软件0701姓名学号任课教师任春明试卷编号:A装o订o线o内o请o勿o答o题2010—2011学年第1学期期末试卷课程名称:嵌入式系统原理与应用(软件08)考试时间:2010-12-24题号一二三四五六合计题目应得分10206010100题目实得分得分评分人第一题:判断题(对的写“√”,错的写“×”,每个1分,共10分)1.目前的ARM处理器采用的是哈佛体系结构。(√)2.ARM处理器的运行模式可通过中断或异常处理改变。(√)3.BootLoader属于嵌入式操作系统的一部分。(√)4.ARM包含32个通用寄存器。(×)//31个5.基于ARM架构的指令都是32位的。(×)6、WindowsCE属于比较典型的单体内核操作系统。(√)7、在WindowsCE中,每一个运行着的应用程序都是一个进程,每个进程只包括一个线程。(×)8、操作系统线程和中断服务例程(ISR)运行在核心态。(√)9、WindowsCE中每个进程独享4GB虚拟地址空间。(×)//共享10、Release版的操作系统运行的速度更快,但是可能缺少必要的调试信息。(√)第2页得分评分人第二题:选择题(每空1分,共20分)1、下面哪一项不是嵌入式系统的特点。(c)A、嵌入性B、专用性C、通用性D、计算机系统2、WindowsCE的内核模块为应用程序提供的基本服务不包括(a)。A、进程管理B、中断处理C、异常处理D、编程处理3、WindowsCE的根目录为(c)。A、“\”B、“\Windows”C、“\WindowsCE”D、“\CDDriver”4、下列关于消息队列描述错误的是(a)。A、消息可以为任意的数据类型B、消息队列可以用来同步C、消息具有优先级D、WindowsCE中的消息队列不能用来广播5、_____和_____是所有WindowsCE中都必不可少的(a)。A、NK.EXE、FILESYS.EXEB、NK.EXE、GWES.EXEC、NK.EXE、SERVICES.EXED、GWES.EXE、FILESYS.EXE6、BootLoader中执行的第一个C语言函数是(c)。A、WinMain()B、Main()C、Startup()D、BootloaderMain()7、CreateProcess()函数的最后一个参数lppiProcInfo指向一个(b)。A、字符串B、命令行参数C、宏定义D、PROCESS_INFORMATION结构体8、下面哪项不是BootLoader的功能。(b)A、负责WindowsCE内核与硬件通信B、初始化目标硬件设备C、控制启动过程D、下载并执行操作系统映像9、_____是WindowsCE提供的用户态下的同步方法。(d)A、MutexB、EventC、SemaphoreD、CriticalSection第3页系别班级姓名学号任课教师任春明试卷编号:装o订o线o内o请o勿o答o题10、在WindowsCE中,虚拟地址空间的保留是以_____为边界的。(b)A、32MBB、64KBC、32KBD、64MB11、下面关于WindowsCE的应用编程接口叙述正确的是(a)。A、Win32API接口基本上使用C++语言描述B、MFC是一个基于C++语言的面向过程的程序设计框架C、Microsoft.NETCompactFramework是.NET战略的重要部分,是为了在智能设备和嵌入式系统上运行托管代码而设计的D、Win32API需要运行时的支持12、下面的叙述哪项是错误的。(b)A、WindowsCE是一个抢占式多任务操作系统B、在WindowsCE中,进程和线程都有一个优先级C、WindowsCE的虚拟内存机制负责把一个进程占有的内存与其它进程占有的内存隔离D、线程是WindowsCE中最小的可执行单元13、WindowsCE的内核表现为_____,它实现了Win32API核心中进程创建加载、线程调度、中断处理和内存管理等核心功能。(b)A、FILESYS.EXEB、NK.EXEC、GWES.EXED、DEVICE.EXE14、以下关于WindowsCE调度系统的特点的叙述错误的是(d)。A、具有高优先级的线程如果处于就绪状态,则总是会被调度系统选中执行B、如果系统中存在多个优先级相同的就绪线程,这些线程以时间片轮转算法调度C、如果线程的时间片大小被设置为0,那么它会一直占用处理器运行,直到线程结束或者进入阻塞、挂起及睡眠状态D、调度系统提供对线饥饿(Starvation)的自动检测第4页15、_____用于映射当前在处理器上执行的进程。(a)A、Slot0B、Slot1C、Slot2D、Slot316、WindowsCE把4GB虚拟地址空间分成若干个Slots,每个Slot占(a)。A、32MBB、64KBC、32KBD、64MB17、Win32,MFC和.NETCF(CompactFramework)的运行时大小比较正确的是。(c)A、Win32MFC.NETCFB、MFCWin32.NETCFC、NETCFMFCWin32D、.NETCFWin32MFC18、PlatformBuilderIDE中_______视图列出了WindowsCE中所有可选的Feature。(c)A、CatalogB、WorkspaceC、FeatureD、Output19、Build.exe通过_______文件来查找要递归编译那些子目录。(b)A、SOURCESB、DIRSC、ROOTD、DAT;20、在WindowsCE下,所有的驱动程序都以用户态下的_______文件形式存在。(a)A、DLLB、LIBC、BIND、ORJ得分评分人第三题:问答题(每题10分,共60分)1、依次描述WindowsCE构建的四个基本步骤。如果把build与sysgen的顺序替换是否可行?为什么?2、什么是SDK?为什么WindowsCE不能像桌面Windows一样,有一个统一的SDK?SDK,SoftwareDevelopmentKit的缩写,中文即“软件开发工具包”。广义上指辅助开发某一类软件的相关文档、范例和工具的集合。因为WinCE还需要兼容其他硬件环境3、什么是线程冲突和线程死锁?线程冲突其实就是指,两个或以上的线程同时对同一个共享资源进行操作而造成的问题.多个线程同时被阻塞,它们中的一个或者全部都在等待某个资源被释放。由于线程被无限期地阻塞,因此程序不可能正常终止4、什么是BootLoader?试说明其作用。5、简述WindowsCE下中断处理的流程。第5页系别班级姓名学号任课教师试卷编号:A装o订o线o内o请o勿o答o题6、以下程序是一个文件操作的使用过程,认真阅读并在画横线的地方添加适当的注释。voidOpenFileExample(void){HANDLEhFile;//OpenMYFILE.TXThFile=CreateFile(TEXT(\MYFILE.TXT),GENERIC_READ,//打开文件读FILE_SHARE_READ,//允许其他进程读NULL,//空OPEN_EXISTING,//打开存在的文件。如果文件不存在则失败FILE_ATTRIBUTE_NORMAL,//该文件没有一般的属性集NULL);//空if(hFile==INVALID_HANDLE_VALUE){//Yourerror-handlingcodegoeshere.return;}}//如果打开文件失败第6页得分评分人第四题:编程题(每题10分,共10分)1、编写一个在WindowsCE下的串口通信程序,完成串口的打开、写入、读取、设置参数和关闭的操作。BOOLCSerialPortDlg::OpenPort(LPCTSTRPort,intBaudRate,intDataBits,intStopBits,intParity){COMMTIMEOUTSCommTimeOuts;//打开串口m_hComm=CreateFile(Port,GENERIC_READ|GENERIC_WRITE,0,0,OPEN_EXISTING,0,0);if(m_hComm==INVALID_HANDLE_VALUE){MessageBox(_T(“无法打开端口或端口已打开”));returnFALSE;}GetCommState(m_hComm,&dcb);dcb.BaudRate=BaudRate;dcb.ByteSize=DataBits;dcb.Parity=Parity;dcb.StopBits=StopBits;dcb.fParity=FALSE;dcb.fBinary=TRUE;dcb.fDtrControl=0;dcb.fRtsControl=0;dcb.fOutx=0;dcb.fInx=0;dcb.fTxContinueOnXoff=0;//设置状态参数SetCommMask(m_hComm,EV_RXCHAR);SetupComm(m_hComm,16384,16384);If(!SetCommState(m_hComm,&dcb)){MessageBox(_T(“无法按当前参数配置端口,请检查参数!”));ClosePort();returnFALSE;}第7页//设置超时参数GetCommTimeouts(m_hComm,&CommTimeOuts);CommTimeOuts.ReadIntervalTimeout=100;CommTimeOuts.ReadTotalTimeoutMultiplier=1;CommTimeOuts.ReadTotalTimeoutConstant=0;CommTimeOuts.WriteTotalTimeoutMultiplier=0;CommTimeOuts.WrietTotalTimeoutConstant=0;If(!SetCommTimeouts(m_hComm,&CommTimeOuts)){MessageBox(_T(“无法设置超时参数!”));ClosePort();returnFALSE;}PurgeComm(m_hComm,PURGE_TXCLEAR|PURGE_RXCLEAR);ReturnTRUE;}//关闭端口ROOLCSerialPortDLg::ClosePort(void){If(m_hComm!=INVALID_HANDLE_VALUE){SerCommMask(m_hComm,0);PurgeComm(m_hComm,PURGE_TXCLEAR|PURGE_RXCLEAR);CloseHandle(m_hComm);m_hComm=INVALID_HANDLE_VALUES;returnTRUE;}}//串口接收DWORDCSerialPortDlg::CommRecvTread(LPVOIDlparam){DWORDdwLength;char*recvBuf=newchar[1024];CSerialPortDlg*pDLg=(CSerialPortDlg*)lparam;while(TRUE){If(WaitForSingleObject(pDlg-m_ExitThreadEvent,0)==WAIT_OBJECT_0)break;if(pDlg-m_hComm!=INVALID_HANDLE_VALUES)第8页{BOOLfReadState=ReadFile(pDlg-m_hComm,recvBuf,1024,&dwLength,NULL);If(!fReadState){MessageBox(_T(“无法从串口读取数据!”));}else{if(dwLength!=0)OnCommRecv(pDlg,recvBuf,dwLength);}}}Delete[]recvBuf;Return0;}//发送VoidCSerialPortDlg::OnSend(){DWORDdwactlen;If(m_hComm==IN
本文标题:嵌入式系统原理与应用--答案
链接地址:https://www.777doc.com/doc-1750704 .html