【发布时间】:2012-04-18 13:33:55
【问题描述】:
免责声明:我想在Texas Instruments Forum 上交叉发布这个问题,但我已经五天没有收到任何回复了。我对嵌入式编程很陌生,所以请指出您是否需要更多信息或者我的方法是否荒谬。
动机
我有一个带有DM3730 processor from Texas Instruments 的嵌入式设备(与您在 Beagleboard -xm 上找到的相同)处理器通过其显示子系统 (DSS) 连接到 LCD 显示器。显示器看起来很暗,必须进行伽马校正。幸运的是,DSS 有一个 Palette/gamma 查找表。不幸的是,我无法让它工作。
我发现了什么
我在德州仪器论坛上找到了一个类似处理器的similar question,一位 TI 员工给出了以下解释(强调我的):
我认为当前的 Linux 内核不支持彩色索引图形,但通过直接寄存器配置从应用程序级别启用它相当容易。
[...]
接下来,声明一个由 256 个无符号整数组成的数组,并为每个颜色索引条目填充所需的 RGB 值。
将 DISPC_GFX_TABLE_BA 设置为先前配置的阵列的物理地址(注意 1,这需要物理地址而不是虚拟地址,因此您可能需要将其映射回来。注意 2,这需要是一个 32 位对齐的地址,因此根据数组的创建方式,可能需要创建一个稍大的 char 数组并填充数组,以使起点位于 32 位边界上)
[...]
他后来引用mem_util 来转换地址,我可以使用它直接从应用程序级别(用户空间)写入寄存器,但我不知道如何将虚拟地址“映射回”到物理地址。
系统信息
~# uname -a
Linux dm37x-evm 2.6.32.1 #1 Fri Dec 2 11:19:53 EST 2011 armv7l unknown
我的问题
- 如何将虚拟地址映射回物理地址?
- 这可以在用户空间完成吗? (我设想我提供一个用户可以调整伽马曲线的界面)
- 这是正确的方法吗?我应该把它移到内核空间吗(我不愿意这样做,因为我对 Linux 内核没有很多经验)
- 任何好的资源或例子!
【问题讨论】:
标签: c linux virtual-memory beagleboard texas-instruments