新手入门
- 积分
- 6
- 金钱
- 6
- 注册时间
- 2023-11-11
- 在线时间
- 2 小时
|
2金钱
在PYNQ OV5640 LCD显示基础上,增加一路VDMA,用OSD拼在一起输出1080p,像素时钟、video timing和OSD固定1080p配置。
在裸机程序里配置两个VDMA只开启MM2S通道,能正常显示内存的画面;同样的寄存器配置放在PYNQ里屏幕就不能显示,并且屏幕提示:“未达到最佳分辨率,推荐1920*1080”。
SDK裸机程序只配置了两个VDMA,PYNQ也只配置VDMA,这两个配置方式有差别吗,需要怎么修改?
// SDK 程序寄存器配置
void vdma_config(u32 ID, u32 w, u32 h, u32 addr, u32 size)
{
// MM2S
XAxiVdma_Config *Config = XAxiVdma_LookupConfig(ID);
u32 vdma_base_addr = Config->BaseAddress;
XAxiVdma_WriteReg(vdma_base_addr, 0x00, 0x81);
XAxiVdma_WriteReg(vdma_base_addr, 0x5C, addr);
XAxiVdma_WriteReg(vdma_base_addr, 0x5C+4, addr+size);
XAxiVdma_WriteReg(vdma_base_addr, 0x5C+2*4, addr+2*size);
XAxiVdma_WriteReg(vdma_base_addr, 0x58, w*3);
XAxiVdma_WriteReg(vdma_base_addr, 0x54, w*3);
XAxiVdma_WriteReg(vdma_base_addr, 0x50, h);
// S2MM
XAxiVdma_WriteReg(vdma_base_addr, 0x30, 0x80);
}
// PYNQ内跟SDK同样的寄存器配置
vdma0 = overlay.axi_vmda_0
vdma1 = voerlay.axi_vdma_1
vdma0.write(0x00, 0x81)
....
|
|