文档库 最新最全的文档下载
当前位置:文档库 › BDM调试器使用方法

BDM调试器使用方法

BDM调试器使用方法
BDM调试器使用方法

BDM调试器使用方法1.插上5V电源

2.和PC机间用普通串口线相连

3.配置超级终端

首先打开超级中断

开始-→程序-→附件-→通讯-→超级终端

选择Hypertrm

填入名称,这里用MC9S12DP256。选择“确定”

如果开发板是连接到串口1,就选“直接连接到串口1”,如果开发板连接到串口2,就选“直接连接到串口2”。选择“确定”

按BDM头上的SW-PB复位键会看到以下内容

此时BDM头还没有跟目标板相连。

这几个选项意义如下:

1设定目标板的工作频率。我们的目标板使用的是16M无源晶振。选1后输入16000。2让目标板复位

3重新连接

4擦除flash并解开密码锁(S12系列单片机有flash密码锁)

5此选项不要选

用户设定1为16000KHZ后,把BDM头6针插针和开发板的BDMIN 6针插座相连。注意数据线红色一端靠近开发板BDMIN 的1。此时BDM调试器给目标板供电。回车,进入BDM调试器控制界面。再次按BDM调试器的SW-PB可见到如下欢迎画面。

键入fload ;b,回车,点击超级终端的“传送”,选择“发送文本文件”。

在找到要下载的*.s19文件后,按“打开(O)”,这样,就把文件下载到单片机中去了。注意:文件类型选“所有文件”。这里用户可以先下载我们提供的“debug of dp256.S19”文件。下载完之后用户就可以不需要BDM头进行单板调试了。Debug of dp256的使用方法,用户可参阅监控程序的用户说明文档。

擦除目标板的flash可用以下命令:

fbulk

下面对BDM调试器中最有用的命令进行说明。其他的命令用户可参阅DB12RG4.pdf。

输入help命令可看到如下内容:

按任意键可看到剩下的内容

ASM 反汇编命令。后面接反汇编的开始地址。

BAUD 设定BDM通讯的波特率。

BDMDB 进入BDM单步命令模式

BR 设断点。例如S>BR 4000 38:8000 这是在4000和38页8000处设两个硬件断点。当程序遇到硬件断点时,会停下来并在BDM控制界面上显示寄存器的值,此时用户可以改变寄存器的值,按G命令可以让程序继续运行。STOP 让目标板的程序停下来。

T 单步执行。例如S>T 2 执行两条指令。

FLOAD 向目标板的flash下载程序。记得要加 ;b参量。没有这个参量下载的S19文件是线性格式的。

FBULK 擦除目标板的flash.

MDW 以word为单位显示内存内容。例如S>MDW 4000 5000

MD 以byte为单位显示内存内容。

RD 显示寄存器内容。

改变寄存器的内容可直接输入寄存器的名字,再输入改变后的值。例如

S>A 01 把A寄存器改成01

S>X F000 把X寄存器改成F000

最后需要补充的一点是。”S>”表示目标板处于stop状态。”R>”表示目标板的程序正在运行。

电路图、工作原理、调试步骤

1、稳压电源电路图、工作原理、调试步骤 a)仪器的准备 1、调压器 2、变压器 3、指针万用表(2.5A插孔) 4、数字万用表 5、负载电阻12Ω/25W 6、电子电压表 b)电路的功能 该电路是一个串联形直流稳压电路,它是由电源变换电路、整流电路、滤波电路、稳压电路和负载组成。该电路可以实现整流、滤波、稳压。其中稳压部分包括基准电压、取样电路、比较放大器、调整电路等。 c)电路原理图 d)电路的原理 ◆稳压的工作原理 稳压电路是利用负反馈的原理,以输出电压的变化量ΔUL,经取样管VT3与基准电压7.5V(VD5稳压管提供)比较放大后,去控制调整管VT2的基极电流Ib,当Ib增大,调整管Uce将减小;当Ib减小,调整管Uce将增大;使输出电压UL基本保持不变。 当电网电压升高或输出电流减小时: Uo↑→Ub(VT3)↑→Ube(VT3)↑→Ic(VT3)↑→Uc(VT3)↓→Ub(VT1)↓→Ic(VT1)↓→Ic(VT2)↓→Uce(VT2) ↑→Uo↓ 当电网电压下降或输出电流变大时: Uo↓→Ub(VT3) ↓→Ube(VT3) ↓→Ic(VT3) ↓→Uc(VT3) ↑→Ub(VT1) ↑→Ic(VT1) ↑→Ic(VT2) ↑→Uce(VT2) ↓→Uo↓ ◆说明各元件在电路中的作用 VD1、VD2、VD3、VD4桥式整流电路。C6、C7、C8、C9滤波电容、保护整流二极管。VT1、VT2组成复合管,增大等效β值改善稳压性能。C1、C2、C3、C4、C5为滤波电容。R5为VD5限流电阻。R4给VT1的反向穿透电流提供一条通路,防止高温时,VT2出现失控。R8、RP1、R7为VT3分压偏置电阻。R1、R3为VT2负载电阻。R2、R6、R9为VT1偏置、负载电阻。 e)电路的测量步骤

CAD调试小技巧

关于CAD比例调试和标注样式的几点说明 一、CAD比例调试说明: 1.绘图 用CAD绘图时,一般按照1:1的比例绘制,换句话说,如果绘制1m的直线,则在CAD画线命令中输入1000(单位为mm),如图1所示。 图1 2.绘制图框 按照如上所说绘制完成所有工程图后,根据图号要求设置比例,现在以二号图为例进行说明,图2是按照1:1绘制的直线,现要将其设置为二号图进行打印,所以按照1:1绘制完成所有工程图后,根据图号尺寸绘制图框(二号图为594mm ×420mm),图框绘制见图3。 图2 图3

