Keil ULINK2 调试进不了Main函数的一种解决方案。

    最近在写一个新的项目,由以前的老项目代码Merge过来,在这个基础上修改。这是这个问题的引子。。。

    刚开始进展很顺利,编译没有问题,download到目标板上运行也没有问题。似乎一切正常,在我测试软件过程中发现程序上逻辑需要做一些微调,很顺利成章的链接ULINK2进行Debug看看程序运行的细节。。。

    问题便出来了,链接上Ulink2 build 没有问题,download没有问题,strat debug 。。。却发现程序不是从Main函数开始执的。。。

    在一个××.C的文件执行了一个很正常的初始化函数,便跳进了  71x_init.s 文件

    卡在;* Macro Name     : PERIPHERAL_INIT 中,很奇怪的现象。。。不管怎么reset,总是执行这个。。。

NextInst
  NOP  ; Wait for OSC stabilization
  NOP
  NOP
  NOP
  NOP
  NOP
  NOP
  NOP
  NOP

        MSR     CPSR_c, #Mode_ABT:OR:F_Bit:OR:I_Bit
        LDR     SP, =ABT_Stack

        MSR     CPSR_c, #Mode_UNDEF:OR:F_Bit:OR:I_Bit
        LDR     SP,= UNDEF_Stack

        MSR     CPSR_c, #Mode_SVC:OR:F_Bit:OR:I_Bit
        LDR     SP, =RAM_Limit
; Uncomment next ligne if you need to reset all device pripherals
        PERIPHERAL_INIT           ; Reset all device peripherals

; Uncomment next ligne if you need to enable the EMI Bank

        EMI_INIT                  ; Initialize EIM Bank 1

;Uncomment next ligne if you need to initialize the EIC
        EIC_INIT                  ; Initialize EIC

 

        这让人很汗颜。。。

木有办法出来问题,只能去分析解决:

      Step1,compare... 比较原工程与现在工程直接的区别,看在初始化方面是否存在问题。。。

                     结果是否定了,两个工程初始化相似没有什么问题。

      Step2,再观察现象。。。

                    检测设置,是否是设置的问题,原以为是没有勾选 Run to main() 选项。

      Step3,Run to main() 选项 已经勾选,但是仍然存在这个问题。再次检查设置项发现Use:项中Debugger选择有问题,选的是ULINK pro...

                    我实际使用的是ULINK2,难道这就是传说中的乌龙事件。。。。

                    立马修正,更正结果如下:

                    

 

       Step4,build, debug Ok,能够顺利进入main()函数。

 

教训:很多故障并不是技术本身造成的,细枝末节的东西也需要注意。。。工程师是马虎不得的。。。

你可能感兴趣的:(调式问题)