问题描述
想把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

