嵌入式硬件体系的调试_第1页
嵌入式硬件体系的调试_第2页
嵌入式硬件体系的调试_第3页
嵌入式硬件体系的调试_第4页
嵌入式硬件体系的调试_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

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

文档简介

1、嵌入式系统硬件设计教程第十一讲嵌入式硬件体系的调试编著与讲演:怯肇乾一.知识准备与上述相关讲义的回顾知识准备:电路测试、系统的模拟与仿真等;相关讲义的回顾:CPU器件的模拟与仿真、测量控制电路、系统基础电路。二.常用电路测试工具及其使用直流电源示波器:模拟示波器、数字示波器多功能数字万用表逻辑分析仪三.常用调试手段与技巧介绍1.用双路直流电源得到正负电源供给-+-+负源地正源2.PCB 板的板级测试板上各种电源的短路测试;首次加电测试,各种主要电源测试、主要IC 的运行发热状况观察等; CPU 之时钟电路测试、复位电路测试;3.模拟信号源的实验板制作主要是对信号发生器所产生信号的调理,包括缩放

2、、零点调整等;ADJST 321411DB4A LM 324RB528k RB512kRB541kRB535k CB2104CB1104-12V+12V +12V CB31047CB5104CB61044.逐一电路模块的测试:飞线、割线等手段的使用CPU 之各种外扩存储器测试;CPU之主要外设测试;系统接口电路、通讯电路测试;5.模拟干扰、振动实验等可靠性测试使用可调的模拟干扰仪器、振动器,或自制的相应工具,得到相应的恶劣环境,置所设计系统于其中,进行测试、调整、完善。四.PC机测试程序及其书写DOSDebug测试,VB、VC或C+Builder可视化应用测试程序书写等。例:1.DOS Deb

