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.

C6745 rev 2.1 McASP fails, but C6745 rev 2.0 works fine on exact same board

Hi

I've got a nasty one here.

With the exact same board and code (same binary actually), we have a C6745 rev 2.0 that works fine and a C6745 rev 2.1 that errors out with 

Assertion failed, (0 != timeout), file Mcasp.c, line 3777

soon after startup.

We have 5 identical custom boards using the C6745 for a multi-channel audio application. We're using multi-channel codecs and communicating with the DSP on McASP 1. This is our 2nd iteration of this board design, so we are sure it should work. The first board was populated separately as a test. When we tested it and were satisfied that it worked fine, we ordered more parts and had the rest populated.

Because it was a different order, the first board was populated with a C6745 rev 2.0. On the chip is printed:

TMS320
C6745BPTP3
YF-07AK4ZW  G4
538 PTP

This DSP works fine.

The later boards happened to get C6745 rev 2.1s. On the chip is printed:

TMS320
C6745CPTP3
YF-21A1YZW  G4
21 538 PTP

After about 30 sec of not transmitting any audio and showing 0% CPU usage after setting up their network ports, these DSPs error out  with "Assertion failed, (0 != timeout), file Mcasp.c, line 3777" and the McASPs never work. No audio is ever transmitted. If i remove that assertion code in mcasp.c, i eventually get another ("Assertion failed, (0 != timeout), file Mcasp.c, line 3892"). This happens on all boards with the rev 2.1 C6745.

We're using PSP Drivers 1.30.01.  Our board design is based off of the OMAP L-137 EVM from Spectrum Digital.

I've tried compiling with CCSv3.3 using older the code gen tools and DSP/BIOS with which we began development, and CCv4 using up to date code gen tools, etc, but both fail on the rev 2.1 chips and run fine on rev 2.0. The only difference i could find in the silicon errata that should affect us is

2.1.3 Clock Input Buffers Updated for Noise Immunity
For silicon revision 2.1, the I/O buffers for all McASP clock inputs have been improved to provide more
robust noise immunity than in previous silicon revisions. Timing specifications are not affected as a result.
In particular, the specification for maximum input transition time remains the same; the improvements
simply provide more margin to the existing specification.

We are not using USB on this board, which is what the other changes in rev 2.1 seem to be about.

It is still possible that some other component on the newer populated boards is malfunctioning, but we have yet to find one.

Any thoughts? What can we do? Have the McASPs changed in the processor rev?

Thanks,
Arvid

Edit: here are the printouts from the C6747 Diagnostic GEL file. How do i interpret the differences between these? Obviously the bootloader is different so i need to start using AISgen for d800k005, but the problem happens during emulation, not just when self booting from flash.

	Rev 2.0 before load:
	
	
C674X_0: GEL Output: 
---------------------------------------------
C674X_0: GEL Output: |             Device Information            |
C674X_0: GEL Output: ---------------------------------------------
C674X_0: GEL Output: DEV_INFO_00 = 0x9B7DF02F
C674X_0: GEL Output: DEV_INFO_01 = 0x00000000
C674X_0: GEL Output: DEV_INFO_02 = 0x0000FB75
C674X_0: GEL Output: DEV_INFO_03 = 0x00000002
C674X_0: GEL Output: DEV_INFO_04 = 0x00000000
C674X_0: GEL Output: DEV_INFO_05 = 0x000003E0
C674X_0: GEL Output: DEV_INFO_06 = 0x00000080
C674X_0: GEL Output: DEV_INFO_07-DEV_INFO_08-DEV_INFO_09-DEV_INFO_10-DEV_INFO_11-DEV_INFO_12 = 8-0-151387-7-10-33
C674X_0: GEL Output: DEV_INFO_13,DEV_INFO_14,DEV_INFO_15,DEV_INFO_16 = 0,0,0,9177
C674X_0: GEL Output: -----
C674X_0: GEL Output: DEV_INFO_17 = 0x00030003
C674X_0: GEL Output: DEV_INFO_18 = 0x00000000
C674X_0: GEL Output: DEV_INFO_19 =C674X_0: GEL Output: 0C674X_0: GEL Output: 0C674X_0: GEL Output: 0C674X_0: GEL Output: 0C674X_0: GEL Output: 0C674X_0: GEL Output: 
C674X_0: GEL Output: -----
C674X_0: GEL Output: DEV_INFO_20 = 0x30303864
C674X_0: GEL Output: DEV_INFO_21 = 0x3330306B
C674X_0: GEL Output: DEV_INFO_22 = 0x00000000
C674X_0: GEL Output: DEV_INFO_23 = 0x00000000
C674X_0: GEL Output: -----
C674X_0: GEL Output: DEV_INFO_24 = 0x0702100A
C674X_0: GEL Output: DEV_INFO_25 = 0x08024F5B
C674X_0: GEL Output: DEV_INFO_06 = 0x00000080
C674X_0: GEL Output: DEV_INFO_26 = 0x47B20000
C674X_0: GEL Output: 

