3097|1

69

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

在uboot的运行状态下,如何响应外部硬件的中断? [复制链接]

如何在uboot的运行状态下(此时linux kernel还未运行),响应外部按键产生的gpio中断,使uboot重启或做其他工作?在linux kernel运行状态下我已实现此功能,只要调用request_irq()注册一个中断就行了。但在uboot里似乎没有这样的函数和机制,该怎样把gpio产生的中断和我自己定义的中断服务程序关联起来?我的uboot版本是1.1.4,系统是AR9130 SoC,MIPS 24K 32-bit cpu 400MHz。
联系信箱:wb51job@163.com。多谢!

在uboot的start.s文件中,关于中断向量表的代码是这样的:

#define RVECENT(f,n) \
  b f; nop

#define XVECENT(f,bev) \
  b f    ;          \
  li k0,bev

    .set noreorder

    .globl _start
    .text
_start:
    RVECENT(reset,0)    /* U-boot entry point */
    RVECENT(reset,1)    /* software reboot */
    RVECENT(romReserved,2)
    RVECENT(romReserved,3)
                    ....
    RVECENT(romReserved,63)
    XVECENT(romExcHandle,0x200)    /* bfc00200: R4000 tlbmiss vector */
    RVECENT(romReserved,65)
    RVECENT(romReserved,66)
                    ....
    RVECENT(romReserved,79)
    XVECENT(romExcHandle,0x280)    /* bfc00280: R4000 xtlbmiss vector */
    RVECENT(romReserved,81)
                    ....
    RVECENT(romReserved,95)
    XVECENT(romExcHandle,0x300)    /* bfc00300: R4000 cache vector */
    RVECENT(romReserved,97)
                    ....
    RVECENT(romReserved,111)
    XVECENT(romExcHandle,0x380)    /* bfc00380: R4000 general vector */
    RVECENT(romReserved,113)
                    ....
    RVECENT(romReserved,127)

    /* We hope there are no more reserved vectors!
     * 128 * 8 == 1024 == 0x400
     * so this is address R_VEC+0x400 == 0xbfc00400
     */

reset:
    /*
     * Clearing CP0 registers - WAR for the Linux hang issue
     */
    mtc0    zero, $0
                    ....


    /* Exception handlers.
     */
romReserved:
    b romReserved

romExcHandle:
    b romExcHandle

我对上面定义的128个中断没看懂是怎么调用的。因为我手头资料不全,不知道gpio21脚对应哪个中断号,我尝试过把所有的RVECENT(romReserved, X) 都改成RVECENT(reset, X),结果都没一点反应。郁闷。

请高手帮忙分析一下!


最新回复

请问你在内核中如何配置把某个gpio引脚作为中断输入,等有中断输入时 调用自己的中断处理程序的啊 我看了一些资料 就是设定gpio为输入模式 设定触发模式 然后request_irq()是这样嘛 非常感谢  详情 回复 发表于 2010-5-19 09:56
点赞 关注

回复
举报

68

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
请问你在内核中如何配置把某个gpio引脚作为中断输入,等有中断输入时 调用自己的中断处理程序的啊 我看了一些资料 就是设定gpio为输入模式 设定触发模式 然后request_irq()是这样嘛 非常感谢
 
 

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

随便看看
查找数据手册?

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
快速回复 返回顶部 返回列表