HI All
we are use DM3730, use MICRON mcp 4Gb + 4Gb, We produce 200 board,70% of the board is good, 30% of the board is bad,The following is a description of the problem:
(1).Open UMS function of Android OS;
(2).Copy a big size file(1G) from PC to SD card via OTG;
(3).Close UMS function;
(4).clear DM3730 memory cache;
(5).Open UMS again;
(6).Use HEX compare tools "Beyond Compare 3" to compare the data read from SD card to PC's source file, if they 100% the same, we define it OK, otherwise, it's failed.
(7). Bad board operation android application appear in the kernel crash, print kmem_freepages, drain_array, Good board operation android application is ok.
The following is the method we tested:
(1) Reduce core dpll frequency,From 200MHZ to 166MHZ,some board is ok,some board is failure,Then from 166MHZ to 133MHZ,All of the board are successfully(bad board is ok).
(2) We modified the omap-hsmmc.c drive to DMA mode to CPU, then the test is successful.
(3) We MPU frequency is fixed at 1G->800MHZ->600MHZ test, the problem also exists.
(4) We replaced the board of the MCP, to be tested again and found the problem followed by MCP.
For the random system crash->Therefore, According to our analysis, when the DMA read and write large amounts of data, LPDDR running at full speed, but the CPU to read and write large amounts of data, LPDDR running at half-speed. please help me,thanks.