C674X_0: GEL Output: ---------------------------------------------
C674X_0: GEL Output: |               BOOTROM Info                |
C674X_0: GEL Output: ---------------------------------------------
C674X_0: GEL Output: ROM ID: d800k003 
C674X_0: GEL Output: Silicon Revision 2.0
C674X_0: GEL Output: Boot Mode: SPI0 Flash
C674X_0: GEL Output: 
ROM Status Code: 0x000000F5 
Description:C674X_0: GEL Output: Error code not recognized
C674X_0: GEL Output: 
Program Counter (PC) = 0xC1FB22C4
C674X_0: GEL Output: 
C674X_0: GEL Output: ---------------------------------------------
C674X_0: GEL Output: |              Clock Information             |
C674X_0: GEL Output: ---------------------------------------------
C674X_0: GEL Output: 
C674X_0: GEL Output: PLLs configured to utilize crystal.
C674X_0: GEL Output: ASYNC3 = PLL0_SYSCLK2
C674X_0: GEL Output: 
C674X_0: GEL Output: NOTE:  All clock frequencies in following PLL sections are based
C674X_0: GEL Output: off OSCIN = 24 MHz.  If that value does not match your hardware
C674X_0: GEL Output: you should change the #define in the top of the gel file, save it,
C674X_0: GEL Output: and then reload.
C674X_0: GEL Output: 
C674X_0: GEL Output: ---------------------------------------------
C674X_0: GEL Output: |              PLL0 Information             |
C674X_0: GEL Output: ---------------------------------------------
C674X_0: GEL Output: 
C674X_0: GEL Output: PLL0_SYSCLK1 = 300 MHz
C674X_0: GEL Output: PLL0_SYSCLK2 = 150 MHz
C674X_0: GEL Output: PLL0_SYSCLK3 = 300 MHz
C674X_0: GEL Output: PLL0_SYSCLK4 = 75 MHz
C674X_0: GEL Output: PLL0_SYSCLK5 = 50 MHz
C674X_0: GEL Output: PLL0_SYSCLK6 = 300 MHz
C674X_0: GEL Output: PLL0_SYSCLK7 = 37 MHz
C674X_0: GEL Output: 
C674X_0: GEL Output: ---------------------------------------------
C674X_0: GEL Output: |              PSC0 Information             |
C674X_0: GEL Output: ---------------------------------------------
C674X_0: GEL Output: 
C674X_0: GEL Output: State Decoder:
C674X_0: GEL Output:  0 = SwRstDisable (reset asserted, clock off)
C674X_0: GEL Output:  1 = SyncReset (reset assered, clock on)
C674X_0: GEL Output:  2 = Disable (reset de-asserted, clock off)
C674X_0: GEL Output:  3 = Enable (reset de-asserted, clock on)
C674X_0: GEL Output: >3 = Transition in progress
C674X_0: GEL Output: 
C674X_0: GEL Output: Module 0:	EDMA3CC (0)        STATE = 3
C674X_0: GEL Output: Module 1:	EDMA3 TC0          STATE = 3
C674X_0: GEL Output: Module 2:	EDMA3 TC1          STATE = 3
C674X_0: GEL Output: Module 3:	EMIFA (BR7)        STATE = 3
C674X_0: GEL Output: Module 4:	SPI 0              STATE = 3
C674X_0: GEL Output: Module 5:	MMC/SD 0           STATE = 3
C674X_0: GEL Output: Module 6:	AINTC              STATE = 3
C674X_0: GEL Output: Module 7:	ARM RAM/ROM        STATE = 3
C674X_0: GEL Output: Module 9:	UART 0             STATE = 3
C674X_0: GEL Output: Module 10:	SCR 0 (BR0/1/2/8)  STATE = 3
C674X_0: GEL Output: Module 11:	SCR 1 (BR4)        STATE = 3
C674X_0: GEL Output: Module 12:	SCR 2 (BR3/5/6)    STATE = 3
C674X_0: GEL Output: Module 13:	PRUSS              STATE = 3
C674X_0: GEL Output: Module 14:	ARM                STATE = 0
C674X_0: GEL Output: Module 15:	DSP                STATE = 3
C674X_0: GEL Output: 
C674X_0: GEL Output: ---------------------------------------------
C674X_0: GEL Output: |              PSC1 Information             |
C674X_0: GEL Output: ---------------------------------------------
C674X_0: GEL Output: 
C674X_0: GEL Output: State Decoder:
C674X_0: GEL Output:  0 = SwRstDisable (reset asserted, clock off)
C674X_0: GEL Output:  1 = SyncReset (reset assered, clock on)
C674X_0: GEL Output:  2 = Disable (reset de-asserted, clock off)
C674X_0: GEL Output:  3 = Enable (reset de-asserted, clock on)
C674X_0: GEL Output: >3 = Transition in progress
C674X_0: GEL Output: 
C674X_0: GEL Output: Module 1:	USB0 (2.0)         STATE = 3
C674X_0: GEL Output: Module 2:	USB1 (1.1)         STATE = 3
C674X_0: GEL Output: Module 3:	GPIO               STATE = 3
C674X_0: GEL Output: Module 4:	UHPI               STATE = 3
C674X_0: GEL Output: Module 5:	EMAC               STATE = 3
C674X_0: GEL Output: Module 6:	EMIFB (BR20)       STATE = 3
C674X_0: GEL Output: Module 7:	MCASP0 + FIFO      STATE = 3
C674X_0: GEL Output: Module 8:	MCASP1 + FIFO      STATE = 3
C674X_0: GEL Output: Module 9:	MCASP2 + FIFO      STATE = 3
C674X_0: GEL Output: Module 10:	SPI 1              STATE = 3
C674X_0: GEL Output: Module 11:	I2C 1              STATE = 3
C674X_0: GEL Output: Module 12:	UART 1             STATE = 3
C674X_0: GEL Output: Module 13:	UART 2             STATE = 3
C674X_0: GEL Output: Module 16:	LCDC               STATE = 3
C674X_0: GEL Output: Module 17:	eHRPWM (all)       STATE = 3
C674X_0: GEL Output: Module 20:	eCAP (all)         STATE = 3
C674X_0: GEL Output: Module 21:	eQEP 0/1           STATE = 3
C674X_0: GEL Output: Module 24:	SCR8 (Br15)        STATE = 3
C674X_0: GEL Output: Module 25:	SCR7 (Br12)        STATE = 3
C674X_0: GEL Output: Module 26:	SCR12 (Br18)       STATE = 3
C674X_0: GEL Output: Module 31:	L3 RAM (Br13)      STATE = 3

	Rev 2.1 before load:


