We’re developing an application under DM3730 Torpedo Module with the Linux3.0 kernel that reads data from a USB based board (class ACM) at a rate of200.000 bytes/second. We've observed that a 'kworker' thread consumes manyCPU and we are looking which are the possibilities to optimize the code. Oneof the things we want to improve is communication process, so we’d like toask you some questions: - Do you know if linux use DMA to receive/send data from/to a USB device? Ifso how can we activate it? - The memory reserved for DMA buffers could be increased using a linuxparameter?- Any other suggestion to reduce the consume of CPU? Could be possible tomake DSP to carry directly this task? Could you send us some information(some doc, example project, DSP driver, etc… ) that can help us?Thank you and best regards
DM3730 hsusb0 does have DMA and same is available at drivers/usb/musb/musbhsdma.c. You should enable this in kernel config.
If my reply answers your question then please click on the green button "Verify Answer"
With hsusb0, are you referring to ISP1760? How I should enable? the current configuration is:
CONFIG_NEED_DMA_MAP_STATE=yCONFIG_HAVE_DMA_API_DEBUG=yCONFIG_HAVE_GENERIC_DMA_COHERENT=yCONFIG_ARM_DMA_MEM_BUFFERABLE=yCONFIG_ZONE_DMA_FLAG=0CONFIG_SCSI_DMA=yCONFIG_VIDEOBUF_DMA_CONTIG=yCONFIG_USB_INVENTRA_DMA=yCONFIG_MUSB_USE_SYSTEM_DMA_WORKAROUND=y# CONFIG_USB_TI_CPPI_DMA is not set# CONFIG_DMADEVICES is not set# CONFIG_DMA_API_DEBUG is not setCONFIG_HAS_DMA=y
Any help is appreciated.
The config is CONFIG_USB_INVENTRA_DMA which can be enabeld from Drivers->USB support-> Inventra and let "Disable DMA" to be not selected.
I've tested in the kernel that the changes that you suggested ware already done:
CONFIG_USB_MUSB_HDRC_HCD=y# CONFIG_MUSB_PIO_ONLY is not set# CONFIG_USB_UX500_DMA is not setCONFIG_USB_INVENTRA_DMA=yCONFIG_MUSB_USE_SYSTEM_DMA_WORKAROUND=y# CONFIG_USB_TI_CPPI_DMA is not set
The problem here is that when I connect the acquisition board to the OMAP board, it is connected using a USB connector, no the mini-USB of the OTG, so the USB root is ISP1763 processor and not the MUSB. ISP1763 is the replacement to ISP1507 from OMAP reference board. The ISP1763 has no option about DMA in the linux kernel.
I'll connect the acquisition board to the OTG and I'll test if it improves the performance.
All content and materials on this site are provided "as is". TI and its respective suppliers and providers of content make no representations about the suitability of these materials for any purpose and disclaim all warranties and conditions with regard to these materials, including but not limited to all implied warranties and conditions of merchantability, fitness for a particular purpose, title and non-infringement of any third party intellectual property right. TI and its respective suppliers and providers of content make no representations about the suitability of these materials for any purpose and disclaim all warranties and conditions with respect to these materials. No license, either express or implied, by estoppel or otherwise, is granted by TI. Use of the information on this site may require a license from a third party, or a license from TI.
TI is a global semiconductor design and manufacturing company. Innovate with 100,000+ analog ICs andembedded processors, along with software, tools and the industry’s largest sales/support staff.