3.比例设置 比例设置方法有两种: 方法一:按比例放大图框,根据所绘图形大小,预估图框需要放大倍数(图框放大比例原则是图形在图框中适中),本例中图框放大两倍,缩放命令是SC。将图框全部选中,输入“SC”(如图4)然后回车,选择基点输入放大倍数2(如图5)。然后将图形放入放大后的图框中(见图6),图形比例即为1:2,这样就完成了图形比例设置。但是图框不再是标准图框,而是标准图框的倍数,所以,只要在打印时设置为二号图框打印,对出图无影响。 图4 图5

图6 方法二:按比例缩小图形,根据所绘图形和图框大小,估计图形需要缩小倍 数(原则和方法一相同),本例中估计需要缩小2倍。和方法一一样,选中所有 图形,输入SC 回车,然后选择基点输入0.5(即X 1 ,X 为缩小倍数) ,然后将图 形移入图框中(见图7)。 图7 使用这种方法后,它的标注尺寸不再是实际尺寸,现在就需要调整测量单位比例因子。根据流程一操作,在测量单位比例因子中输入图形缩小倍数2,然后确定,图形比例即为1:2,结果见图8。

软件调试技巧

软件调试技巧 一、软件调试方法 软件调试有很多种方法。常用的有4种,即强行排错法、回溯排错法、归纳排错法和演绎排错法。 1.强行排错法 这种方法需要动脑筋动的地方比较少,因此叫强行排错。通常有以下3种表现形式: ●打印内存变量的值。在执行程序时,通过打印内存变量的数值,将该数值同预期的数值进行比较,判 断程序是否执行出错。对于小程序,这种方法很有效。但程序较大时,由于数据量大,逻辑关系复杂,效果较差。 ●在程序关键分支处设置断点,如弹出提示框。这种方法对于弄清多分支程序的流向很有帮助,可以很 快锁定程序出错发生的大概位置范围。 ●使用编程软件的调试工具。通常编程软件的IDE集成开发环境都有调试功能,使用最多的就是单步调 试功能。它可以一步一步地跟踪程序的执行流程,以便发现错误所在。 2.回溯排错法 这是在小程序中常用的一种有效的调试方法。一旦发现了错误,可以先分析错误现象,确定最先发现该错误的位置。然后,人工沿程序的控制流程,追踪源程序代码,直到找到错误根源或确定错误产生的范围。 3.归纳排错法 归纳法是一种从特殊推断一般的系统化思考方法。归纳法调试的基本思想是,从一些线索(错误的现象)着手,通过分析它们之间的关系来找出错误,为此可能需要列出一系列相关的输入,然后看哪些输入数据的运行结果是正确的,哪些输入数据的运行结果有错误,然后加以分析、归纳,最终得出错误原因。 4.演绎排错法 演绎法是一种从一般原理或前提出发,经过排除和精化的过程来推导出结论的思考方法。调试时,首先根据错误现象,设想及枚举出所有可能出错的原因作为假设。然后再使用相关数据进行测试,从中逐个排除不可能正确的假设。最后,再用测试数据验证余下的假设是否是出错的原因。 二、调试的原则 调试能否成功一方面在于方法,另一方面很大程度上取决于个人的经验。但在调试时,通常应该遵循以下一些原则。 1.确定错误的性质和位置的原则 用头脑去分析思考与错误征兆有关的信息,避开死胡同。调试工具只是一种辅助手段。利用调试工具可以帮助思考,但不能代替思考。通常避免使用试探法,最多只能将它当作最后的手段,毕竟小概率事件有时也会发生。 2.修改错误的原则 在出现错误的地方,很可能还有别的错误。修改错误的一个常见失误是只修改了这个错误的征兆或这个错误的表现,而没有修改错误本身。当新修正一个错误的同时又引入新的错误。 三、有效减少调试时间 1.绘制程序流程图 一些程序员认为,绘制程序流程图是件繁琐的事,而且浪费时间。其实不然,当读者对着偌大的程序一筹莫展时,面对纷纭复杂的关系理不出头绪时,使用程序流程图绝对可以事半功倍。 因此建议在编制程序前先绘制流程图,这样编程的思路有条理,调试时同样会有条不紊。若编制程序之前没有绘制流程图,当排错没有进展时,可以马上编写流程图。你会发现,程序中某些分支或细节被忽略了,这些细节可能就是程序出错的地方。 2.不要过多地依赖单步调试 有些程序对时间很敏感。数据只在那么一瞬间有效,可谓稍纵即逝。所以等到单步执行到那里时,

iic设备驱动程序.doc

