请选择 进入手机版 | 继续访问电脑版
搜索
查看: 3967|回复: 2

【ID2888】参赛手记二--Zedboard Linux系统下IP核中断-定时器为例

[复制链接]

7

主题

30

帖子

111

积分

初级会员

Rank: 2

积分
111
发表于 2015-7-8 20:56 | 显示全部楼层 |阅读模式
本位为OpenHW原创文章,转载请注明:OpenHW社区+链接+作者网名

1,添加AXI_TIMER IP核,并将中断引脚添加到GIC;
2,从图中我们可以看到中断控制器为AXI_TIMER分配了一个中断号为87;
3,在设备树里为AXI_TIMER添加外设描述,如下:
    axi_timer@42800000 {
    compatible = "xlnx,axi_timer-1.03.a";
    reg = <0x42800000 0x10000>;
    interrupts = <0 37 1>;
      interrupt-parent = <&gic>;
};
其中关键部分是interrupt=<0,0x37,2>,第一个数字表示类型(GIC_PPI或GIC_SPI),第二个是中断号(这个中断号并不是物理中断号)(0x37+32=87),第三个表示触发方式,详细信息查阅《ARM-LINUX学习笔记》文档第十三章。
4,编写驱动程序,驱动需要完成三个关键任务:
Ø 注册中断服务。在linux内核中用于申请中断的函数是request_irq(),函数原型在Kernel/irq/manage.c中定义:
int request_irq(unsigned int irq,irq_handler_t handler,
unsigned long irqflags, const char *devname, void *dev_id)
irq是要申请的硬件中断号。
handler是向系统注册的中断处理函数,是一个回调函数,中断发生时,系统调用这个函数,dev_id参数将被传递给它。
irqflags是中断处理的属性,若设置了IRQF_DISABLED (老版本中的SA_INTERRUPT,本版zhon已经不支持了),则表示中断处理程序是快速处理程序,快速处理程序被调用时屏蔽所有中断,慢速处理程序不屏蔽;若设置了IRQF_SHARED (老版本中的SA_SHIRQ),则表示多个设备共享中断,若设置了IRQF_SAMPLE_RANDOM(老版本中的SA_SAMPLE_RANDOM),表示对系统熵有贡献,对系统获取随机数有好处。(这几个flag是可以通过或的方式同时使用的)
devname设置中断名称,通常是设备驱动程序的名称在cat /proc/interrupts中可以看到此名称。
dev_id在中断共享时会用到,一般设置为这个设备的设备结构体或者NULL。
request_irq()返回0表示成功,返回-INVAL表示中断号无效或处理函数指针为NULL,返回-EBUSY表示中断已经被占用且不能共享。
可采用命令:cat /proc/interrupt查看中断号。
Ø 向系统注册设备驱动程序。
int register_chrdev(unsigned int major,const char *name,
struct file_operations *fops);
    其中,major是为设备驱动程序向系统申请的主设备号,如果为0则系统为此驱动程序动态地分配一个主设备号。name是设备名。fops就是前面所说的对各个调用的入口点的说明。
此函数返回0表示成功。返回-EINVAL表示申请的主设备号非法,一般来说是主设备号大于系统所允许的最大设备号。返回-EBUSY表示所申请的主设备号正在被其它设备驱动程序使用。如果是动态分配主设备号成功,此函数将返回所分配的主设备号。如果register_chrdev操作成功,设备名就会出现在/proc/devices文件里,可采用命令cat /proc/devices查看。
Ø 启动定时器。
5,在成功的向系统注册了设备驱动程序后(调用register_chrdev()成功后),就可以用mknod命令来把设备映射为一个特别文件,其它程序使用这个设备的时候,只要对此特别文件进行操作就行了。
采用命令建立设备节点:mknod /dev/namec major 0
采用命令加载驱动:insmodaxi_timer.ko
6,编写应用程序。(驱动程序和应用程序存放在文件夹../ARM双核资料/Zynq-Linux-Timer中断)


本位为OpenHW原创文章,转载请注明:OpenHW社区+链接+作者网名
1.png

Zynq-Linux-Timer中断.zip

578.98 KB, 下载次数: 321

回复

使用道具 举报

901

主题

2703

帖子

8万

积分

论坛元老

Rank: 8Rank: 8

积分
82017
发表于 2016-2-17 10:03 | 显示全部楼层
回复 支持 反对

使用道具 举报

0

主题

1

帖子

8

积分

新手上路

Rank: 1

积分
8
发表于 2017-5-2 22:23 | 显示全部楼层
没下成功反而扣光了钱
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

站长推荐上一条 /2 下一条

QQ|小黑屋|手机版|Archiver|OpenHW技术社区

GMT+8, 2018-12-10 22:10 , Processed in 0.110650 second(s), 12 queries , MemCache On.

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表