Dear all,
I use the DM365 to do the low temperature testing and base on the EUCDK's software. I will encounter the frame stop problem. Check the silicon errata to know this is the silicon bug. Below is the copy/paste from errata.
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Advisory 1.2.5 USB Communication Stops During Temperature Swing
Revision(s) Affected: 1.2 and earlier
Details: The USB PHY internal PLL can drift significantly over large transitions in temperature, especially when the Tc temperature is outside the 0c to 65c range. The observed failure is that the PHY is no longer able to communicate with the MUSB controller causing all USB data transfer to stop.
Workaround: When the issue happens, you can recover from it by resetting the USB PHY. This will force the USB PHY to reinitialize and re-calibrate its PLL.
The USB PHY can be reset as shown below:
#define USB_PHY_CTRL *((volatile unsigned int *)0x01C40034)
#define USBPHY_PHYPDWN 0x1
Void phy_reset(void)
{
/* Power down the USB PHY */
USB_PHY_CTRL |= USBPHY_PHYPDWN;
/* Wait a little */
mdelay(1);
/* Power up the USB PHY */
USB_PHY_CTRL &= ~USBPHY_PHYPDWN;
}
For additional information, see the TMS320DM36x DMSoC ARM Subsystem Reference Guide (literature number SPRUFG5) Section 9.12.14 USB PHY Control
(USB_PHY_CTRL) Register.
In order to invoke the recovery mechanism (i.e. resetting the USB PHY) we need to figure out when the issue is present. One way to implement this is to look for the
absence of MUSB interrupts over a 2 to 5 seconds interval. This can be done from user space by monitoring this value: [cat /proc/interrupts |grep musb_hdrc | awk '{print $2}'].
When this counter does not changes for a 2 to 5 seconds period you can assume the condition is present and issue the PHY reset mechanism (described above).
18 TMS320DM365 Digital Media System-on-Chip (DMSoC)—Silicon Revision 1.1 SPRZ294E–March 2009–Revised July 2011
and 1.2 Submit Documentation Feedback
Copyright © 2009–2011, Texas Instruments Incorporated
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
My question is when I try to use the below command to monitor the value. But the counter always does not be changed. So, I can’t use the counter to check if the issue is presented. Can anyone help me to give some hints? Thanks in advance.
[cat /proc/interrupts |grep musb_hdrc | awk '{print $2}']
B.R.
OC