IIC设备驱动程序 IIC设备是一种通过IIC总线连接的设备,由于其简单性,被广泛引用于电子系统中。在现代电子系统中,有很多的IIC设备需要进行相互之间通信 IIC总线是由PHILIPS公司开发的两线式串行总线,用于连接微处理器和外部IIC设备。IIC设备产生于20世纪80年代,最初专用与音频和视频设备,现在在各种电子设备中都广泛应用 IIC总线有两条总线线路,一条是串行数据线(SDA),一条是串行时钟线(SCL)。SDA负责数据传输,SCL负责数据传输的时钟同步。IIC设备通过这两条总线连接到处理器的IIC总线控制器上。一种典型的设备连接如图: 与其他总线相比,IIC总线有很多重要的特点。在选择一种设备来完成特定功能时,这些特点是选择IIC设备的重要依据。 主要特点: 1,每一个连接到总线的设备都可以通过唯一的设备地址单独访问 2,串行的8位双向数据传输,位速率在标准模式下可达到100kb/s;快速模式下可以达到400kb/s;告诉模式下可以达到3.4Mb/s 3,总线长度最长7.6m左右 4,片上滤波器可以增加抗干扰能力,保证数据的完成传输 5,连接到一条IIC总线上的设备数量只受到最大电容400pF的限制 6,它是一个多主机系统,在一条总线上可以同时有多个主机存在,通过冲突检测方式和延时等待防止数据不被破坏。同一时间只能有一个主机占用总线 IIC总线在传输数据的过程中有3种类型的信号:开始信号、结束信号、和应答信号 >>开始信号(S): 当SCL为高电平时,SDA由高电平向低电平跳变,表示将要开始传输数据 >>结束信号(P):当SCL为高电平时,SDA由低电平向高电平跳变,表示结束传输数据 >>响应信号(ACK): 从机接收到8位数据后,在第9个周期,拉低SDA电平,表示已经收到数据。这个信号称为应答信号 开始信号和结束信号的波形如下图:

调试器工作原理探究系列第三篇

本文是调试器工作原理探究系列的第三篇,在阅读前请先确保已经读过本系列的第一和第二篇。 本篇主要内容 在本文中我将向大家解释关于调试器是如何在机器码中寻找C 函数以及变量的,以及调试器使用了何种数据能够在C源代码的行号和机器码中来回映射。 调试信息 现代的编译器在转换高级语言程序代码上做得十分出色,能够将源代码中漂亮的缩进、嵌套的控制结构以及任意类型的变量全都转化为一长串的比特流——这就是机器码。这么做的唯一目的就是希望程序能在目标CPU上尽可能快的运行。大多数的C代码都被转化为一些机器码指令。变量散落在各处——在栈空间里、在寄存器里,甚至完全被编译器优化掉。结构体和对象甚至在生成的目标代码中根本不存在——它们只不过是对内存缓冲区中偏移量的抽象化表示。 那么当你在某些函数的入口处设置断点时,调试器如何知道该在哪里停止目标进程的运行呢?当你希望查看一个变量的值时,调试器又是如何找到它并展示给你呢?答案就是——调试信息。 调试信息是在编译器生成机器码的时候一起产生的。它代表着可执行程序和源代码之间的关系。这个信息以预定义的格式进行编码,并同机器码一起存储。许多年以来,针对不同的平台和可执行文件,人们发明了许多这样的编码格式。由于本文的主要目的不是介绍这些格式的历史渊源,而是为您展示它们的工作原理,所以我们只介绍一

种最重要的格式,这就是DWARF。作为Linux以及其他类Unix平台上的ELF可执行文件的调试信息格式,如今的DWARF可以说是无处不在。 ELF文件中的DWARF格式 根据维基百科上的词条解释,DWARF是同ELF可执行文件格式一同设计出来的,尽管在理论上DWARF也能够嵌入到其它的对象文件格式中。 DWARF是一种复杂的格式,在多种体系结构和操作系统上经过多年的探索之后,人们才在之前的格式基础上创建了DWARF。它肯定是很复杂的,因为它解决了一个非常棘手的问题——为任意类型的高级语言和调试器之间提供调试信息,支持任意一种平台和应用程序二进制接口(ABI)。要完全解释清楚这个主题,本文就显得太微不足道了。说实话,我也不理解其中的所有角落。本文我将采取更加实践的方法,只介绍足量的DWARF相关知识,能够阐明实际工作中调试信息是如何发挥其作用的就可以了。 ELF文件中的调试段

程序调试技巧之调用堆栈

调试技巧之调用堆栈 在计算机科学中,Callstack是指存放某个程序的正在运行的函数的信息的栈。Call stack由stack frames组成,每个stack frame对应于一个未完成运行的函数。 在当今流行的计算机体系架构中,大部分计算机的参数传递,局部变量的分配和释放都是通过操纵程序栈来实现的。栈用来传递函数参数,存储返回值信息,保存寄存器以供恢复调用前处理机状态。每次调用一个函数,都要为该次调用的函数实例分配栈空间。为单个函数分配的那部分栈空间就叫做stack frame,也就是说,stack frame这个说法主要是为了描述函数调用关系的。 Stackframe组织方式的重要性和作用体现在两个方面:第一,它使调用者和被调用者达成某种约定。这个约定定义了函数调用时函数参数的传递方式,函数返回值的返回方式,寄存器如何在调用者和被调用者之间进行共享;第二,它定义了被调用者如何使用它自己的stack frame来完成局部变量的存储和使用。 简单介绍 调试是程序开发者必备技巧。如果不会调试,自己写的程序一旦出问题,往往无从下手。本人总结10年使用VC经验,对调试技巧做一个粗浅的介绍。希望对大家有所帮助。 今天简单的介绍介绍调用堆栈。调用堆栈在我的专栏的文章VC调试入门提了一下,但是没有详细介绍。 首先介绍一下什么叫调用堆栈:假设我们有几个函数,分别是function1,function2,function3,funtion4,且function1调用function2,function2调用function3,function3调用function4。在function4运行过程中,我们可以从线程当前堆栈中了解到调用他的那几个函数分别是谁。把函数的顺序关系看,function4、function3、function2、function1呈现出一种“堆栈”的特征,最后被调用的函数出现在最上方。因此称呼这种关系为调用堆栈(callstack)。 当故障发生时,如果程序被中断,我们基本上只可以看到最后出错的函数。利用call stack,我们可以知道当出错函数被谁调用的时候出错。这样一层层的看上去,有时可以猜测出错误的原因。常见的这种中断时ASSERT宏导致的中断。 在程序被中断时,debug工具条的右侧倒数第二个按钮一般是callstack按钮,这个按钮被按下后,你就可以看到当前的调用堆栈。

教你如何调节人声音色的调试技巧

教你如何调节人声音色的调试技巧 人声音色的调试技巧 1. 人声是一个复合音。也就是由声音的基音和一系列的泛音所构成。这些泛音都是基音频率的位数,物理学叫分音,电声学叫谐波,音乐中叫泛音。低频泛音的幅度较强,音色就表现得混厚;中频泛音的幅度比较强,音色就表现得圆润、自然、和谐;高频泛音的幅度比较强,音色就表现得明亮、清透、解析力强。 2. 如果高频段频率过弱,其音色就变得灰哑、缺少韵味、和个性;如果高频段频率过强,音色就会变得尖噪、刺耳。 如果中高频段的频率过弱,音色就变得暗淡、朦胧;如果中高频段的频率过强,其音色就会变得呆板。 3. 如果低频段的频率过弱,音色将会变得单薄、苍白;如果低频段的频率过强,音色会变得浑浊不清。 音响话筒怎样调节使用效果好! 调试篇 1.怎样调好话筒? 目前流行、通俗的演唱使用的动圈话筒音箱摆放尽量不要把话筒拾音区域覆盖进去。唱歌底气不足的加中高频,突出他的亮,底气很足的减低频,省得声音破掉,女人加低频声音厚,男人加高频声音透。 2.如何调音? ①设备的开、关机顺序 由音源设备(CD机、DVD机、)、音频处理设备(效果器、等)到功率放大器到电视机、投影机、。关机时顺序相反,应先关功放。这样操作可以防止开、关机对设备的冲击,防止烧毁功放和扬声器。 KTV音响声道系统三大的特点 声道系统的特点: 第一从声音效果上,能够使声音的密度感更好,声场更加宽阔,能够很好的营造出临场感和现场气氛,声场的密度感大大增加歌唱时倍感轻松, ◆第二从声压水平上来看,采用三只辅助音响能够使较小尺寸的音箱达到相同的声音量感和声压水平,这样更加便于我们进行箱体的安装,使其更好的溶入装修之中。同时在低频的表现上来看,多只小尺寸的扬声器的低频速度感比单只大口径扬声器单元更好,主观听感的冲击力和刺激感更加强烈,表现的声底将更干净,清晰。 第三从音箱运行安全性上,众所周知卡拉OK 音箱的扬声器是很容易损坏的,除了摔MIC,啸叫等

MSP430 IIC 程序驱动代码

/ 开发平台;MSP430 IIC总线驱动代码 本人试用过,可以成功的调通 /////////////////////////////////////////////////////////// //iic.c #include typedef unsigned char uchar; typedef unsigned int uint; #define SCL_H P1OUT |= BIT2 #define SCL_L P1OUT &= ~BIT2 #define SDA_H P1OUT |= BIT3 #define SDA_L P1OUT &= ~BIT3 #define SDA_in P1DIR &= ~BIT3 //SDA改成输入模式#define SDA_out P1DIR |= BIT3 //SDA变回输出模式#define SDA_val P1IN&BIT3 //SDA的位值 #define TRUE 1 #define FALSE 0 /******************************************* 函数名称:delay 功能:延时约15us的时间 参数:无 返回值:无 ********************************************/ void delay(void) { uchar i; for(i = 0;i < 15;i++) _NOP(); } /******************************************* 函数名称:start 功能:完成IIC的起始条件操作 参数:无 返回值:无 ********************************************/ void start(void) { SCL_H;

在Eclipse中使用debug(Eclipse调试常用技巧)

Eclipse调试常用技巧 发表时间:2010-04-06 最后修改:2010-11-26 记得刚刚毕业的时候,自己连断点也不会打,当时还在用JCreate,就连毕业设计也是用System.out找Bug的,想想真的很笨。开始工作后,一个星期过去了,在一个1、2百万行的系统中找Bug,我依然在用System.out,当时最痛苦的就是修改代码,每次找到疑似Bug,就输出一下,然后重启(那时也不知道代码热替换),直到有一天带我的导师发现了这样笨笨的调试Bug,才让我第一次认识了断点,也知道了代码修改完了可以进行热替换,我这个中国教育的半牺牲品才算向美好生活迈进了一小步。 1、条件断点 断点大家都比较熟悉,在Eclipse Java编辑区的行头双击就会得到一个断点,代码会运行到此处时停止。 条件断点,顾名思义就是一个有一定条件的断点,只有满足了用户设置的条件,代码才会在运行到断点处时停止。 在断点处点击鼠标右键,选择最后一个"Breakpoint Properties" 断点的属性界面及各个选项的意思如下图,

2、变量断点 断点不仅能打在语句上,变量也可以接受断点, 上图就是一个变量的打的断点,在变量的值初始化,或是变量值改变时可以停止,当然变量断点上也是可以加条件的,和上面的介绍的条件断点的设置是一样的。 3、方法断点 方法断点就是将断点打在方法的入口处, 方法断点的特别之处在于它可以打在JDK的源码里,由于JDK在编译时去掉了调试信息,所以普通断点是不能打到里面的,但是方法断点却可以,可以通过这种方法查看方法的调用栈。

4、改变变量值 代码停在了断点处,但是传过来的值不正确,如何修改一下变量值保证代码继续走正确的流程,或是说有一个异常分支老是进不去,能不能调试时改一下条件,看一下异常分支代码是否正确? 在Debug视图的Variables小窗口中,我们可以看到mDestJarName变量的值为" F:\Study\eclipsepro\JarDir\jarHelp.jar" 我们可以在变量上右键,选择"Change Value..."在弹出的对话框中修改变量的值, 或是在下面的值查看窗口中修改,保用Ctr+S保存后,变量值就会变成修改后的新值了。 5、重新调试 这种调试的回退不是万能的,只能在当前线程的栈帧中回退,也就说最多只能退回到当前线程的调用的开始处。 回退时,请在需要回退的线程方法上点右键,选择"Drop to Frame"

VB程序调试技巧

一,如果遇到了一些逻辑性很强的问题比如有循环什么的我的方法是在关键地方加入debug.print 变量 这样可以比较好地找到问题 二,msgbox 三,监视窗口,如下面的例子 For i=1 to 10000 A=sqr(i) next i 你想再监视当i=799时A的值,就可以添加监视,方法:点调试,添加监视,选择“当监视值为真时中断”,上面表达式框中写上i=799, 这样你按F5,运行程序,程序会在i=799时中断。其他选项你可以自己去琢磨一下。 一个程序如何顺利的“脱产”,调试的过程是非常重要的。学过、钻研过程序设计的人都有同样的感受,很多情况下,调试程序的过程会比程序编写的过程更为困难。任何一个天才都不敢说,他编的程序是100%正确的。几乎每一个稍微复杂一点的程序都必须经过反复的调试、修改,最终才完成。所以说,程序的调试是编程中的一项重要技术。 程序中的典型错误类型 A类:语法错误。 B类:编译错误。 C类:属性设置错误。 D类:逻辑错误。 调试方法 方法一:利用“MSDN帮助菜单” “MSDN帮助菜单”是一个很好的自学工具,对于出现调试对话框的菜单来说,可以按下“帮助”按钮查看错误原因。 对于一些不是很清楚的函数格式、保留字的作用,也可以借助“帮助菜单”。 方法二:逐过程检查 主要检查代码是否写对,位置有没有错误,关键是要确定一段代码是在哪个事件控制下的。不妨先在脑海中把整个程序过一边,想一想究竟会有哪些事件发生(有些事件是人机互动的,例如:鼠标点击;而有些是机器自己执行的,这时要想到计时器的作用);然后想一想每一件事发生后有什么效果。我们代码所编写的一般就是事件发生后的这个效果,那么以此事件来决定代码所写的位置。 方法三:逐语句检查(顺序、语义) 主要检查每一句代码的顺序是否写对,语义是否正确。 把整个代码从头至尾地读一边,仔细思索每一段子过程什么时候执行,以及每一子过程中的每一句代码什么时候发生,必要时可以在程序段中插入Print语句分段查看;也可用注释语

TI-I2C驱动

TI-I2C驱动 一、与I2C驱动相关的文件分成两部分: 1)应用层接口部分: 程序在svn中的路径如下: 在https://dareglob-971006/svn/eocOS/branches/eocOS_v4/branches/bsp/user/i2c目录下,i2ctest.c文件,提供了lm75a_temp_read()方法,用来读取LM75A设备温度寄存器中的温度信息的功能。 2)内核驱动部分: 内核位于svn中的路径如下: https://dareglob-971006/svn/eocOS/branches/eocOS_v4/branches/bsp/kernel (1)总线驱动: i2c-davinci.c:在内核目录中driver/i2c/busses目录下,适用于TI的I2C总线驱动程序。I2C总线驱动是对I2C硬件体系结构中适配器端的实现。 (2)I2C驱动代码核心: i2c-core.c:在内核目录中driver/i2c/目录下,是I2C代码的核心,用于沟通虚拟文件系统与底层实现。该文件提供了I2C总线驱动和设备驱动的注册、注销方法,I2C通信方法上层的、与具体适配器无关的代码以及探测设备、检测设备地址的上层代码等。 (3)I2C设备驱动: lm75.c:在内核目录中driver/hwmon目录下,是针对LM75A以及其他能兼容的温度传感器的设备驱动。I2C设备驱动是对I2C硬件体系结构中设备端的实现,设备一般挂接在受CPU控制的I2C适配器上,通过I2C适配器与CPU交换数据。二、I2C简要工作流程 1)在总线驱动初始化时候,当通过Linux内核源代码/driver/base/platform.c文件中定义platform_driver_register()函数注册platform_driver结构体时,其中probe指针指向的davinci_i2c_probe()函数将被调用,以初始化适配器硬件。 2)而davinci_i2c_remove()函数则完成与davinci_i2c_probe()相反的功能。用于内存和中断等系统资源的释放和注销。 3)总线驱动i2c-davinci.c中,定义了i2c_davinci_xfer函数。该函数是I2C总线通信传输函数。并且I2C适配器对应的i2c_algorithm结构体实例为i2c_davinci_algo,其中的master_xfer函数指针指向i2c_davinci_xfer函数。 4)当设备被打开,并且用户开始读操作时,会调用设备驱动lm75.c中show_temp()函数,该函数会调用i2c-core.c中的i2c_smbus_xfer()函数,i2c_smbus_xfer()函数会检查适配器对应的i2c_algorithm结构体中是否注册了smbus_xfer函数(目前i2c_davinci_algo中未注册smbus_xfer函数),程序会调用i2c_smbus_xfer_emulated()函数,最终,还是会调用标准的I2C总线通信函数master_xfer(),由于master_xfer 已经指向i2c_davinci_xfer函数,所以会调用总线驱动i2c-davinci.c中的i2c_davinci_xfer函数来读取信息。 三、接口函数 1)应用层接口: Int lm75a_temp_read(float *temp) 读取lm75a 温度 2)内核中:lm75.c文件 static ssize_t show_temp(struct device *dev, struct device_attribute *da,char *buf)