C674X_0: GEL Output: 
---------------------------------------------
C674X_0: GEL Output: |             Device Information            |
C674X_0: GEL Output: ---------------------------------------------
C674X_0: GEL Output: DEV_INFO_00 = 0x9B7DF02F
C674X_0: GEL Output: DEV_INFO_01 = 0x00000000
C674X_0: GEL Output: DEV_INFO_02 = 0x0000F375
C674X_0: GEL Output: DEV_INFO_03 = 0x00000003
C674X_0: GEL Output: DEV_INFO_04 = 0x00000000
C674X_0: GEL Output: DEV_INFO_05 = 0x000003E0
C674X_0: GEL Output: DEV_INFO_06 = 0x00000080
C674X_0: GEL Output: DEV_INFO_07-DEV_INFO_08-DEV_INFO_09-DEV_INFO_10-DEV_INFO_11-DEV_INFO_12 = 8-0-154599-22-15-30
C674X_0: GEL Output: DEV_INFO_13,DEV_INFO_14,DEV_INFO_15,DEV_INFO_16 = 1,0,0,11518
C674X_0: GEL Output: -----
C674X_0: GEL Output: DEV_INFO_17 = 0x00030003
C674X_0: GEL Output: DEV_INFO_18 = 0x00000000
C674X_0: GEL Output: DEV_INFO_19 =C674X_0: GEL Output: 0C674X_0: GEL Output: 0C674X_0: GEL Output: 0C674X_0: GEL Output: 0C674X_0: GEL Output: 0C674X_0: GEL Output: 
C674X_0: GEL Output: -----
C674X_0: GEL Output: DEV_INFO_20 = 0x30303864
C674X_0: GEL Output: DEV_INFO_21 = 0x3530306B
C674X_0: GEL Output: DEV_INFO_22 = 0x00000000
C674X_0: GEL Output: DEV_INFO_23 = 0x00000000
C674X_0: GEL Output: -----
C674X_0: GEL Output: DEV_INFO_24 = 0x1601E00F
C674X_0: GEL Output: DEV_INFO_25 = 0x08025BE7
C674X_0: GEL Output: DEV_INFO_06 = 0x00000080
C674X_0: GEL Output: DEV_INFO_26 = 0x59FC0001
C674X_0: GEL Output: 

