uboot中断功能实现
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中断功能实现的更多相关文章
- u-boot中断功能初步分析之---------按键中断
作者:彭东林 邮箱:pengdonglin137@163.com QQ: 405728433 以前一直有个疑问,在U-boot下到底能不能使用中断,为了验证这个问题,于是乎,昨天晚上我在自己的 TQ2 ...
- 5.2 SW1控制LED1亮灭(中断功能)
中断:CPU收到中断请求后暂停正在执行的程序,而去执行中断服务函数中的程序,处理结束后,继续执行原来的程序. 能够产生中断请求的中断源如下: CC2530中断设置步骤:使能端口组中断(IEN)——端口 ...
- 灵动微电子ARM Cortex M0 MM32F0010 Timer定时器中断定时功能的配置
灵动微电子ARM Cortex M0 MM32F0010 Timer定时器中断定时功能的配置 目录: 1.Timer1高级定时器Timer3通用定时器Timer14基本定时器简介 2.Timer1高级 ...
- 【转】Bootloader之uBoot简介(转)
原文网址:http://blog.csdn.net/sadamoo/article/details/8139946 来自http://blog.ednchina.com/hhuwxf/1915416/ ...
- mini2440裸机试炼之—RTC闹钟中断,节拍中断
版权声明:博客地址:http://blog.csdn.net/muyang_ren.源代码能够在我的github上找看看 https://blog.csdn.net/muyang_ren/articl ...
- Bootloader之uBoot简介
本文转载自:http://blog.ednchina.com/hhuwxf/1915416/message.aspx 一.Bootloader的引入 从前面的硬件实验可以知道,系统上电之后,需要一段程 ...
- DM368 UBL和u-boot的裁剪
转载:http://blog.csdn.net/olei_oleitao/article/details/7919307 一.DM36X的BOOT过程介绍 DM36x的BOOT过程和DM6446. ...
- Bootloader之uBoot简介(转)
来自http://blog.ednchina.com/hhuwxf/1915416/message.aspx,感谢作者 一.Bootloader的引入从前面的硬件实验可以知道,系统上电之后,需要一段程 ...
- u-boot懂你并不难
转载:http://blog.chinaunix.net/uid-28236237-id-3865045.html u-boot第一阶段分析(一) u-boot 第一阶段分析(二) u-boot 第二 ...
随机推荐
- (转)Android项目重构之路:架构篇
去年10月底换到了新公司,做移动研发组的负责人,刚开始接手android项目时,发现该项目真的是一团糟.首先是其架构,是按功能模块进行划分的,本来按模块划分也挺好的,可是,他却分得太细,总共分为了17 ...
- 解决AJAX跨域:1、利用JSONP;2、JS设置Header
一.利用JSONP: 首先来看看在页面中如何使用jQuery的ajax解决跨域问题的简单版: $(document).ready(function(){ var url='http://localho ...
- IntelliJ IDEA 创建 java Maven项目
1.下载安装Maven 下载官网:http://maven.apache.org/download.cgi 下载解压到当前目录并建立LocalWarehouse文件夹,该文件夹为自己的文件仓库做存储. ...
- Apache2.4 与 php7.1.6的链接
首先Apache已经安装成功,在浏览器中能够打开再下载php 我的Apache安装版本为Apache2.4.26 x64 vc14 所以我php也应该是vc14编译的 php下载地址为 http:// ...
- java调用机器上的shell脚本
java调用机器上的shell脚本,可以这样方便的通过shell脚本调用本机的C.C++等程序 Process process = null; Runtime runTime = Runtime.ge ...
- RESTful最佳实践
哲学 不要为了RESTful而RESTful 在能表达清楚的情况下,简单就是美 接口路径设计 接口设计原则 URI指向的是唯一的资源对象 示例: 指向ID为yanbo.ai的Account对象 GET ...
- Ubuntu12.04 Bugzilla 和 TestOpia的安装步骤
1. 安装apache User@ubuntu:$ sudo apt-get install apache2 注:安装完以后能够通过http://192.168.128.128/ 来訪 ...
- js 终止 for 循环
1.break语句会使运行的程序立刻退出包含在最内层的循环或者退出一个switch语句. 2.for循环如果是多层循环 可以将循环命名,跳出指定的循环. first://需要将循环命名 for(var ...
- Vue props 单向数据流
1.props通信 注意:DOM模板的驼峰命名props要转为短横分割命名. <!DOCTYPE html> <html lang="zh"> <he ...
- 使用 Gradle 实现一套代码开发多个应用
代码地址如下:http://www.demodashi.com/demo/11297.html 在文章 使用 Gradle 对应用进行个性化定制 中,我们能够针对一个应用的正式服.测试服.超管服等其他 ...