AnsweredAssumed Answered

Where is the data collected by the camera

Question asked by song zhiyuan on Nov 26, 2019
Latest reply on Dec 2, 2019 by igorpadykov
This is the idmac configuration
void ipu_general_idmac_config()
{
 uint32_t channel = 0;
 /* enable channel 0 */
 ipu_idmac_channel_enable(channel, 0);
 memset((void *)ipu_cpmem_addr(channel), 0, sizeof(ipu_cpmem_t));
    ipu_cpmem_set_field(ipu_cpmem_addr(channel), 1, 0, 29, 0x08000000);
    ipu_cpmem_set_field(ipu_cpmem_addr(channel), 1, 29, 29, 0);
    ipu_cpmem_set_field(ipu_cpmem_addr(channel), 0, 125, 13, 0x0000027f);
    ipu_cpmem_set_field(ipu_cpmem_addr(channel), 0, 138, 12, 0x000001df);
    /*setup default pixel format */
    ipu_cpmem_set_field(ipu_cpmem_addr(channel), 1, 85, 4, 0x01);
    ipu_cpmem_set_field(ipu_cpmem_addr(channel), 0, 46, 22, 0x4b000 / 8);
    ipu_cpmem_set_field(ipu_cpmem_addr(channel), 0, 68, 22, 0x4b000 * 3 / 16);
    ipu_cpmem_set_field(ipu_cpmem_addr(channel), 1, 102, 14, 640 - 1);
    ipu_cpmem_set_field(ipu_cpmem_addr(channel), 1, 128, 14, 640 / 2 - 1);

    /*setup pixel per burst */
    ipu_cpmem_set_field(ipu_cpmem_addr(channel), 1, 78, 7, 30);
    ipu_cpmem_set_field(ipu_cpmem_addr(channel), 0, 113, 1, 0);
    ipu_cpmem_set_field(ipu_cpmem_addr(channel), 1, 58, 20, 0);
    //setup rotate/vf/hf and block mode
    ipu_cpmem_set_field(ipu_cpmem_addr(channel), 0, 119, 1, 0);
    ipu_cpmem_set_field(ipu_cpmem_addr(channel), 0, 121, 1, 0);
    ipu_cpmem_set_field(ipu_cpmem_addr(channel), 0, 120, 1, 0);
    ipu_cpmem_set_field(ipu_cpmem_addr(channel), 0, 117, 2, 0);
    ipu_idmac_channel_mode_sel(channel, 0);
    ipu_idmac_channel_enable1(channel, 1);
}
This is the SMFC configuration:
uint32_t ipu_smfc_fifo_allocate(uint32_t channel, uint32_t map,
                                uint32_t burst_size)
{
    switch (channel) {
    case 0:
        writel(map, 0x2650000);
        writel(burst_size, 0x2650008);
        break;
    case 1:
        writel(map, 0x2650000);
        writel(burst_size, 0x2650008);
        break;
    case 2:
        writel(map, 0x2650000);
        writel(burst_size, 0x2650008);
        break;
    case 3:
        writel(map, 0x2650000);
        writel(burst_size, 0x2650008);
        break;
    default:
        printf("Wrong channel selected!!\n");
        return -1;
    }
    writel(1, 0x2600000);
    return 0;
}
This is the csi configuration:
void ipu_csi_config()
{
 writel((readl(0x2600000) | 1 << 28), 0x2600000);//mipi
 writel(0x1e, 0x2638020);//di
 writel(((0x04 << 24) | (0x00 << 4) | (0x0 << 16) | (0x1 << 11) | (0x0 << 7) | (0x02 << 8)), 0x2630000);
 writel(((0x01df << 16) | (0x027f << 0)), 0x2630004);
 writel((readl(0x2600000) | (1 << 0)), 0x2600000);
}
My development board is imx6q,and configure camera data.640 x 480,15fps;
and I don't use an operating system.
cpmem address:0x02700000.CH23_EBA0 = 0X40000000;
ov5640->csi->smfc->idmac->memory.
So where should the data collected by the camera be stored?
When I look at the in-memory data.I find that memory data varies between 0x2701400 and 0x2701ff0.CH23_EBA0 = 0X40000000 data is constant.So how much memory should I look at?To see the data from the camera.

Outcomes