uboot中实现irq中断(uboot version2015.04)
1.实验目的:实现GPIO_2的外部中断

2.实验步骤:
a.GPIO_2(GPIO1_IO02)为中断源, 首先需要设置这个pad为GPIO模式, 即把该pad复用为GPIO, 所以只需在board/freescale/mx6sabresd/mx6sabresd.c中设置自己的pad, 这里在iomux_v3_cfg_t const yaxon_pads[]中添加MX6_PAD_GPIO_2__GPIO1_IO02
b.让u-boot支持irq/fiq中断, 首先需要在配置文件中定义几个宏,我在我的板子的配置文件include/configs/mx6sabresd.h中定义了如下宏:
#define CONFIG_USE_IRQ
#define CONFIG_STACKSIZE_IRQ (4*1024) /* IRQ stack*/
#define CONFIG_STACKSIZE_FIQ (4*1024) /* FIQ stack*/
c.在异常向量表中有异常处理arch/arm/lib/vectors.S, 其中do_irq是irq异常对应的异常处理入口
d.具体的do_irq本来是在arch/arm/lib/interrupts.c(对于#ifdef CONFIG_USE_IRQ的在这个文件中), 项目中自定义的do_irq放在arch/arm/cpu/armv7/mx6/interrupt.c文件里, 所以把arch/arm/lib/interrupts.c中的do_irq函数注释掉, 又由于在编译过程中arm/arm/lib/interrupts.c中的interrupt_init函数中的arch_interrupt_init()未实现会报错, 所以把该行语句注释掉,换成return 0;
4.在arch/arm/cpu/armv7/mx6/目录下实现了gic中断控制器的相关接口(cortex_a9.c gic.c interrupt.c, 以及相关头文件(cortex_a9.h gic_register.h gpio_register.h gic.h gpio_interrupt.h interrupt.h)放在顶层目录的include目录下), 并在arch/arm/cpu/armv7/mx6目录下Makefile中添加obj-y +=gic.o, obj-y +=interrupt.o, obj-y +=cortex_a9.o. 注意自己编译的源代码, 头文件可以放在include目录下, 源文件可以放在任何目录, 只需在源文件(c文件)的目录下编写Makefile文件使它编译进uboot
5.在common/board_r.c文件中, 在init_sequence_r函数指针数组中的run_main_loop()函数之前添加irq_init(就是irq中断相关的代码), 然后实现irq_init()函数, 具体见common/board_r.c中irq_init函数实现

参考文档:http://www.cnblogs.com/pengdonglin137/p/3820574.html#_label0

uboot中断功能实现的更多相关文章

  1. u-boot中断功能初步分析之---------按键中断

    作者:彭东林 邮箱:pengdonglin137@163.com QQ: 405728433 以前一直有个疑问,在U-boot下到底能不能使用中断,为了验证这个问题,于是乎,昨天晚上我在自己的 TQ2 ...

  2. 5.2 SW1控制LED1亮灭(中断功能)

    中断:CPU收到中断请求后暂停正在执行的程序,而去执行中断服务函数中的程序,处理结束后,继续执行原来的程序. 能够产生中断请求的中断源如下: CC2530中断设置步骤:使能端口组中断(IEN)——端口 ...

  3. 灵动微电子ARM Cortex M0 MM32F0010 Timer定时器中断定时功能的配置

    灵动微电子ARM Cortex M0 MM32F0010 Timer定时器中断定时功能的配置 目录: 1.Timer1高级定时器Timer3通用定时器Timer14基本定时器简介 2.Timer1高级 ...

  4. 【转】Bootloader之uBoot简介(转)

    原文网址:http://blog.csdn.net/sadamoo/article/details/8139946 来自http://blog.ednchina.com/hhuwxf/1915416/ ...

  5. mini2440裸机试炼之—RTC闹钟中断,节拍中断

    版权声明:博客地址:http://blog.csdn.net/muyang_ren.源代码能够在我的github上找看看 https://blog.csdn.net/muyang_ren/articl ...

  6. Bootloader之uBoot简介

    本文转载自:http://blog.ednchina.com/hhuwxf/1915416/message.aspx 一.Bootloader的引入 从前面的硬件实验可以知道,系统上电之后,需要一段程 ...

  7. DM368 UBL和u-boot的裁剪

    转载:http://blog.csdn.net/olei_oleitao/article/details/7919307   一.DM36X的BOOT过程介绍 DM36x的BOOT过程和DM6446. ...

  8. Bootloader之uBoot简介(转)

    来自http://blog.ednchina.com/hhuwxf/1915416/message.aspx,感谢作者 一.Bootloader的引入从前面的硬件实验可以知道,系统上电之后,需要一段程 ...

  9. u-boot懂你并不难

    转载:http://blog.chinaunix.net/uid-28236237-id-3865045.html u-boot第一阶段分析(一) u-boot 第一阶段分析(二) u-boot 第二 ...

随机推荐

  1. [Python爬虫] 之三十:Selenium +phantomjs 利用 pyquery抓取栏目

    一.介绍 本例子用Selenium +phantomjs爬取栏目(http://tv.cctv.com/lm/)的信息 二.网站信息 三.数据抓取 首先抓取所有要抓取网页链接,共39页,保存到数据库里 ...

  2. ci框架(二)

    自定义SQL语句                                                                             当提供的API满足不了我们对S ...

  3. sdut 3-7 类的友元函数的应用

    3-7 类的友元函数的应用 Time Limit: 1000MS Memory limit: 65536K 题目描写叙述 通过本题目的练习能够掌握类的友元函数的定义和使用方法 要求设计一个点类Poin ...

  4. java 过滤器(理解二)

    request.setCharacterEncoding("utf-8"); response.setContentType("text/html;charset=utf ...

  5. Netty Client和Server端实现

    本文基于Nett4.0.26.Final版本浅析Client与Server端通讯,先看服务器端: public class Server { public static void run(int po ...

  6. 优化SQL Server的内存占用之执行缓存

    在论坛上常见有朋友抱怨,说SQL Server太吃内存了.这里笔者根据经验简单介绍一下内存相关的调优知识   首先说明一下SQL Server内存占用由哪几部分组成.SQL Server占用的内存主要 ...

  7. vue - for 遍历对象和遍历对象数组

    1. 遍历对象时,参数: 第一个为值,第二个为键名,第三个为索引 <!DOCTYPE html> <html lang="en"> <head> ...

  8. 滚动锁定 scroll lock 键有什么用?

    滚动锁定 scroll lock 键有什么用? 中文名称:滚动锁定键  按下此键后在Excel等按上.下键滚动时,会锁定光标而滚动页面:如果放开此键,则按上.下键时会滚动光标而不滚动页面.      ...

  9. 【Datastage】导出的dsx文件如何统计导出作业个数

    我们在日常使用ds时候,会将很多ds打包导出,例如:有100个作业,现在我们打包导出,但是导出之后如何确认我们是否已经完全导出,会不会在导出的时候漏了一个作业呢? 不用怕! 我们使用编辑打开导出的ds ...

  10. hibernate 多对多单向

    多对多会利用中间表做外键的形式关联   package com.bjsxt.hibernate; import javax.persistence.Entity; import javax.persi ...