DM6437 OSD调试记录
来源:互联网 发布:绘制网络计划图软件 编辑:程序博客网 时间:2024/06/16 10:15
DM6437 VPBE中的OSD学习记录,记录OSD模块看下来的大致感受。
下图为整体框图
在window 0 下面还有一层background 定义寄存器为:VPBE_OSD_MODE
最后的8位为颜色索引,对应ROM CLUT中的256种颜色。我用的是LCD屏显示,分辨率为800*480;
配置过的代码参考`
void vpbe_init( Uint32 buffer0, Uint32 buffer1, Uint32 width, Uint32 height, Uint32 cb_enable ){ VPSS_CLK_CTRL = 0x000000019; // Enable DAC and VENC clock, both at 27 MHz VPBE_PCR = 0; // No clock div, clock enable /* * Setup OSD */ VPBE_OSD_TRANSPVAL = 0;/*****************************************************/ VPBE_OSD_MODE = 0x00000000+104; // Blackground color blue using clut in ROM0 VPBE_OSD_OSDWIN0MD = 0; // Disable both osd windows and cursor window VPBE_OSD_OSDWIN1MD = 0; VPBE_OSD_RECTCUR = 0; VPBE_OSD_VIDWIN0OFST = width >> 4; VPBE_OSD_VIDWIN0ADR = buffer0; VPBE_OSD_BASEPX = BASEP_X; VPBE_OSD_BASEPY = BASEP_Y; VPBE_OSD_VIDWIN0XP = 0; VPBE_OSD_VIDWIN0YP = 0; VPBE_OSD_VIDWIN0XL = width; VPBE_OSD_VIDWIN0YL = height; VPBE_OSD_MISCCTL = 0; //change the color if set bit 7 ,but don't know the principle VPBE_OSD_OSDWIN0ADR = (Uint32)resizer_degree; VPBE_OSD_OSDWIN0OFST = 40; VPBE_OSD_OSDWIN0XP = 100; VPBE_OSD_OSDWIN0YP = 100; VPBE_OSD_OSDWIN0XL = 20*32; VPBE_OSD_OSDWIN0YL = 240; VPBE_OSD_OSDWIN0MD = 0x20c5; VPBE_OSD_OSDWIN1MD = 0; VPBE_OSD_VIDWINMD = 0x00000001; // Disable vwindow 1 and enable vwindow 0// Field mode with no up-scaling //VPBE_VENC_VMOD = 0x00000043; // Standard PAL interlaced output VPBE_VENC_VMOD = 0x00002053|(0 << 4); // Standard PAL interlaced output VPBE_VENC_VIDCTL = 0x00002000|(0 << 4); VPBE_VENC_LCDOUT = 0x00000001; VPBE_VENC_DCLKCTL = 0x0000001; VPBE_VENC_DCLKPTN0 = 0x1; // VPBE_VENC_HSPLS = 1*2;// 40*2 VPBE_VENC_HINT = 862*2-1;// 1056*2 - 1 VPBE_VENC_HSTART = 46*2; // (40 + 4)*2 VPBE_VENC_HVALID = 800*2; // 800*2 VPBE_VENC_VSPLS = 1;// 10 VPBE_VENC_VINT = 522-1;//0x20C; // 525 - 1 VPBE_VENC_VSTART = 23;//0xc; // 10 + 2 VPBE_VENC_VVALID = 480;//0x1E0; // 480 // VPBE_VENC_HSDLY = 1; // VPBE_VENC_VSDLY = 1; VPBE_VENC_SYNCCTL = 0xf|(0 << 11); //Set HSYNC, VSYNC as active low VPBE_VENC_RGBCTL = 0x0|(1 << 10); VPBE_VENC_VDPRO = 0 << 8|(0 << 9)|(0 << 11); VPBE_VENC_DACTST = 0|(0xf << 12); //DAC Power-down mode VPBE_VENC_DACSEL = 0x000000;}
上面除了OSD模块还有VENC模块的一些代码。对于OSD来讲,需要设定好整个画布的基准地址,才有参照。这里需要注意的,不能为0有范围寄存器说明有写。预计和HS、VS的脉冲时间有关。
接下来除了默认的缺省值,下面几个寄存器进行配置:
VPBE_OSD_VIDWIN0OFST //偏移地址
VPBE_OSD_VIDWIN0ADR //起始地址
VPBE_OSD_VIDWIN0XP //X方向起点
VPBE_OSD_VIDWIN0YP //Y方向起点
VPBE_OSD_VIDWIN0XL //X方向像素点长度
VPBE_OSD_VIDWIN0YL //Y方向像素点长度
对于OSD0两种不同模式:
在bitmap模式下(bit8):
VPBE_OSD_OSDWIN0XL、VPBE_OSD_OSDWIN0OFST 关系记录
VPBE_OSD_OSDWIN0XL表示有多少个像素点,一个像素点为8bit
VPBE_OSD_OSDWIN0OFST则为第一行地址和次行地址偏移。只知道地址偏移
单位为32,若其值为1则表示为1*32byte个偏移量
例:
VPBE_OSD_OSDWIN0OFST = 1;
VPBE_OSD_OSDWIN0XL = 1*32;
在RGB565 模式下:
VPBE_OSD_OSDWIN0XL表示有多少个像素点,一个像素点为16bit
则对于上例需要修改如下:
VPBE_OSD_OSDWIN0OFST = 2;
VPBE_OSD_OSDWIN0XL = 1*32;
可以看到VPBE_OSD_OSDWIN0OFST 的值增加了一倍,是由于一行为1*32个像素点、占用1*32*2byte;
- DM6437 OSD调试记录
- 7-inch LCD 调试记录 DM6437
- DM6437 720P调试问题记录
- ceph OSD 故障记录
- DM6437
- DM6437 C64X+ EDMA 疑惑总结记录
- RT5350 v4l/osd调试过程
- ceph osd 更换硬盘记录
- OSD
- OSD
- OSD
- dm6437外设
- DM6437外设
- 调试记录
- 调试记录
- 调试记录
- DM6446 OSD
- DM6446 OSD
- 设计模式之状态模式
- 欢迎使用CSDN-markdown编辑器
- Java学习——abstract抽象类与interface接口
- UVA - 10721 Bar Codes
- json+ajax实现实时刷新和增删查功能
- DM6437 OSD调试记录
- kali linux 安装flash
- leetcode trailing zero
- MFC ADO链接SQL Server 2008 封装好的类
- SSh save可以自动自动提交, 但是delete,update却不行
- 字符集设置问题深究
- 程序员讨厌没有价值的任务
- 能Ping通,能DNS解析,不能打开网页(登陆QQ等)的解决办法
- Python中使用ssl加密