This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

AM335X 第二次debug出错

Other Parts Discussed in Thread: AM3354

各位好:现在调试AM3354,用CCS6.1,第一次点击debug时没有问题,终止debug;然后重新点击debug,会出错,报错内容如下:

CortxA8: Trouble Writing Memory Block at 0x4c0000e4 on Page 0 of Length 0x4: (Error -1065 @ 0x3D5A) Unable to access device memory. Verify that the memory address is in valid memory. If error persists, confirm configuration, power-cycle board, and/or try more reliable JTAG settings (e.g. lower TCLK). (Emulation package 5.1.641.0)
CortxA8: GEL: Error while executing OnTargetConnect(): Target failed to write 0x4C0000E4
 at *((unsigned int *) (0x4C000000+0x0E4))=(unsigned int) 0x06 [nm050.gel:668]
 at DDR3_EMIF_Config() [nm050.gel:760]
 at AM3354_Initialization() [nm050.gel:744]
 at OnTargetConnect()
CortxA8: File Loader: Verification failed: Values at address 0x0000000080000000 do not match Please verify target memory and memory map.
CortxA8: GEL: File: C:\ti\AM335X_StarterWare_02_00_00_07\binary\armv7a\cgt_ccs\am335x\evmskAM335x\accelerometer\i2cAccelerometer.out: a data verification error occurred, file load failed.

开始是用的BBB做的样本画原理图,然后对DDR进行了更改,能跑起来,但是总报这种错误。DDR3的型号IS43TR85120A-125KBLI。

  • 请问有试过断电后重新连接然后debug么?

  • 周工您好:

                      重新上电再点击debug是没问题的,但是关闭debug之后再次点击debug就会出现上述错误。这个是DDR没有优化成功吗?

  • 周工:

             还有就是跑简单的程序没有问题(比如点灯),但是如果复杂点的就不行了,比如点亮OLED屏的同时让UART1输出字符。我觉得还有可能是我的程序跑飞了?

  • 有可能你的程序跑飞后,芯片运行在异常状态,我之前也碰到过这种问题,必须要断电重启才能重新debug。

    你可以尝试下用CCS的reset按钮执行下,然后重新执行gel文件。

  • 周工:

              试了一下,应该就是跑飞了,CCS复位后再点击debug就没问题了。

              这么久才回复是因为还有一个问题问您,咱们demo板都是UART0作为默认打印口的,我现在的板子是UART1,但是调试了将近一周,也没调试出来,连乱码都没打印。下面是我改的主要的部分,就是PinMuxSetup和ModuleClkConfig(都在UART.C中)

    void UARTPinMuxSetup(unsigned int instanceNum)
    {
        switch(instanceNum)
        {
            case 0:
            {
                /* RXD */
                HWREG(SOC_CONTROL_REGS + CONTROL_CONF_UART_RXD(1)) =
                    (CONTROL_CONF_UART0_RXD_CONF_UART0_RXD_PUTYPESEL |
                     CONTROL_CONF_UART0_RXD_CONF_UART0_RXD_RXACTIVE);
    //44e10000+980为RX
                /* TXD */
                HWREG(SOC_CONTROL_REGS + CONTROL_CONF_UART_TXD(1)) =
                    CONTROL_CONF_UART0_TXD_CONF_UART0_TXD_PUTYPESEL;
    //44e10000+984为TX
            }
            break;

            case 1:
            case 2:
            case 3:
            case 4:
            case 5:
            break;

            default:
            break;
        }

    还有时钟

    void UART1ModuleClkConfig(void)
    {
        /* Writing to MODULEMODE field of CM_WKUP_UART1_CLKCTRL register. */
        HWREG(SOC_PRCM_REGS + CM_PER_UART1_CLKCTRL) |=
          CM_PER_UART1_CLKCTRL_MODULEMODE_ENABLE;

        /* Waiting for MODULEMODE field to reflect the written value. */
        while(CM_PER_UART1_CLKCTRL_MODULEMODE_ENABLE !=
              (HWREG(SOC_PRCM_REGS + CM_PER_UART1_CLKCTRL) &
               CM_PER_UART1_CLKCTRL_MODULEMODE));

        /*
        ** Waiting for CLKACTIVITY_UART1_GFCLK field in CM_WKUP_CLKSTCTRL
        ** register to attain desired value.
        */
        while(CM_PER_L4LS_CLKSTCTRL_CLKACTIVITY_UART_GFCLK !=
              (HWREG(SOC_PRCM_REGS + CM_PER_L4LS_CLKSTCTRL) &
             CM_PER_L4LS_CLKSTCTRL_CLKACTIVITY_UART_GFCLK));
        /*
        ** Waiting for IDLEST field in CM_WKUP_UART1_CLKCTRL register to attain
        ** desired value.
        */
        while((CM_PER_UART1_CLKCTRL_IDLEST_FUNC <<
          CM_PER_UART1_CLKCTRL_IDLEST_SHIFT) !=
              (HWREG(SOC_PRCM_REGS + CM_PER_UART1_CLKCTRL) &
               CM_PER_UART1_CLKCTRL_IDLEST));
    }

     

    也尝试过改其他地方,但是没效果。能不能指导一下,是不是还有其他地方需要更改?

    问题如下:

    1、UART0和UART1是不是就是主要是时钟有差异;

    2、CCS6.1中找函数的定义处很难找,找到EXTERN处就断了,怎么能快速找到变量和函数在何处定义?每次都是在根目录下搜关键字,比较痛苦。

    3、除了自带的文档之外,您手里还有CCS6.1使用的手册之类的吗?

    多谢!

  • 你用的是starterware吧,一般看代码我都使用source insight.

    你有看过这个关于配置UART的文档么:http://processors.wiki.ti.com/index.php/StarterWare_UART/IrDA/CIR

  • 好的周工,多谢回复,我先按您说的来调试下,如果有问题可能还会麻烦您。谢谢!

  • 关于CCS,请参考 http://processors.wiki.ti.com/index.php/Category:CCS

  • 好的,谢谢!