Goal: To extract a 640x480 still images from USB camera for post processing using the BeagleBone development board with PSP 4.06.00.08.
Issues:
We are currently looking for a work around for Issue 4.
Background:
1. Enabled UVC drivers in the Kernal Configuration: http://processors.wiki.ti.com/index.php/Usbgeneralpage#USB_Video
2. Encountered a DMA issue:
- Described: https://groups.google.com/forum/?fromgroups=#!topic/beagleboard/sgCwaP5RVUo
- Documented: (ARM_MPU.KERNEL.39) http://processors.wiki.ti.com/index.php/Sitara_SDK_5.05.00_Release_Notes
- Work Around: Rebuild kernel with DMA disabled USB DMA disabled (CONFIG_MUSB_PIO_ONLY=y), http://processors.wiki.ti.com/index.php/UsbgeneralpageLinux-v3p1
3. Encountered video artifacts when connecting USB camera to a USB Host port on the board
- Described: http://www.mathworks.com/help/simulink/slref/pandaboardv4l2videocapture.html
- Work Around: Force USB port to behave as OTG:
static struct omap_musb_board_data musb_board_data = {
.interface_type = MUSB_INTERFACE_ULPI,
/*
* mode[0:3] = USB0PORT's mode
* mode[4:7] = USB1PORT's mode
* AM335X beta EVM has USB0 in OTG mode and USB1 in host mode.
*/
.mode = MUSB_OTG,
.power = 500,
.instances = 1,
};
Refer to below AM335x feature list. MUSB OTG HNP is supported.
http://processors.wiki.ti.com/index.php/AM335x-PSP_04.06.00.08_Features_and_Performance_Guide#MUSB_OTG_controller
4. Encountered issue when opening/closeing UVC several times. Results in "select timeout" or “musb_host_rx 1658: RX13 dma busy, csr 2023“ error message. Unable to receive video stream until AM335x is power cycled.
- Documented: (SDOCM00091464)http://processors.wiki.ti.com/index.php/AM335x-PSP_04.06.00.08_Release_Notes#USB_2
- Work Around: ??
Question:
Can the Video4Linux Frame Grabber API (libfg) be used here? It seems to be a video4linux derivative that used to capture frames. Please note that the video4linux project does not support still image capture.
Link to documentation: