Hello
I am trying to use libcapture-board-imx6x-no-decoder.so on a custom i.MX6 board in QNX 6.6 to capture MIPI video input.
The custom board has a MIPI encoder which is being setup to emit a test signal into the i.MX6 capture port.
Unfortunately the library is reporting some DMA timeouts.
As a starting point, I have tried to do use libcapture on a Sabrelite board, using the sample code from the QNX 6.6 "
Video Capture Developer's Guide and API Reference".
The call to:
capture_create_buffers( context, CAPTURE_PROPERTY_FRAME_BUFFERS );
crashes with a segmentation fault within the library. I am therefore attempting to use "Application allocated" buffers,
as the developers guide puts it, using the following calls:
void *frame_buffers[1];
Set CAPTURE_PROPERTY_DST_NBYTES, CAPTURE_PROPERTY_DST_WIDTH, CAPTURE_PROPERTY_DST_HEIGHT, CAPTURE_PROPERTY_DST_STRIDE
properties....
capture_set_property_i( context, CAPTURE_PROPERTY_FRAME_NBUFFERS, NUMBER_OF_BUFFERS );
frame_buffers[0] = malloc(525 * 480 * 3);
capture_set_property_p( context, CAPTURE_PROPERTY_FRAME_BUFFERS, (void*)frame_buffers );
Is that right?
When I run this altered sample code, to capture a single frame, I get the following output from the i.mx6 implementation
of the capture library:
capture:ctx->dead=0, ctx->enable=1, ctx->dma_rst_count=0, errno: Connection timed out
capture:ctx->dead=0, ctx->enable=1, ctx->dma_rst_count=0, errno: Connection timed out
capture:imx6x_capture_wait_for_dma_complete timed out, count=0, capture_buf=80500a0, dei_buffer_cnt=0
capture:hw_stop_transfer
capture:ctx->dead=0, ctx->enable=1, ctx->dma_rst_count=1, errno: Connection timed out
capture:imx6x_capture_wait_for_dma_complete timed out, count=1, capture_buf=80500a0, dei_buffer_cnt=0
capture:hw_stop_transfer
capture:ctx->dead=0, ctx->enable=1, ctx->dma_rst_count=2, errno: Connection timed out
capture:imx6x_capture_wait_for_dma_complete timed out, count=2, capture_buf=80500a0, dei_buffer_cnt=0
capture:hw_stop_transfer
capture:ctx->dead=0, ctx->enable=1, ctx->dma_rst_count=3, errno: Connection timed out
capture:imx6x_capture_wait_for_dma_complete timed out, count=3, capture_buf=80500a0, dei_buffer_cnt=0
capture:hw_stop_transfer
capture:ctx->dead=0, ctx->enable=1, ctx->dma_rst_count=4, errno: Connection timed out
capture:imx6x_capture_wait_for_dma_complete timed out, count=4, capture_buf=80500a0, dei_buffer_cnt=0
capture:hw_stop_transfer
capture:IPU/CCM dump, reason='timeout':
capture:CCM base: 0x 20c4000
capture:IOMUX base: 0x 20e0000
capture:IPU base: 0x 2a00000
capture:CPMEM_WRITE_1(chan 1) base: 0x 100040
capture:CPMEM_WRITE_2(chan 1) base: 0x 100060
capture:
dumping IPU registers....
capture:IPU_CONF(0): 0x00000660
capture:IPU_GPR(0xe4): 0x00000000
capture:IPU_CH_DB_MODE_SEL_0(0x150): 0x00000000
capture:IPU_CH_TRB_MODE_SEL_0(0x178):0x00000000
capture:IPU_CH_BUF0_RDY0(0x268): 0x00000000
capture:IPU_INT_CTRL_1(0x3c): 0x08800002
capture:IPU_INT_CTRL_3(0x44): 0x00000002
capture:IPU_INT_CTRL_5(0x4c): 0x00000002
capture:IPU_INT_CTRL_7(0x54): 0x00000000
capture:IPU_INT_CTRL_9(0x5c): 0x80000000
capture:IPU_INT_CTRL_10(0x60): 0x00080002
capture:IPU_INT_CTRL_11(0x64): 0x00000000
capture:IPU_INT_CTRL_13(0x6c): 0x00000000
capture:IPU_INT_CTRL_15(0x74): 0x00000000
capture:IPU_INT_STAT_1(0x200): 0x00000000
capture:IPU_INT_STAT_3(0x208): 0x00800000
capture:IPU_INT_STAT_5(0x210): 0x00000000
capture:IPU_INT_STAT_7(0x218): 0x00800000
capture:IPU_INT_STAT_9(0x220): 0x00000000
capture:IPU_INT_STAT_10(0x224): 0x00000000
capture:IPU_INT_STAT_11(0x228): 0x00000000
capture:IPU_INT_STAT_13(0x230): 0x00800000
capture:IPU_INT_STAT_15(0x238): 0x00ff400c
capture:IPU_SRM_STAT(0x24c): ...
View Full Message