TI低功率SmartPA调试系列之一扬声器工作原理及软件

Application Notes 1 TI 低功率Smart PA 调试系列之一: 扬声器工作原理及软件调试入门 Anjin Du/Ding Wei/Xiangyan Xue 摘要 本系列汇集了关于TI 低功率Smart PA 的四篇应用笔记,分别从扬声器基础、软件调试、算法等方面介绍了TI 低功率Smart PA 技术。本文是这个系列的第一篇,主要介绍了扬声器的基础知识和工作原理,以及TI 低功率闭环Smart PA 器件的架构和调试入门,是后续文章的基础。 随后的系列应用笔记还包括《TI Smart PA 基础调音指南》、《TAS25xx Smart AMP Anti-Clipper 模块的音效调试》、《TI Smart PA 算法介绍》。 目录 1 扬声器工作原理及结构 (2) 1.1 电动式扬声器的工作原理: (2) 1.2 电动式扬声器的结构: (3) 1.3 扬声器的音质的评判 (6) 2 扬声器的主要参数 (6) 3 低功率Smart PA 的引入及其对扬声器性能的提升 (10) 3.1 传统应用中扬声器参数对其性能的限制 (10) 3.2 低功率Smart PA 的工作原理及其对扬声器性能的提升 (10) 4 PPC3 软件的使用以及喇叭参数的获取 (12) 4.1 PPC3(Pure Path Console 3)软件介绍 (12) 4.2 扬声器参数的建模提取 (13) 5 总结 .............................................................................................................................................. 15 6 参考资料 (15) 图 Figure 1电动式扬声器工作原理示意图 (3) Figure 2电动式扬声器结构框图 (4) Figure 3 扬声器的主要组成构件 (4) Figure 4 传统功放和低功率闭环Smart PA 功放的工作原理比较 (11) Figure 5 Smart PA 架构 (12) Figure 7 PPC3 典型界面 (13) Figure 8 扬声器参数提取的硬件环境 (14) Figure 9 Smart PA 参数界面 (15)

C++编程中的四个调试小技巧

C++编程中的四个调试小技巧 1.调试标记 适用预处理#define定义一个或多个调试标记,在代码中把调试部分使用#ifdef 和#endif 进行管理。当程序最终调试完成后,只需要使用#undef标记,调试代码就会消失。常用的调试标记为DEBUG, 语句序列: #define DEBUG #ifdef DEBUG 调试代码 #endif 2.运行期间调试标记 在程序运行期间打开和关闭调试标记。通过设置一个调试bool标记可以实现。这对命令行运行的程序更为方便。 例如下面代码 #include<iostream> #include <string> using namespace std; bool debug =false; int main(int argc,char*argv[]) { for(int i=0;i<argc;i++) if(string(argv[i])=="--debug=on") debug = true; bool go=true; while(go) { if(debug) {

调试代码 }else {} } } 3.把变量和表达式转换成字符串 可是使用字符串运算符来实现转换输出定义 #define PR(x) cout<<#x"="<<x<<'\n' 4.c语言的assert() 该宏在<assert>中,,当使用assert时候,给他个参数,即一个判读为真的表达式。预处理器产生测试该断言的代码,如果断言不为真,则发出一个错误信息告诉断言是什么以及它失败一会,程序会终止。 #include< assert> using namsapce std; int main() { int i=100; assert(i!=100); //Fails } 当调试完毕后在#include<assert>前加入#define NDEBUG即可消除红产生的代码 }

调试程序的简单说明.

