GDMA旋转LVGL为横屏问题

Viewed 58

问题描述


想把SDK例程里面的sample_lvgl从竖屏改为横屏,试着用了一下GDMA,但是却出现了这种奇怪的情况,看起来转换后的stride是正确的,不过想不通为什么会这样。

复现步骤


用的32位色,gdma是这么设置的

gdma_attr.buffer_num = 3;
gdma_attr.x_mirror = K_FALSE;
gdma_attr.y_mirror = K_FALSE;
gdma_attr.width = width;
gdma_attr.height = height;
gdma_attr.rotation = DEGREE_90;
gdma_attr.pixel_format = DMA_PIXEL_FORMAT_ABGR_8888;
gdma_attr.src_stride[0] = width * 4;
gdma_attr.dst_stride[0] = height * 4;

flush函数写成了这样

static void flush(lv_display_t *disp, const lv_area_t *area, uint8_t *px_map)
{
    if (!lv_display_flush_is_last(disp))
        return;
    k_video_frame_info tmp;
    static unsigned frame_count = 0;
    frame_count++;
    memcpy(df_info.v_frame.virt_addr[0], px_map, buffer_size);
    int ret = kd_mpi_dma_send_frame(DMA_CHN0, &df_info, -1);
    if (ret != K_SUCCESS)
    {
        printf("kd_mpi_dma_send_frame error %d\r\n", ret);
    }

    ret = kd_mpi_dma_get_frame(DMA_CHN0, &tmp, -1);
    if (ret != K_SUCCESS)
    {
        printf("kd_mpi_dma_get_frame error %d\r\n", ret);
    }
    kd_mpi_vo_chn_insert_frame(K_VO_OSD1 + 3, &tmp);
    kd_mpi_dma_release_frame(DMA_CHN0, &tmp);
}

硬件板卡


01 studio CANMV 230mini开发板

软件版本


K230_SDK 2.0

1 Answers

咦,怎么上传的图片显示不出来
微信图片_20251219213621_6_145.jpg
微信图片_20251219213607_5_145.jpg