DM365 OSD Memory DDR 映射 及寄存器说明
来源:互联网 发布:手机淘宝客转链工具 编辑:程序博客网 时间:2024/06/07 08:45
先是获得DMA的内存映射(一致性DMA映射)
/* allocate the framebuffer */info->screen_base = dma_alloc_coherent(dev, info->fix.smem_len, (dma_addr_t *) & info->fix.smem_start, GFP_KERNEL | GFP_DMA);
然后去设置寄存器,以让硬件去搬运从 info->fix.smem_start 的物理地址开始 缓存
从代码上分析,这里的fb_offset_32就是info->fix.smem_start 物理地址
fb_offset_32 = fb_offset_32 >> 5;
case WIN_OSD0: osd_merge(OSD_OSDWIN0OFST_O0AH, ((fb_offset_32 & 0x7800000) >> (23 - OSD_WINOFST_AH_SHIFT)) | 0x1000, OSD_OSDWIN0OFST); osd_merge(OSD_OSDWINADH_O0AH, (fb_offset_32 & 0x7F0000) >> (16 - OSD_OSDWINADH_O0AH_SHIFT), OSD_OSDWINADH); osd_write(fb_offset_32 & 0xFFFF, OSD_OSDWIN0ADL); break;
下面的表格给出了 应写入 frame buffer address 到OSD 寄存器的 关系
Frame buffer address
OSD registers base address = 0x1c71c00
bit
bit
offset
Register name
description
[31-28]
bit[12-9]
20h
OSDWIN0OFST
Bitmap Window 0 Offset
[27-21]
bit[6-0]
34h
OSDWINADH
BMP Window 0/1 Address - High
[20-5]
bit[12-0]
38h
OSDWIN0ADL
BMP Window 0 Address - Low
[5-0] 丢弃
也就是
DM365: start address is 27-bit long address b26 - b23 are in offset register b12 - b9, and * bit 26 has to be '1'
* bit 26 has to be '1' 是因为物理地址起始是0x8000 0000
- DM365 OSD Memory DDR 映射 及寄存器说明
- DM365 DDR时序理解(1)
- 6713中断寄存器配置及存储映射
- 有关DDR MEMORY 的prefetch
- dm365 osd vpde 后端流网络传送(编码后)
- 外设寄存器映射及中断向量表介绍
- 文件内存映射函数说明及应用
- DM365
- DM365
- OSD
- OSD
- OSD
- ARM 寄存器映射
- 【记录】寄存器地址映射
- 存储器映射 Memory Map
- Memory Map --- 存储器映射
- Memory Map 内存映射
- high memory 映射 ----2
- copy_to_user 和 copy_from_user
- 谷歌Android UI设计技巧:优秀UI设计准则
- VB6与WebService中的自定义类
- android sp wp
- windows 7 下出现 Microsoft .NET Framework 相关未能初始化的信息
- DM365 OSD Memory DDR 映射 及寄存器说明
- GCC 命令行详解
- equals方法和toString方法
- Linux内核抢占实现机制分析
- Javascript版的全文过滤特殊字母
- ORA-22913: must specify table name for nested table column or attribute
- JS 弹出层源兼容IE、FF、Chrome
- Java表达式求值器 汇总
- 三层的深入理解(BLL层的职责)