当前位置:
文档之家› 嵌入式硬件体系的调试_图文.
嵌入式硬件体系的调试_图文.
mov al,0ffh
out dx,al
mov bx,2fffh
}
loop1: asm {dec bx
jz end
mov dx,211h //Port(211h.3=1?
in al,dx
test al,008h
jz loop1
}
asm {mov dx,211h //0x00-->Port(211h
mov al,000h
//-----------------------------------------------------------------------
void __fastcall TForm1::initial(void
{//open the serial port to read or write
hCom=CreateFile(port,GENERIC_READ|GENERIC_WRITE,0,
5.模拟干扰、振动实验等可靠性测试
使用可调的模拟干扰仪器、振动器,或自制的相应工具,得到相应的恶劣环境,置所四.PC机测试程序及其书写
DOS
Debug测试,VB、VC或C++Builder可视化应用测试程序书写等。例:
1.DOS Debug的并口测试:
在DOS或Windows DOS窗口下,可通过Debug软件的I(读或O(写命令对三个寄存器的状态进行观察改写,如:
in al,dx
test al,001h
jz loop
}
asm {mov dx,210h //Port(210h
mov al,z
out dx,al
}
}
3.用WinAPI函数进行串行异步通信
HANDLE hCom;
DCB dcb;
BOOL fSuccess,bResult; unsigned long nBytesWritten,nBytesRead; COMMTIMEOUTS timeouts;
if(!fSuccess ShowMessage("Setup Communication Fail!"; //set timeouts parameters to read serial port
timeouts.ReadIntervalTimeout=MAXDWORD;
timeouts.ReadTotalTimeoutMultiplier=MAXDWORD;
fSuccess=GetCommState(hCom,&dcb;
if(!fSuccess ShowMessage("Get Communication Fail!"; dcb.BaudRate=9600;
dcb.ByteSize=8;
dcb.Parity=NOPARITY;
dcb.StopBits=ONESTOPBIT;
ADJST 321
4
11
DB4A LM 324RB528k RB512k
RB541k
RB535k CB2104
CB1104
-12V
+12V +12V CB31047
CB5104CB6104
4.逐一电路模块的测试:飞线、割线等手段的使用
CPU之各种外扩存储器测试;
CPU之主要外设测试;
系统接口电路、通讯电路测试;
三.常用调试手段与技巧介绍
1.用双路直流电源得到正负电源供给
-+-+
负源
地
正源
2.PCB板的板级测试
板上各种电源的短路测试;
首次加电测试,各种主要电源测试、主要IC的运行发热状况观察等; CPU之时钟电路测试、复位电路测试;
3.模拟信号源的实验板制作
主要是对信号发生器所产生信号的调理,包括缩放、零点调整等;
《嵌入式系统硬件设计》教程
第十一讲嵌入式硬件体系的调试
编著与讲演:怯肇乾
一.知识准备与上述相关讲义的回顾
知识准备:电路测试、系统的模拟与仿真等;
相关讲义的回顾:CPU器件的模拟与仿真、测量控制电路、系统基础电路。
二.常用电路测试工具及其使用
直流电源
示波器:模拟示波器、数字示波器
多功能数字万用表
逻辑分析仪
timeouts.ReadTotalTimeoutConstant=1000;//65000;
fSuccess=SetCommTimeouts(hCom,&timeouts;
if(!fSuccess
ShowMessage("Set Communication Timeouts Fail!";
set serial communication parameters
C:\>Debug
-O 378 5A
-I 378
5A
-I 379
78
-O 37a 55
-I 37a
55
2.使用嵌入式汇编语言书写可视化测试程序
下面是用C++Builder书写的ISA收发卡的初始化和收发函数char TForm1::initial(void //ISA卡的初始化函数
{ asm {mov dx,211h //0xff-->Port(211h
asm mov bx,0fffh
loop: asm {dec bx
jz nnn
mov dx,211h
in al,dx
test al,002h
jnz loop
}
asm {mov dx,210h
in al,dx
mov z,al
}
goto eee;
nnn: z=0x20;
eee: return (z;
}
void TForm1::ByteSend(char z //字节发送函数{loop: asm {mov dx,211h //Port(211h.0=1?
out dx,al
mov bx,2fffh
}
loop2: asm {dec bx
jz end
mov dx,211h //Port(211h.3=0?
in al,dx
test al,008h
jnz loop2
}
return 0;
end: return -1;
}
char TForm1::ByteReceive(void //字节接收函数{char z;
NULL,OPEN_EXISTING,0,NULL;
if (hCom==INV ALID_HANDLE_V ALUE
{ShowMessage("not Open Serial Port Selected!";}
//set the sizes of in&out buffer,in bytes
fSuccess=SetupComm(hCom,2000,2000;