AlexWeng 发表于 2018-5-31 00:12:43

单路USB采用第二路速度慢或死机

关键字:单路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 solvethe 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
......
}

页: [1]
查看完整版本: 单路USB采用第二路速度慢或死机