C674X_0: GEL Output: ---------------------------------------------
C674X_0: GEL Output: |               BOOTROM Info                |
C674X_0: GEL Output: ---------------------------------------------
C674X_0: GEL Output: ROM ID: d800k005 
C674X_0: GEL Output: Silicon Revision UNKNOWN
C674X_0: GEL Output: Boot Mode: SPI0 Flash
C674X_0: GEL Output: 
ROM Status Code: 0x00000000 
Description:C674X_0: GEL Output: No error
C674X_0: GEL Output: 
Program Counter (PC) = 0xC1FB2CD4
C674X_0: GEL Output: 
C674X_0: GEL Output: ---------------------------------------------
C674X_0: GEL Output: |              Clock Information             |
C674X_0: GEL Output: ---------------------------------------------
C674X_0: GEL Output: 
C674X_0: GEL Output: PLLs configured to utilize crystal.
C674X_0: GEL Output: ASYNC3 = PLL0_SYSCLK2
C674X_0: GEL Output: 
C674X_0: GEL Output: NOTE:  All clock frequencies in following PLL sections are based
C674X_0: GEL Output: off OSCIN = 24 MHz.  If that value does not match your hardware
C674X_0: GEL Output: you should change the #define in the top of the gel file, save it,
C674X_0: GEL Output: and then reload.
C674X_0: GEL Output: 
C674X_0: GEL Output: ---------------------------------------------
C674X_0: GEL Output: |              PLL0 Information             |
C674X_0: GEL Output: ---------------------------------------------
C674X_0: GEL Output: 
C674X_0: GEL Output: PLL0_SYSCLK1 = 300 MHz
C674X_0: GEL Output: PLL0_SYSCLK2 = 150 MHz
C674X_0: GEL Output: PLL0_SYSCLK3 = 300 MHz
C674X_0: GEL Output: PLL0_SYSCLK4 = 75 MHz
C674X_0: GEL Output: PLL0_SYSCLK5 = 50 MHz
C674X_0: GEL Output: PLL0_SYSCLK6 = 300 MHz
C674X_0: GEL Output: PLL0_SYSCLK7 = 37 MHz
C674X_0: GEL Output: 
C674X_0: GEL Output: ---------------------------------------------
C674X_0: GEL Output: |              PSC0 Information             |
C674X_0: GEL Output: ---------------------------------------------
C674X_0: GEL Output: 
C674X_0: GEL Output: State Decoder:
C674X_0: GEL Output:  0 = SwRstDisable (reset asserted, clock off)
C674X_0: GEL Output:  1 = SyncReset (reset assered, clock on)
C674X_0: GEL Output:  2 = Disable (reset de-asserted, clock off)
C674X_0: GEL Output:  3 = Enable (reset de-asserted, clock on)
C674X_0: GEL Output: >3 = Transition in progress
C674X_0: GEL Output: 
C674X_0: GEL Output: Module 0:	EDMA3CC (0)        STATE = 3
C674X_0: GEL Output: Module 1:	EDMA3 TC0          STATE = 3
C674X_0: GEL Output: Module 2:	EDMA3 TC1          STATE = 3
C674X_0: GEL Output: Module 3:	EMIFA (BR7)        STATE = 3
C674X_0: GEL Output: Module 4:	SPI 0              STATE = 3
C674X_0: GEL Output: Module 5:	MMC/SD 0           STATE = 3
C674X_0: GEL Output: Module 6:	AINTC              STATE = 3
C674X_0: GEL Output: Module 7:	ARM RAM/ROM        STATE = 3
C674X_0: GEL Output: Module 9:	UART 0             STATE = 3
C674X_0: GEL Output: Module 10:	SCR 0 (BR0/1/2/8)  STATE = 3
C674X_0: GEL Output: Module 11:	SCR 1 (BR4)        STATE = 3
C674X_0: GEL Output: Module 12:	SCR 2 (BR3/5/6)    STATE = 3
C674X_0: GEL Output: Module 13:	PRUSS              STATE = 3
C674X_0: GEL Output: Module 14:	ARM                STATE = 0
C674X_0: GEL Output: Module 15:	DSP                STATE = 3
C674X_0: GEL Output: 
C674X_0: GEL Output: ---------------------------------------------
C674X_0: GEL Output: |              PSC1 Information             |
C674X_0: GEL Output: ---------------------------------------------
C674X_0: GEL Output: 
C674X_0: GEL Output: State Decoder:
C674X_0: GEL Output:  0 = SwRstDisable (reset asserted, clock off)
C674X_0: GEL Output:  1 = SyncReset (reset assered, clock on)
C674X_0: GEL Output:  2 = Disable (reset de-asserted, clock off)
C674X_0: GEL Output:  3 = Enable (reset de-asserted, clock on)
C674X_0: GEL Output: >3 = Transition in progress
C674X_0: GEL Output: 
C674X_0: GEL Output: Module 1:	USB0 (2.0)         STATE = 3
C674X_0: GEL Output: Module 2:	USB1 (1.1)         STATE = 3
C674X_0: GEL Output: Module 3:	GPIO               STATE = 3
C674X_0: GEL Output: Module 4:	UHPI               STATE = 3
C674X_0: GEL Output: Module 5:	EMAC               STATE = 3
C674X_0: GEL Output: Module 6:	EMIFB (BR20)       STATE = 3
C674X_0: GEL Output: Module 7:	MCASP0 + FIFO      STATE = 3
C674X_0: GEL Output: Module 8:	MCASP1 + FIFO      STATE = 3
C674X_0: GEL Output: Module 9:	MCASP2 + FIFO      STATE = 3
C674X_0: GEL Output: Module 10:	SPI 1              STATE = 3
C674X_0: GEL Output: Module 11:	I2C 1              STATE = 3
C674X_0: GEL Output: Module 12:	UART 1             STATE = 3
C674X_0: GEL Output: Module 13:	UART 2             STATE = 3
C674X_0: GEL Output: Module 16:	LCDC               STATE = 3
C674X_0: GEL Output: Module 17:	eHRPWM (all)       STATE = 3
C674X_0: GEL Output: Module 20:	eCAP (all)         STATE = 3
C674X_0: GEL Output: Module 21:	eQEP 0/1           STATE = 3
C674X_0: GEL Output: Module 24:	SCR8 (Br15)        STATE = 3
C674X_0: GEL Output: Module 25:	SCR7 (Br12)        STATE = 3
C674X_0: GEL Output: Module 26:	SCR12 (Br18)       STATE = 3
C674X_0: GEL Output: Module 31:	L3 RAM (Br13)      STATE = 3





	after load: no difference except program counter

	after run: only differences:

ROM Status Code: 0x000000FF 
Description:C674X_0: GEL Output: Error code not recognized
No change after assertion except pgm counter.

  • Hi, I am not sure what's going wrong in the system.  But I can comment on the 2.0->2.1 change.

    McASP IP was definitely NOT changed.  Errata item 2.1.3, which you mention above, refers to an improvement made at the I/O buffer level, i.e. outside the McASP IP.  We've had a number of audio customers transition from 2.0 to 2.1 with no issue/no change to McASP code; they are in full production now with 2.1.

    The only other thing I can think of: the ROM on 2.1 was updated to address a boot issue with ARM and DSP+ARM versions.  If you're 6745, you shouldn't see any difference.  The only thing I can think of would be if you have code that at some point looks at the ROM rev code and complains if it doesn't match what you were expecting.  But it sounds like you get past the point where that kind of check would have been performed.

  • Thanks.

    Turned out it was not a problem with the DSP. Our board somehow got 33 kOhm resistor packs populated on the board between the Codec clock outs and the DSP instead of 33 Ohm ones! The clock signals to the DSP were greatly attenuated. Replacing the resistors with the proper value fixed the problem and we now seem to be running fine.

    Sorry to cry wolf :)