免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: angelawushuang
打印 上一主题 下一主题

ARM下驱动中断读写问题 [复制链接]

论坛徽章:
3
金牛座
日期:2014-06-14 22:04:062015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:45
21 [报告]
发表于 2008-11-06 16:42 |只看该作者
原帖由 angelawushuang 于 2008-11-6 15:57 发表
arm 是32位的··我做的是在ARM上做个TL16C554芯片的串口驱动,TL16C554的寄存器是8位的
  中断号注册的话,电路图上是D17(MPUIO13),我注册中断的时候用的就是MPUIO13,由于这个口本身不是MPUIO,
所以我在 ...



我觉得你应该搞明白,你这个程序跑在arm上,做一个TL16C554芯片的串口驱动,那么,你所谓的是到底是谁的中断?
如果是TL16C554的中断,但是你的程序在arm上去注册中断处理程序,TL16C554跟arm之间是怎样关联的?——连线问题。
而中断从哪里触发?触发中断后由谁来接收并处理?并跳转到你的中断处理程序。

这个流程你要是搞明白了,就应该明朗了。

论坛徽章:
0
22 [报告]
发表于 2008-11-06 16:58 |只看该作者

回复 #20 dreamice 的帖子

TL16C554的中断

论坛徽章:
3
金牛座
日期:2014-06-14 22:04:062015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:45
23 [报告]
发表于 2008-11-06 17:12 |只看该作者
原帖由 angelawushuang 于 2008-11-6 16:58 发表
TL16C554的中断



TL16C554的中断如何转换到ARM处理器上作为一个arm的中断?要知道,你注册的可是arm的中断,中断处理函数是在arm上跑的。

论坛徽章:
0
24 [报告]
发表于 2008-11-07 11:09 |只看该作者

回复 #23 dreamice 的帖子

我仔细阅读了硬件手册,了解了产生中断的四种情况:
1 接收器错误
2 接收器数据就绪或超时
3 发送器保持寄存器为空
4 MCR位3被置位

现在我的目标是为了写一个驱动,实现串口扩展,那么请问是不是实现硬件上按一个键,我驱动能响应,测试程序调用READ读取按键值达到读的目的,调用WRITE写入字符,通过什么判断写入是否成功呢?这些都要用中断实现吧··程序应该怎么写去调用中断呢··

论坛徽章:
3
金牛座
日期:2014-06-14 22:04:062015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:45
25 [报告]
发表于 2008-11-07 14:32 |只看该作者
原帖由 angelawushuang 于 2008-11-7 11:09 发表
我仔细阅读了硬件手册,了解了产生中断的四种情况:
1 接收器错误
2 接收器数据就绪或超时
3 发送器保持寄存器为空
4 MCR位3被置位

现在我的目标是为了写一个驱动,实现串口扩展,那么请问是不是实 ...


你这个硬件手册是arm的还是串口芯片的?关键问题是串口的中断要能和arm中断结合起来。linux跑的arm上,只能处理arm的io接口的中断。

论坛徽章:
0
26 [报告]
发表于 2008-11-07 19:08 |只看该作者

回复 #25 dreamice 的帖子

硬件手册是串口芯片的,linux是跑在串口芯片上的 这个芯片是扩展串口,实现独立功能

论坛徽章:
3
金牛座
日期:2014-06-14 22:04:062015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:45
27 [报告]
发表于 2008-11-07 19:50 |只看该作者
原帖由 angelawushuang 于 2008-11-7 19:08 发表
硬件手册是串口芯片的,linux是跑在串口芯片上的 这个芯片是扩展串口,实现独立功能



那你的问题就很明显了,中断是串口芯片的,而实际上arm并没有产生中断,又如何能处理中断程序呢?
你应该通过arm主控芯片去检测到串口芯片的中断,然后执行相应的程序才是正确的。

论坛徽章:
0
28 [报告]
发表于 2008-11-07 20:29 |只看该作者

回复 #27 dreamice 的帖子

请问怎么检测啊?在测试程序中写吧···能不能举个例子 啊· 谢谢·

论坛徽章:
3
金牛座
日期:2014-06-14 22:04:062015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:45
29 [报告]
发表于 2008-11-07 21:24 |只看该作者
原帖由 angelawushuang 于 2008-11-7 20:29 发表
请问怎么检测啊?在测试程序中写吧···能不能举个例子 啊· 谢谢·


如果是和arm连接的,那么他能不能对arm的某个io触发一个中断?
另外,你也可以通过读串口芯片的状态寄存器,观察其具体的状态。

论坛徽章:
0
30 [报告]
发表于 2008-11-07 21:46 |只看该作者

回复 #27 dreamice 的帖子

我的目标是为了写一个驱动,实现串口扩展,那么请问是不是实现硬件上按一个键,我驱动能响应,测试程序调用READ读取按键值达到读的目的,调用WRITE写入字符,通过什么判断写入是否成功呢?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP