嵌入式硬件体系的调试图文Word格式.docx
- 文档编号:13715938
- 上传时间:2022-10-13
- 格式:DOCX
- 页数:7
- 大小:19.04KB
嵌入式硬件体系的调试图文Word格式.docx
《嵌入式硬件体系的调试图文Word格式.docx》由会员分享,可在线阅读,更多相关《嵌入式硬件体系的调试图文Word格式.docx(7页珍藏版)》请在冰豆网上搜索。
正源
2.PCB板的板级测试
板上各种电源的短路测试;
首次加电测试,各种主要电源测试、主要IC的运行发热状况观察等;
CPU之时钟电路测试、复位电路测试;
3.模拟信号源的实验板制作
主要是对信号发生器所产生信号的调理,包括缩放、零点调整等;
ADJST321
4
11
DB4ALM324RB528kRB512k
RB541k
RB535kCB2104
CB1104
-12V
+12V+12VCB31047
CB5104CB6104
4.逐一电路模块的测试:
飞线、割线等手段的使用
CPU之各种外扩存储器测试;
CPU之主要外设测试;
系统接口电路、通讯电路测试;
5.模拟干扰、振动实验等可靠性测试
使用可调的模拟干扰仪器、振动器,或自制的相应工具,得到相应的恶劣环境,置所设计系统于其中,进行测试、调整、完善。
四.PC机测试程序及其书写
DOS
Debug测试,VB、VC或C++Builder可视化应用测试程序书写等。
例:
1.DOSDebug的并口测试:
在DOS或WindowsDOS窗口下,可通过Debug软件的I(读或O(写命令对三个寄存器的状态进行观察改写,如:
C:
\>
Debug
-O3785A
-I378
5A
-I379
78
-O37a55
-I37a
55
2.使用嵌入式汇编语言书写可视化测试程序
下面是用C++Builder书写的ISA收发卡的初始化和收发函数charTForm1:
:
initial(void//ISA卡的初始化函数
{asm{movdx,211h//0xff-->
Port(211h
moval,0ffh
outdx,al
movbx,2fffh
}
loop1:
asm{decbx
jzend
movdx,211h//Port(211h.3=1?
inal,dx
testal,008h
jzloop1
asm{movdx,211h//0x00-->
moval,000h
loop2:
movdx,211h//Port(211h.3=0?
jnzloop2
return0;
end:
return-1;
charTForm1:
ByteReceive(void//字节接收函数{charz;
asmmovbx,0fffh
loop:
jznnn
movdx,211h
testal,002h
jnzloop
asm{movdx,210h
movz,al
gotoeee;
nnn:
z=0x20;
eee:
return(z;
voidTForm1:
ByteSend(charz//字节发送函数{loop:
asm{movdx,211h//Port(211h.0=1?
testal,001h
jzloop
asm{movdx,210h//Port(210h
moval,z
3.用WinAPI函数进行串行异步通信
HANDLEhCom;
DCBdcb;
BOOLfSuccess,bResult;
unsignedlongnBytesWritten,nBytesRead;
COMMTIMEOUTStimeouts;
//-----------------------------------------------------------------------
void__fastcallTForm1:
initial(void
{//opentheserialporttoreadorwrite
hCom=CreateFile(port,GENERIC_READ|GENERIC_WRITE,0,
NULL,OPEN_EXISTING,0,NULL;
if(hCom==INVALID_HANDLE_VALUE
{ShowMessage("
notOpenSerialPortSelected!
"
;
//setthesizesofin&
outbuffer,inbytes
fSuccess=SetupComm(hCom,2000,2000;
if(!
fSuccessShowMessage("
SetupCommunicationFail!
//settimeoutsparameterstoreadserialport
timeouts.ReadIntervalTimeout=MAXDWORD;
timeouts.ReadTotalTimeoutMultiplier=MAXDWORD;
timeouts.ReadTotalTimeoutConstant=1000;
//65000;
fSuccess=SetCommTimeouts(hCom,&
timeouts;
fSuccess
ShowMessage("
SetCommunicationTimeoutsFail!
setserialcommunicationparameters
fSuccess=GetCommState(hCom,&
dcb;
GetCommunicationFail!
dcb.BaudRate=9600;
dcb.ByteSize=8;
dcb.Parity=NOPARITY;
dcb.StopBits=ONESTOPBIT;
fSuccess=SetCommState(hCom,&
if(!
SetCommunicationfail!
//---------------------------------------------------------------------------
readport(void
{//readtheserialport
bResult=ReadFile(hCom,&
inBuffer,1952,&
nBytesRead,NULL;
bResult
{switch(GetLastError(
{caseERROR_INVALID_USER_BUFFER:
ErrorInvalidUserBuffer!
break;
default:
ShowMessage(GetLastError(+"
ReadDataFail!
}//dealwithdatumreceivedanddisplay…}bResult=WriteFile(hCom,end,2,&
nBytesWritten,NULL;
if(!
bResultexit(0;
}//closeserialport}break;
default:
WriteIDFail!
break;
*//*{switch(GetLastError({caseERROR_INVALID_USER_BUFFER:
ShowMessage("
ErrorInvalidUserOutBuffer!
}CloseHandle(hCom;
五.底层设备驱动程序及其书写Win2000DDK、VToolsD、WinDriver等对常规硬件接口驱动程序的书写。
1.用Win2000DDK开发驱动程序驱动程序包括即插即用和电源管理功能,对内核模式驱动程序、内核流驱动程序、图形驱动程序、虚拟设备驱动程序等有特殊的写法要求。
开发步骤:
⑴编写驱动程序代码,应包括条件编译标记的调试检查。
⑵测试和调试,检查构建的驱动程序。
⑶测试和调试,自由构建的驱动程序。
⑷调整,自由构建的驱动程序。
⑸附加测试和调试,检查构建与自由构建的驱动程序和操作系统。
⑹测试和检查,最终的自由构建的驱动程序。
2.用VToolD开发驱动程序6
3.用WinDriver开发驱动程序⑴WinDriver的特点:
从用户层访问硬件;
支持I/O读写、中断处理、物理内存读写;
支持各厂家的PCI、ISA、EISA、ISAnP、PCMCIA、USB总线接口;
支持主流PCI接口芯片:
PLX9050/9054/9060/9080、AMCC、Galileo、V3等PCI桥;
支持通用Win32软件开发平台,如:
VisualC++、C++Builder,VisualB、Dephi、Java等;
应用程序对Win9X与NT/2000二进制代码级兼容,对Win9X、NT2000/CE、Linux源代码级兼容;
提供核心插件功能,可用于开发高性能驱动程序(对调试无误的要求苛刻的部分软件通过WinDriver提供的API插入到核心态运行;
编程向导界面友好,可进行编程前的硬件诊断,可自动生成大部分驱动程序代码。
⑵开发步骤:
利用编程向导开发:
①插入设计好的板卡,打开WinDriverWizard,待开发板卡资源自动分析,生成驱动程序框架代码;
②修改代码,加入定制功能;
③在用户态执行与调试代码;
④将性能苛刻部分插入到核心态;
直接利用WinDriver提供的API函数书写:
①将windriver.h拷贝到应用程序的源代码目录中,以使应用程序可以找到它;
②在应用程序的源文件中包含windows.h、winioctl.h、windriver.h三个头文件;
③调用WD_Open(函数,打开WinDriver设备驱动程序,获得设备文件句柄;
④调用WD_CardRegister(函数,向WinDriverkernal登记板卡信息;
⑤调用WD_Transfer(函数,进行I/O和内存数据的存取.当然,也可直接用WD_CardRegister(函数返回的内存映像的线性地址存取硬件上的地址空间;
⑥若使用中断的话,可调用WD_IntEnable(函数使能中断,此后可调用WD_IntWait(函数等待中断的到来,停止中断响应可调用WD_IntDisable(函数予以实现;
⑦当不需要硬件操作时,可调用WD_CardUnregister(函数取消登记,而后调用WD_Close(函数关闭WinDriver设备驱动程序。
⑶ISA/PCI板卡驱动程序的WinDriver开发演示⑷举例:
WinWriver产生的C++builder的EPP并口API:
①并口开关函数BOOLLPT_O
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 嵌入式 硬件 体系 调试 图文