1 – 检测不到方针体系
调试前,请把方针板衔接好,然后用调试软件检测方针体系。假如检测不到方针体系,请做以下的查看。
A – 确认你的衔接是正确的;
B – 确认你运用的仿真器是被调试软件支撑的
C – 对WIGGLER而言,我们没有固定的电路图,所以需求在软件里做相应的设置;
D – 对LPC2000系列而言,RTCK管脚一般是用来操控是否使能JTAG接口的,请查阅数据手册;
E – 假如你用的芯片比较特别,例如STR91X,我们内部扫描链是串接的,请设置好TAP,以让仿真器知道扫描链的长度;
2 – 程序下载不正确,程序跑飞
一般的用户,刚开始调试的时分,编译好程序,就直接点击调试。但成果发现调试底子没有依照预期的进行。产生这种问题一个最常见的原因是程序底子没有正确下载到方针体系中去。
对SDRAM而言,上电后一般都是不能够运用的,需求进行相应的装备才能够运用。所以假如是在SDRAM里进行调试,请先对SDRAM进行装备,或许确认SDRAM现已初始化好了。假如是内部SRAM,一般来说,能够直接运用。所以,做一般的测验,最简略的方法是运用片内SRAM。
在调试的时分,最好是自己经过内存调查窗口判别一下,程序是否是下载到希望的地址去了,下载是否正确。避免呈现调试跑飞的问题。
3 – 软件断点和硬件断点的差异和数量约束
一切的ARM7/ARM9芯片,内部有2个断点单元。断点单元能够用于设置硬件断点或是软件断点。
先说说硬件断点和软件断点的差异。硬件断点是经过监测地址来触发断点的。所以,硬件断点能够设置在任何地方,不管是FLASH,ROM仍是RAM,只需给定地址就能够了。而软件断点是经过监测特定的指令来触发断点的。在某个地址设置软件断点的时分,仿真器会将这个地址的数据/指令替换成一个特别格局的指令。断点单元经过监测这个特别格局的指令来触发断点。我们需求碑文替换操作,所以软件断点只能设置在RAM晒干。假如断点单元设置成监测某个地址,那一个断点单元只能监测一个地址,所以只能设置2个硬件断点。假如断点单元设置成监测某个固定格局的指令,那一个断点单元能够支撑数量没有约束的软件断点。我们设置软件断点的时分只需求把要说着断点的方位的数据替换成被监测的固定格局的指令就能够了。这便是为什么咱们常常看到说支撑2个硬件断点和数目不限的软件断点。但这儿仍是要提示以下,假如2个断点单元都用于硬件断点,那用户就不能够设置软件断点了。
4 – 在FLASH内进行调试
在FLASH进行调试,本质上来说,和在SDRAM/SRAM里调试是相同的。差异是,FLASH是只读的,对FLASH进行写操作的时分,需求特别的指令。假如IDE支撑直接将程序烧写到FLASH进行调试,那调试就会和在RAM里差不多。假如IDE不支撑主动下载,能够先经过烧写软件酿制调试的程序烧写到FLASH晒干,然后在进行调试。在FLASH和RAM晒干进行调试的别的一个差异在与可运用的断点数量。我们FLASH是只读的,所以只能运用硬件断点,所以最多只能运用2个断点。许多时分,单步运转也需求一个断点来完成,所以,用户只能运用一个断点。清楚了这点,碰到提示说没有断点能够运用了,不能设置断点,或许不能单步运转的时分,就知道是怎么回事情了。
5 – 软件断点被掩盖
前面咱们说到,软件断点是经过替换指令来完成的。这就存在一个或许,设置好的软件断点被掩盖掉了。特别是自劳动程序,仿真器在劳动前在某个地址设置了一个软件断点。然后碑文拷操作,这样的成果是设置断点的方位的值我们自劳动而产生了改动,我们新的值并不是被监测的特别指令,所以这个断点就会失效。形成在这个方位程序不能中止的状况。这样的状况相对来说比较少,这儿仅仅提示一下,希望对碰到相似状况的朋友有协助。
6 – 反汇编调试
在调试的时分,一般看的都是源文件,汇编或C言语。假如调试的时分发现运转与希望的纷歧或是跑飞,能够看看反汇编,单不运转几步,然后经过调查寄存器和内存来判别每条指令的运转是否正确。