3、ug的并口测试:在DOS或Windows DOS窗口下,可通过Debug软件的I(读或O(写命令对三个寄存器的状态进行观察改写,如:C:>Debug-O 378 5A-I 3785A-I 37978-O 37a 55-I 37a552.使用嵌入式汇编语言书写可视化测试程序下面是用C+Builder书写的ISA收发卡的初始化和收发函数char TForm1:initial(void /ISA卡的初始化函数 asm mov dx,211h /0xff->Port(211hmov al,0ffhout dx,almov bx,2fffhloop1: asm dec bxjz endmov

4、 dx,211h /Port(211h.3=1?in al,dxtest al,008hjz loop1asm mov dx,211h /0x00->Port(211hmov al,000hout dx,almov bx,2fffhloop2: asm dec bxjz endmov dx,211h /Port(211h.3=0?in al,dxtest al,008hjnz loop2return 0;end: return -1;char TForm1:ByteReceive(void /字节接收函数char z;asm mov bx,0fffhloop: asm dec bxjz

5、nnnmov dx,211hin al,dxtest al,002hjnz loopasm mov dx,210hin al,dxmov z,algoto eee;nnn: z=0x20;eee: return (z;void TForm1:ByteSend(char z /字节发送函数loop: asm mov dx,211h /Port(211h.0=1?in al,dxtest al,001hjz loopasm mov dx,210h /Port(210hmov al,zout dx,al3.用WinAPI函数进行串行异步通信HANDLE hCom;DCB dcb;BOOL fSucc

6、ess,bResult; unsigned long nBytesWritten,nBytesRead; COMMTIMEOUTS timeouts;/-void _fastcall TForm1:initial(void/open the serial port to read or writehCom=CreateFile(port,GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,0,NULL;if (hCom=INV ALID_HANDLE_V ALUEShowMessage("not Open Serial Port Selec

7、ted!"/set the sizes of in&out buffer,in bytesfSuccess=SetupComm(hCom,2000,2000;if(!fSuccess ShowMessage("Setup Communication Fail!" /set timeouts parameters to read serial porttimeouts.ReadIntervalTimeout=MAXDWORD;timeouts.ReadTotalTimeoutMultiplier=MAXDWORD;timeouts.ReadTotalTime

8、outConstant=1000;/65000;fSuccess=SetCommTimeouts(hCom,&timeouts;if(!fSuccessShowMessage("Set Communication Timeouts Fail!"set serial communication parametersfSuccess=GetCommState(hCom,&dcb;if(!fSuccess ShowMessage("Get Communication Fail!" dcb.BaudRate=9600;dcb.ByteSize=8

9、;dcb.Parity=NOPARITY;dcb.StopBits=ONESTOPBIT;fSuccess=SetCommState(hCom,&dcb;if (!fSuccess ShowMessage("Set Communication fail!"/-void _fastcall TForm1:readport(void/read the serial portbResult=ReadFile(hCom,&inBuffer,1952,&nBytesRead,NULL;if (!bResultswitch(GetLastError(case E

10、RROR_INV ALID_USER_BUFFER:ShowMessage("Error Invalid User Buffer!"break;default: ShowMessage(GetLastError(+"Read Data Fail!"break; /deal with datum received and display bResult=WriteFile(hCom,end,2,&nBytesWritten,NULL; if (!bResult exit(0; /close serial port break; default: S

11、howMessage(GetLastError(+"Write ID Fail!" break; */ /*switch(GetLastError( case ERROR_INVALID_USER_BUFFER: ShowMessage("Error Invalid User OutBuffer!" CloseHandle(hCom; 五底层设备驱动程序及其书写 Win2000DDK、VToolsD、WinDriver 等对常规硬件接口驱动程序的书写。 1用 Win2000DDK 开发驱动程序 驱动程序包括即插即用和电源管理功能,对内核模式驱动程序、内核

12、流驱动程序、图形驱动程序、虚拟设备驱动程序等有特殊的写法要求。 开发步骤: 编写驱动程序代码,应包括条件编译标记的调试检查。 测试和调试,检查构建的驱动程序。 测试和调试,自由构建的驱动程序。 调整,自由构建的驱动程序。 附加测试和调试,检查构建与自由构建的驱动程序和操作系统。 测试和检查,最终的自由构建的驱动程序。 2用 VToolD 开发驱动程序 6 3用 WinDriver 开发驱动程序 WinDriver 的特点:从用户层访问硬件;支持 I/O 读写、中断处理、物理内存读写;支持各厂家的 PCI、ISA、EISA、ISAnP、PCMCIA、USB 总线接口; 支持主流 PCI 接口芯片

13、: PLX9050 /9054 /9060 /9080、 AMCC、 Galileo、 V3 等 PCI 桥; 支持通用 Win32 软件开发平台,如:Visual C+、 C+Builder,Visual B、Dephi、Java 等;应用程序对 Win9X 与 NT/2000 二进制代码级兼容,对 Win9X、NT2000/CE、Linux 源代码级兼容;提 供核心插件功能,可用于开发高性能驱动程序(对调试无误的要求苛刻的部分软件通过 WinDriver 提供的 API 插入到核心态运行;编程向导界 面友好,可进行编程前的硬件诊断,可自动生成大部分驱动程序代码。 开发步骤: 利用编程向导开

14、发:插入设计好的板卡,打开 WinDriver Wizard,待开发板卡资源自动分析,生成驱动程序框架代码;修改代码,加入定 制功能;在用户态执行与调试代码;将性能苛刻部分插入到核心态; 直接利用 WinDriver 提供的 API 函数书写:将 windriver.h 拷贝到应用程序的源代码目录中,以使应用程序可以找到它;在应用程序 的源文件中包含 windows.h、winioctl.h、windriver.h 三个头文件;调用 WD_Open(函数,打开 WinDriver 设备驱动程序,获得设备文件句柄; 调用 WD_CardRegister(函数,向 WinDriver kernal

15、 登记板卡信息;调用 WD_Transfer(函数,进行 I/O 和内存数据的存取.当然,也可直接用 WD_CardRegister(函数返回的内存映像的线性地址存取硬件上的地址空间;若使用中断的话,可调用 WD_IntEnable(函数使能中断,此后可 调用 WD_IntWait( 函数等待中断的到来 , 停止中断响应可调用 WD_IntDisable( 函数予以实现;当不需要硬件操作时 , 可调用 WD_ CardUnregister(函数取消登记,而后调用 WD_Close(函数关闭 WinDriver 设备驱动程序。 ISA/PCI 板卡驱动程序的 WinDriver 开发演示 举例:

16、WinWriver 产生的 C+builder 的 EPP 并口 API: 并口开关函数 BOOL LPT_Open (LPT_HANDLE *phLPT; void LPT_Close(LPT_HANDLE hLPT; 并口读写函数 BYTE LPT_Readstrobe_addr (LPT_HANDLE hLPT /用于读并口地址; void LPT_Writestrobe_addr (LPT_HANDLE hLPT, BYTE data /用于写并口地址; BYTE LPT_Readstrobe_data_0 (LPT_HANDLE hLPT /用于读并口数据; void LPT_Wri

17、testrobe_data_0 (LPT_HANDLE hLPT, BYTE data /用于写并口数据; BYTE LPT_Readcontrol (LPT_HANDLE hLPT; /读并口控制寄存器 void LPT_Writecontrol (LPT_HANDLE hLPT, BYTE data; /写并口控制寄存器 并口中断函数 7 void LPT_IntADisable (LPT_HANDLE hLPT; /用于禁止并口中断 /用于使能并口中断, funcIntHandler 是中断处理函数,其函数原型如下: BOOL LPT_IntAEnable (LPT_HANDLE hLP

18、T, LPT_IntA_HANDLER funcIntHandler; void (*LPT_IntA_HANDLER(LPT_HANDLE hLPT, LPT_IntA_RESULT *intResult. 六8/16/32 位单片机系统的模拟与仿真 ICE 环境(Keil C51、Keil C166、ADS1.2的应用、开发板的使用、目标板的仿真运行等。 特别注意:NMI 中断、软件陷阱的软硬件联合调试, CPU 器件的运行方式设置等。 ICE 环境的配置:仿真环境配置,外部存储器映射,编译优化选项的合理设置等。 CPU 系统的前期逐步测试:时钟的输入/输出控制测试,复位电路的运行测试,I/O 口测试,存储器的读读写测试等。 CPU

温馨提示

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

评论

0/150

提交评论