| 关键字:单路USB  第二路USB  死机 适用机型:MSD318/339(其他芯片亦类似)
 有时硬件上为了布线方便或其他原因,就算只需要一路USB,也会选择芯片第二路USB。但由于代码的缺陷,这种情况下,用户从其他讯源切到USB会出现速度很慢或干脆死机重启的问题。之所以出现这种问题是由于USB需要一定的内存(一般是4K BYTE)来进行初始化。如果没有的话,轻则切到USB速度慢,重则会触发看门狗导致芯片重启。解决办法为参照第一路USB,添加如下代码:
 1.在文件sysinfo2.h中添加如下红色代码:
 #define USB_BUFFER_START_ADR_4K_ALIGN       MemAlign(PROGRAM_RATING_START_ADR+PROGRAM_RATING_LEN, 0x1000)
 #define USB_BUFFER_START_ADR_4K_ALIGN_LEN   0x1000
 //////////added to solve the issue switching to USB from other inputsources the TV will restart.
 #define USB2_BUFFER_START_ADR_4K_ALIGN       MemAlign(USB_BUFFER_START_ADR_4K_ALIGN+USB_BUFFER_START_ADR_4K_ALIGN_LEN, 0x1000)
 #define USB2_BUFFER_START_ADR_4K_ALIGN_LEN   0x1000
 //file system memory
 #define FILE_SYSTEM_POOL_ADR        MemAlign(USB2_BUFFER_START_ADR_4K_ALIGN + USB2_BUFFER_START_ADR_4K_ALIGN_LEN, 0x1000)//added
 to solve  the issue switching to USB from other inputsources the TV will restart.
 // #define FILE_SYSTEM_POOL_ADR        MemAlign(USB_BUFFER_START_ADR_4K_ALIGN + USB_BUFFER_START_ADR_4K_ALIGN_LEN, 0x1000)
 2.在文件msAPI_DrvInit.c中添加如下红色代码:
 void msAPI_DrvInit(void)
 {
 ......
 #if (ENABLE_USB)
 MDrv_USB_Init(USB_BUFFER_START_ADR_4K_ALIGN);
 #endif
 #if (ENABLE_USB_2)//added to solve the issue switching to USB from other inputsources the TV will restart.
 MDrv_USB_Init_Port2(USB2_BUFFER_START_ADR_4K_ALIGN);
 #endif
 ......
 }
 
 
 |