难怪很多前辈说调试是一个程序员最基本的技能,其重要性甚至超过学习一门语言。不会调试的程序员就意味着他即使会一门语言,却不能编制出任何好的软件。 我以前接触的程序大多是有比较成形的思路和方法,调试起来出的问题都比较小,最近这个是我自己慢慢摸索调试,接触了很多新的调试方法,并查了很多前辈的总结,受益匪浅,总结以前的和新的收获如下: VC 调试篇 设置 为了调试一个程序,首先必须使程序中包含调试信息。一般情况下,一个从AppWizard 创建的工程中包含的Debug Configuration 自动包含调试信息,但是是不是Debug 版本并不是程序包含调试信息的决定因素,程序设计者可以在任意的Configuration 中增加调试信息,包括Release 版本。 为了增加调试信息,可以按照下述步骤进行: ? 打开Project settings 对话框(可以通过快捷键ALT+F7打开,也可以通过IDE 菜单Project/Settings 打开 ?选择C/C++页,Category 中选择general ,则出现一个Debug Info 下拉列表框,可供选择的调试信息方式包括: 命令行 Project settings 说明 无 None 没有调试信息 /Zd Line Numbers Only 目标文件或者可执行文件中只包含全局和导出符号以及代码行信息,不包含符号调试信息

/Z7 C 7.0- Compatible 目标文件或者可执行文件中包含行号和所有符号调试信息,包括变量名及类型,函数及原型等 /Zi Program Database 创建一个程序库(PDB,包括类型信息和符号调试信息。 /ZI Program Database for Edit and Continue 除了前面/Zi 的功能外,这个选项允许对代码进行调试过程中的修改和继续执行。这个选项同时使 #pragma 设置的优化功能无效 ? 选择Link 页,选中复选框"Generate Debug Info",这个选项将使连接器把调试信息写进可执行文件和DLL ?如果C/C++页中设置了Program Database 以上的选项,则Link incrementally 可以选择。选中这个选项,将使程序可以在上一次编译的基础上被编译(即增量编译,而不必每次都从头开始编译。调试方法: 1、使用 Assert(原则:尽量简单assert只在debug下生效,release下不会被编译。 2、防御性的编程 3、使用Trace 4、用GetLastError来检测返回值,通过得到错误代码来分析错误原因 5、把错误信息记录到文件中 位置断点(Location Breakpoint 大家最常用的断点是普通的位置断点,在源程序的某一行按F9就设置了一个位置断点。但对于很多问题,这种朴素的断点作用有限。譬如下面这段代码:

I2C 24CXX驱动程序(真正实用 全)

#define _24cXX_H /* Includes ----------------------------------------------------------------*/ #include "stm32f10x.h" #include "value.h" //#include "stdbool.h" /* Define ------------------------------------------------------------------*/ /* EEPROM Addresses defines */ //注:32 64 的字地址是16位2个字节如果使用32或64请简单修改驱动即可 #define WC24cXX 0x00 // 器件地址写#define RC24cXX 0x01 // 器件地址读 #define USE_24C08 //使用24C08 #ifdef USE_24C02 #define MAXSIZE24cXX 256 // 总容量Bytes //级联时请修改本参数和硬件驱动 #define BLOCK_SIZE 256 // 块容量Bytes #define I2C_PAGESIZE 8 // 8个字节每页 #endif #ifdef USE_24C04 #define MAXSIZE24cXX 512 // 总容量Bytes //级联时请修改本参数和硬件驱动 #define BLOCK_SIZE 256 // 块容量Bytes #define I2C_PAGESIZE 16 // 16个字节每页 #endif #ifdef USE_24C08 #define MAXSIZE24cXX 1024 // 总容量Bytes //级联时请修改本参数和硬件驱动 #define BLOCK_SIZE 256 // 块容量Bytes #define I2C_PAGESIZE 16 // 16个字节每页 /* user define */ #define YBCV_ADDR_0 0x0000 //定义仪表控制数据结构体的EEPROM存储地址0 #define YBCV_ADDR_1 0x0200 //定义仪表控制数据结构体的EEPROM存储地址1 #define EEPROM_VERIFY YB_CTRL_V ALE_SIZE //EEPROM仪表通道修正参数存储地址 #endif #ifdef USE_24C16 #define MAXSIZE24cXX 2048 // 总容量Bytes #define I2C_PAGESIZE 16 // 16个字节每页 #endif

IIC驱动 IO模拟

QPSK STV0903 TUNER STV6110 驱动设计 1.IIC 理论 MEGA128 模拟IIC时序控制QPSK 中的STV0903 STV6110 STV0903 STV6110 连接图 IIC时序理论 先看下STV0903写时序图 1)起总线 先将SCL、SDA拉高,然后维持SCL为高先将SDA拉低参考代码如下:void Start(void) { SBI(PORTD,SAA7113_DA TA); SBI(PORTD,SAA7113_CLK); IIC_delay(); CBI(PORTD,SAA7113_DA TA); IIC_delay(); CBI(PORTD,SAA7113_CLK); IIC_delay(); } 2)停总线 先将SCL、SDA拉低,然后先拉高SCL,维持SCL为高时拉高SDA 参考代码:

