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.

TMS320C6678: EMIF16 Boot Failed

Part Number: TMS320C6678

Hello,

There are three c6678 on a board and I assembled two board.

Three DSP are successfully boot on  board #1 but on board #2 only two DSP's booting are successful.

I checked input voltage and clock for boot failed DSP on board #2 and found no abnormal state.

I wrote down my debug result on board #2 below:

1> I can connect and write down binary code to DSP by debugger when no boot mode. When no boot mode, I can connect all of three DSPs without error.

2> Then I changed boot mode to EMIF16 boot mode then power down.

3> After power on, one DSP's boot  is  failed. The CS signal of NOR flash is changed for a short time after power on, so I belived that DSP's boot mode is well set.

4> When EMIF16 boot mode, I can connect target to two DSPs which boot are successful without any error but I can not connect target to boot failed DSP. When I tried to connect to boot failed DSP by debugger, I faced error message - 'Error connecting to the target(Error - 1143 @ 0x0)' or ''Error connecting to the target(Error - 1144 @ 0x0)'

I need to know what difference there are between boot failed DSP and boot succeed DSP.

->  On no bootmode, I can connect target to all three DSPs by debugger.

-> On EMIF16 bootmode, I can connect target by debugger only two DSPs which are successfully boot.

  • I checked SYSCLKOUT of boot failed DSP. It was around 208MHz. Because desired core clock is 1.25GHz, I think at least internal PLL is OK.
  • Can you run the debug GEL file when DSP boot fails on one of the SOC and attach the log here:
    processors.wiki.ti.com/.../Keystone_Device_Architecture

    this log should report Program counter, device PLL state and if there is any boot error log reported. Is it possible to boot each DSP independent of the other on these boards. also, is there any pattern in the boot failure. does the same DSP always fail or any two out of the three are failing. If the first DSP to boot after power up always fails then the NOR flash device must not powered up by the time the first DSP comes out of reset. Have put a scope on the EMIF lines to see if it gets any EMIF traffic after it powers up ?


    Regards,
    Rahul
  • Rahul,

    1>
    The GEL file you meant is 'Shannon_SystemDebug_v0.4.gel'?
    I downloaded and checked BOOT related part and found some fields' address is different from c6678 datasheet. For example, the addr of BOOTCFG_BOOTPROGRESS in GEL file is (0x02620140u), but address (0x02620140u) at datasheet is reserved field.
    Addr of BOOTCFG_PWRSTATECTL in GEL file is also (0x02620140u) which is same to BOOTCFG_BOOTPROGRESS. At datasheet, addr of PWRSTATECTL is (0x02620150).'

    I need to check to which addr is correct and what BOOTPROGRESS field mean.

    2>
    As long as I tested, the same DSP always fail.
    I don't understand what you mean - "NOR flash device must not powered up by the time the first DSP comes out of reset".
    NOR flash on board is powered before DSP's reset signals are de-asserted.
    There are three NORs on board and each NOR is connected to each DSP independently.

    3>
    I faced two type of case when I tried to connet target. One case is 'Error connecting to the target', another is connecting success.
    Anyhow, when I faced 'Error connecting to the target', I tried a number of 'Reset-System Reset' on CCS menu, and saw DSP completed boot process. The trying numbers of 'System Reset' are not same, sometimes one sometimes two or three..
    Which state does DSP enter after system reset by CCS?

    4>
    When I succeed connecting to targte, I checked 'BOOT STATUS by 'Shannon_SystemDebug_v0.4.gel'.
    The values of BOOTPROGRESS, BOOTCFG_BOOTCOMPLETE and BOOTCFG_RESET_STAT are different from boot success DSP' values.

    First, BOOTPROGRESS is 0xD0400000(boot fail) and 0xD0000000(boot success)
    As I mentioned at 1>, BOOTPROGRESS address is reserved field according to datasheet so I am not sure if the value is worty of checking.

    BOOTCFG_RESET_STAT is 0x80000000 (boot fail) and 0x800000FE(boot success)
    When does not Cores received a local reset?

    The values BOOTCFG_BOOTCOMPLETE and BOOTCFG_RESET_STAT are varied at each boot failed case.
    I did not check BOOTPROGRESS value so don't know if BOOTPROGRESS value changed or not.


    I hope finding any clue to solve this problem.


    I pasted boot/reset status example at below:

    C66xx_16: GEL Output: *******************************************************************************************************
    C66xx_16: GEL Output: ********************************** C6678 BOOT STATUS ******************************************************
    C66xx_16: GEL Output: *******************************************************************************************************

    C66xx_16: GEL Output: BOOTPROGRESS[31:0] ---> 0xD0400000
    C66xx_16: GEL Output: BOOTCFG_BOOTCOMPLETE ---> 0x00000003

    C66xx_16: GEL Output: C6678 Core 0 ---> Boot process Completed
    C66xx_16: GEL Output: C6678 Core 1 ---> Boot process Completed
    C66xx_16: GEL Output: C6678 Core 2 ---> Boot in process. Not Complete
    C66xx_16: GEL Output: C6678 Core 3 ---> Boot in process. Not Complete
    C66xx_16: GEL Output: C6678 Core 4 ---> Boot in process. Not Complete
    C66xx_16: GEL Output: C6678 Core 5 ---> Boot in process. Not Complete
    C66xx_16: GEL Output: C6678 Core 6 ---> Boot in process. Not Complete
    C66xx_16: GEL Output: C6678 Core 7 ---> Boot in process. Not Complete
    C66xx_16: GEL Output: *******************************************************************************************************
    C66xx_16: GEL Output: ********************************** C6678 RESET STATUS ******************************************************
    C66xx_16: GEL Output: *******************************************************************************************************

    C66xx_16: GEL Output: BOOTCFG_RESET_STAT ---> 0x80000000

    C66xx_16: GEL Output: C6678 Global Reset ---> Device received a global reset
    C66xx_16: GEL Output: C6678 Core 0 Reset ---> Core 0 has not received a local reset
    C66xx_16: GEL Output: C6678 Core 1 Reset ---> Core 1 has not received a local reset
    C66xx_16: GEL Output: C6678 Core 2 Reset ---> Core 2 has not received a local reset
    C66xx_16: GEL Output: C6678 Core 3 Reset ---> Core 3 has not received a local reset
    C66xx_16: GEL Output: C6678 Core 4 Reset ---> Core 4 has not received a local reset
    C66xx_16: GEL Output: C6678 Core 5 Reset ---> Core 5 has not received a local reset
    C66xx_16: GEL Output: C6678 Core 6 Reset ---> Core 6 has not received a local reset
    C66xx_16: GEL Output: C6678 Core 7 Reset ---> Core 7 has not received a local reset