首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >linux驱动程序,端口2.6.19.2 - 2.6.38-rc2 ARM11 iMX31,amba MBX设备LogicPD Litekit GLES驱动程序

linux驱动程序,端口2.6.19.2 - 2.6.38-rc2 ARM11 iMX31,amba MBX设备LogicPD Litekit GLES驱动程序
EN

Stack Overflow用户
提问于 2011-01-31 00:14:42
回答 2查看 402关注 0票数 1

代码后面有疑问

代码语言:javascript
复制
#define MBX_REG_SYS_PHYS_BASE           0xC0000000
#define MBX_REG_RANGE                   0x00004000

static struct resource mxc_reg_resources[] = {
{
        .start = MBX_REG_SYS_PHYS_BASE,
        .end = MBX_REG_SYS_PHYS_BASE + MBX_REG_RANGE - 1,
        .flags = IORESOURCE_MEM }
};

        mbx_reg = platform_get_resource(pdev, IORESOURCE_MEM, 0);
        if (!mbx_reg)
                return -EINVAL;

        reg_base = ioremap(mbx_reg->start, resource_size(mbx_reg));
        if (!reg_base) {
                ret = -ENOMEM;
                goto eremap;
        }

        printk(KERN_CRIT "Address: from 0x%08X to 0x%08X\n",
                         mbx_reg->start, reg_base);

        regread = mx3reg_read_reg(mx3reg, MBX1_GLOBREG_REVISION);
        printk(KERN_CRIT "MBX1_GLOBREG_REVISION: 0x%.8X\n", regread);

此代码使用2.6.19.2对来自iMX31的LogicPD进行工作,而不使用freescale的树外修补。

当将它移植到2.6.38-rc2时,它不再工作了。以下是一些数据结果:

工作成果:

地址: 0xC7860000 MBX1_GLOBREG_REVISION: 0x01010200

失败的结果:

地址: 0xC48A0000 MBX1_GLOBREG_REVISION: 0x00000000

地址: 0xC48A8000 MBX1_GLOBREG_REVISION: 0x00000000

地址: 0xC48B8000 MBX1_GLOBREG_REVISION: 0x00000000

地址: 0xC48C0000 MBX1_GLOBREG_REVISION: 0x00000000

也许有趣的是在2.6.19.2,它总是得到相同的地址,但在2.6.38-rc2中却没有。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-02-13 07:34:16

为了使这个设备可以通信,您需要设置外围端口重新映射寄存器。

代码语言:javascript
复制
/* Setup Peripheral Port Remap register for AVIC */
       asm("ldr r0, =0xC0000015                                \n\
        mcr p15, 0, r0, c15, c2, 4");

下面是来自最初2.6.19.2内核的代码,它是从板修复例程中执行的。当然,时钟也必须启用,而这个驱动程序的例子也没有显示出这一点。

票数 0
EN

Stack Overflow用户

发布于 2011-01-31 09:14:54

你确定你的定义还不错吗?此行的输出不应更改:

代码语言:javascript
复制
printk(KERN_CRIT "Address: from 0x%08X to 0x%08X\n",
                         mbx_reg->start, reg_base);

因为这是个物理地址。然而,它没有打印在您的输出。检查您正在访问的原始数据是否已被锁定。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4846538

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档