天嵌 ARM开发社区

 找回密码
 注册
查看: 2881|回复: 2

wince下camera驱动之start address for DMA

[复制链接]
lllinux 发表于 2010-12-12 13:40:47 | 显示全部楼层 |阅读模式
请高人指点!
VIRTUAL_ADDR_OFFSET是干什么用的啊?

截取camera.cpp部分代码如下:
#define VIRTUAL_OFFSET                0x70000000
#define VIRTUAL_ADDR_OFFSET        VIRTUAL_OFFSET // for MPEG4
                                 。。。
                                 。。。
                      。。。
buffer_y += VIRTUAL_ADDR_OFFSET;
buffer_cb += VIRTUAL_ADDR_OFFSET;
buffer_cr += VIRTUAL_ADDR_OFFSET;

在分析camera.cpp时发现buffer_y,buffer_cb和buffer_cr好像已经是HalAllocateCommonBuffer()申请下的物理地址了。
为什么还要再加上VIRTUAL_ADDR_OFFSET(0x70000000)呢?
这是为什么啊?

另外,g_PhysCodecAddr这个结构体是在哪个文件里定义的啊?不太好找啊!是结构体吧?
请前辈们指点迷津!
 楼主| lllinux 发表于 2010-12-12 22:32:55 | 显示全部楼层
g_PhysCodecAddr找到了,是个共用体,描述了wince的物理内存结构体。
但VIRTUAL_ADDR_OFFSET是干什么用的呢?还是不懂!
从名字上看好像是虚拟地址偏移。
buffer_y存的应该是HalAllocateCommonBuffer()输出的物理地址,那么buffer_y再加上VIRTUAL_ADDR_OFFSET就变成虚拟地址了?这就是物理地址到虚拟地址的映射关系?不懂!为什么是0x70000000呢?为了正好映射到不带缓存(uncahced)的虚拟地址0xA0000000?

HalAllocateCommonBuffer(&Adapter2, Codec_Mem_Size, &g_PhysCodecAddr, FALSE);是DMA专用内存申请函数吗?其中的”&g_PhysCodecAddr“参数得到的是物理地址吧?

望前辈们指点迷津啊!!!
 楼主| lllinux 发表于 2010-12-13 13:23:48 | 显示全部楼层
无人问津啊!!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

i.MX8系列ARM cortex A53 M4 工控板上一条 /1 下一条

Archiver|手机版|小黑屋|天嵌 嵌入式开发社区 ( 粤ICP备11094220号 )

GMT+8, 2024-5-17 01:17 , Processed in 1.046875 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表