void Stop(void) { CBI(PORTD,SAA7113_DA TA); CBI(PORTD,SAA7113_CLK); IIC_delay(); SBI(PORTD,SAA7113_CLK); IIC_delay(); SBI(PORTD,SAA7113_DA TA); IIC_delay(); } 3)写总线 在写总线时将SDA设置为输出,参考代码: void write_byte(unsigned char data) { uchar m,tmp; SBI(SAA7113_DDR,SAA7113_DA TA); for(m = 0; m < 8; m++) { if(data & 0x80) SBI(PORTD,SAA7113_DA TA); else CBI(PORTD,SAA7113_DA TA); IIC_delay(); SBI(PORTD,SAA7113_CLK); IIC_delay(); data = data<<1; CBI(PORTD,SAA7113_CLK); } IIC_delay(); saa7113_ack(); IIC_delay(); } 4)应答 应答由被控制芯片回应过来,在此时SDA应该设置为输入等待ACK, 在CLK第九个脉冲时,CLK为高电平,而SDA为一个低电平在表示收到器件的一个ACK应答。。 参考代码: void saa7113_ack() { uchar tmp,m; CBI(DDRD,SAA7113_DA TA); SBI(PORTD,SAA7113_CLK); for(m=0;m<10;m++) {

投影设置小窍门-投影机最简单调试方法

投影设置小窍门-投影机最简单调试方法

投影设置小窍门投影机最简单调试方法 随着高清影音时代到来,包括大屏幕电视、显示器在内的显示产品持续热销,其中就连消费者以前很少接触的家用投影机也变得好卖了许多。不过,相比传统的家电产品,投影机无论在安装还是调试方面都要复杂不少。 作为一种精密的光学设备,投影机的使用方法与许多家电产品有所不同,在使用之中,有不少注意事项需要提前阅读。今天,小编主要介绍一些投影机菜单中的主要功能与调试方法,希望对于刚刚接触投影及的新手带来一些帮助。 画面颠倒怎么办?投影方式需设置正确 在日常使用中,投影机最常见的安装方式无外乎吊装与正投两种。但是,由于每款投影机的镜头规格不同,其产品在投影距离与投射角度上存在差异,因此在购买或安装投影机前,要根据说明书中的投射距离参数计算安装位置。 一些高端产品具备镜头位移功能 点击此处查看全部新闻图片

在一些中高端家用投影机中,用户可以通过镜头位移功能调整画面位置,而且画面质量不会降低。通过这一功能,投影机的安装范围大幅扩大,能够安置在沙发一旁的边桌或者专业器材架上,特别适合不便于吊装投影机的家庭。当然,这些具备位移功能的产品,售价要更贵一些。 投影方式确保设置正确 点击此处查看全部新闻图片 无论投影机采用吊装还是正投,首先要在菜单中选择相应的投影方式,才能获得方向正确的显示画面。否则,可能会出现画面颠倒的情况,此时调整投影方式即可解决。 画面变形咋办?尝试使用梯形校正功能 与安装显示器、平板电视相似,投影机同样不能放在不平稳的表面或架子上,最好能够水平放置,此时投影画面最清晰,且不会出现梯形畸变。如果需要向上投影时,投影机倾斜角度不应超过15度,否则将会影响投影机的使用寿命。

PLC程序调试方法及步骤

来源:中国物资采购网时间:2010年5月6日11时20分【大中小】PLC程序的调试可以分为模拟调试和现场调试两个调试过程,在此之前首先对PLC外部接线作仔细检查,这一个环节很重要。外部接线一定要准确无误。也可以用事先编写好的试验程序对外部接线做扫描通电检查来查找接线故障。不过,为了安全考虑,最好将主电路断开。当确认接线无误后再连接主电路,将模拟调试好的程序送入用户存储器进行调试,直到各部分的功能都正常,并能协调一致地完成整体的控制功能为止。 1.程序的模拟调试 将设计好的程序写入PLC后,首先逐条仔细检查,并改正写入时出现的错误。用户程序一般先在实验室模拟调试,实际的输入信号可以用钮子开关和按钮来模拟,各输出量的通/断状态用PLC上有关的发光二极管来显示,一般不用接PLC实际的负载(如接触器、电磁阀等)。可以根据功能表图,在适当的时候用开关或按钮来模拟实际的反馈信号,如限位开关触点的接通和断开。对于顺序控制程序,调试程序的主要任务是检查程序的运行是否符合功能表图的规定,即在某一转换条件实现时,是否发生步的活动状态的正确变化,即该转换所有的前级步是否变为不活动步,所有的后续步是否变为活动步,以及各步被驱动的负载是否发生相应的变化。 在调试时应充分考虑各种可能的情况,对系统各种不同的工作方式、有选择序列的功能表图中的每一条支路、各种可能的进展路线,都应逐一检查,不能遗漏。发现问题后应及时修改梯形图和PLC中的程序,直到在各种可能的情况下输入量与输出量之间的关系完全符合要求。 如果程序中某些定时器或计数器的设定值过大,为了缩短调试时间,可以在调试时将它们减小,模拟调试结束后再写入它们的实际设定值。 在设计和模拟调试程序的同时,可以设计、制作控制台或控制柜,PLC之外的其他硬件的安装、接线工作也可以同时进行。 2.程序的现场调试 完成上述的工作后,将PLC安装在控制现场进行联机总调试,在调试过程中将暴露出系统中可能存在的传感器、执行器和硬接线等方面的问题,以及PLC的外部接线图和梯形图程序设计中的问题,应对出现的问题及时加以解决。如果调试达不到指标要求,则对相应硬件和软件部分作适当调整,通常只需要修改程序就可能达到调整的目的。全部调试通过后,经过一段时间的考验,系统就可以投入实际的运行了。 本文来自: 中国物资采购网https://www.wendangku.net/doc/d66260664.html, 详细出处参考:https://www.wendangku.net/doc/d66260664.html,/newsinfo/2010-5-6/201056-11200321719338297.html PLC程序现场调试指在工业现场,甩有设备都安装好后,所有连接线都接好后的实际调试。也是PLC程序的最后调试。现场调试的目的是,调试通过后,可交给用户使用,或试运行。现场调试参与的人员较多,要组织好,要有调试大纲。依大纲,按部就班地一步步推进。开始调试时,设备可先不运转,甚至了不要带电。可随着调试的进展逐步加电、开机、加载,直到按额定条件运转。具体过程大体是: 1)、要查接线、核对地址。要逐点进行,要确保正确无误。可不带电核对,那就是查线,较麻烦。也可带电查,加上信号后,看电控系统的动作情况是否符合设计的目的。 2)、检查模拟量输入输出。看输入输出模块是否正确,工作是否正常。必要时,还可用标准仪器检查输入输出的精度。 3)、检查与测试指示灯。控制面板上如有指示灯,应先对应指示灯的显示进行检查。一方面,查看灯坏了没有,另一方面检查逻辑关系是否正确。指示灯是反映系统工作的一面镜子,先调好它,将对进一步调试提供方便。 4)、检查手动动作及手动控制逻辑关系。完成了以上调试,继而可进行手动动作及手动

相关文档
相关文档 最新文档