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

最新文章

  1. protobuf简介
  2. jmeter for循环嵌套if学习1
  3. Iframe指定页面,并使其与该页面显示一致
  4. Windows 8.1 安装Ruby on Rails手记
  5. 如何编写Angular指令
  6. CentOS 7设置网络开机自动连接
  7. [转]StuQ 技能图谱(全套13张)
  8. :eq(index)
  9. 【python】sys.argv[]的用法
  10. shell命令行快速编辑命令
  11. Forget asp.net membership,ASP.NET Identity Overview
  12. 与中国最顶尖sharepoint工程师共舞
  13. java 将一个ip地址分割成一个数组
  14. PeopleRank
  15. centos7 安装 smplayer
  16. 访问vsts私有nuget
  17. 第三十天- 进程 Process模块 空间隔离
  18. http://www.apple.com/customer-letter/
  19. 使用grep进行文本查找
  20. android gson使用

热门文章

  1. metal 优化数据分析
  2. myEclipse的配置
  3. CentOS 6.5 源码安装subversion-1.8.8,附加mod_dav_svn模块
  4. ActiveMQ订阅模式持久化实现
  5. Node.js aitaotu图片批量下载Node.js爬虫1.00版
  6. Node.js umei图片批量下载Node.js爬虫1.00
  7. Win7如何设置标准账号无法访问我的D盘
  8. 如何使用angularjs实现文本框获取焦点
  9. MySQL删除表的时候忽略外键约束
  10. selenium-Getting Started