3673|6

71

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

arm linux驱动编写中,中断服务程序中可以进行ioremap吗? [复制链接]

发现只要在中断服务程序中执行到ioremap函数就会报错
nable to handle kernel NULL pointer dereference at virtual address 00000000
pgd = c355c000
[00000000] *pgd=338e5031, *pte=00000000, *ppte=00000000
Internal error: Oops: 817 [#1]
为什么会这样?
看了很多驱动的编写都是先ioremap好了再在中断服务程序中使用对应的地址。可是我发现我自己编写的spi驱动中,如果这么做,spi无法正常工作。而如果每一次要操作相关的寄存器之前来一次ioremap的话,我的驱动就很稳定,也找不出什么原因。
好几天了,都没解决这个问题,急死人了。
在中断服务程序中能执行ioremap函数吗?
驱动编写中怎样来ioremap?
高版本内核中有spi驱动代码,没看懂,想着自己编写一个简单的字符型驱动是实现spi通信,练习下驱动编写。
好心人帮忙看看。轻拍。

最新回复

3楼说的对,ioremap有可能会sleep,导致不稳定。  详情 回复 发表于 2009-9-21 22:14
点赞 关注

回复
举报

90

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
请问你的问题解决了吗?
在中断服务程序中能执行ioremap函数吗?
驱动编写中怎样来ioremap?
 
 

回复

57

帖子

0

TA的资源

一粒金砂(初级)

板凳
 

ioremap可能会sleep,肯定不可以在irq handler中调用
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

4
 
一般也就是先ioremap好了,然户再去调用,每次调用时ioremap可能会增加开销而且这样使用不合适。
 
 
 

回复

58

帖子

0

TA的资源

一粒金砂(初级)

5
 
看了一些关于这个函数的使用说明 一般在硬件中断函数里面不可以加这个函数,因为中断里面不可以休眠,调用这个函数有可能会休眠几秒,最好在设备初始化的时候调用这个函数
 
 
 

回复

62

帖子

0

TA的资源

一粒金砂(初级)

6
 
先remap
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

7
 
3楼说的对,ioremap有可能会sleep,导致不稳定。
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表