ds1307(I2C)驱动分配内存老出错!

发布于 2022-09-23 14:26:24 字数 3447 浏览 11 评论 0

at91rm9200的开发板上带有一块DS1307的RTC芯片,现在在开发它的驱动时老是出现问题,请大侠帮我分析一下原因,谢谢!

程序代码如下:

static struct resource twi_resources[] = {
        [0] = {
                .start  = AT91RM9200_BASE_TWI,
                .end    = AT91RM9200_BASE_TWI + SZ_16K - 1,
                .flags  = IORESOURCE_MEM,
        },
        [1] = {
                .start  = AT91RM9200_ID_TWI,
                .end    = AT91RM9200_ID_TWI,
                .flags  = IORESOURCE_IRQ,
        },
};

static struct platform_device at91rm9200_twi_device = {
        .name           = "at91_i2c",
        .id             = -1,
        .resource       = twi_resources,
        .num_resources  = ARRAY_SIZE(twi_resources),
};     
..........................
int AT91F_TWI_Init(void)
{               
                struct resource *res;

                //printk("Into AT91F_TWI_Init\r\n");

                res = platform_get_resource(&at91rm9200_twi_device, IORESOURCE_MEM, 0);
                if (!res)
                        return -ENXIO;

                if(!request_mem_region(res->start, res->end - res->start + 1, "at91_twi"))
                        return -EBUSY;

                twi_base = ioremap(res->start, res->end - res->start + 1);
                if(!twi_base)
                        {
                                release_mem_region(res->start, res->end - res->start + 1);
                                return -ENOMEM;
                        }
................................
老是在(!request_mem_region(res->start, res->end - res->start + 1, "at91_twi"))出错,我在/dev下查看了有/dev/rtc,是linux内核自带的RTC,我也看了内核中request_mem_region()的定义,返回为空是因为资源冲突,会不会是我编译的驱动与内核自带的RTC资源有冲突,请大侠帮我分析一下。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

少钕鈤記 2022-09-30 14:26:24

很有可能是RTC应经被占用了,所以发生资源冲突

︶葆Ⅱㄣ 2022-09-30 14:26:24

我也怀疑是这样的,因为内核里也有一个ds1307的RTC驱动,不知道怎么改啊!

温柔嚣张 2022-09-30 14:26:24

原帖由 hustpxf 于 2009/1/15 11:32 发表
我也怀疑是这样的,因为内核里也有一个ds1307的RTC驱动,不知道怎么改啊!

既然内核已经有,你就不必再开发了。怎么还要改呢? 确定它能正常工作就行。

陌上芳菲 2022-09-30 14:26:24

楼主是要开发i2c的驱动,还是RTC的驱动。从你的做法看,你是在重新开发i2c适配器的驱动(这个操作系统基本有了),所以你再申请IO内存资源,当然会有问题。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文