请教NIOSII移植uclinux后如何查看寄存器 以及中断问题 交叉编译环境 参考nioswiki上uClinux的移植方法 在ep2c5上移植uClinux已经成功,并DM9000和以太网传输已经正常(都是照着别人的做而已),想做个简单的PIO中断,未果 不知该如何调试 请各位大虾们指导我!!我很郁闷 代码如下(参考的华清远见的linux并且看了linux文件夹下面一些其他的源码)裸奔时中断程序完全正常 头文件 参考了几个文件 把他们包含的头文件都整一起了 #include <linux/init.h> #include <linux/fs.h> #include <linux/major.h> #include <linux/module.h> #include <linux/capability.h> #include <linux/uio.h> #include <linux/interrupt.h> #include <linux/ioport.h> #include <linux/cdev.h> #include <linux/poll.h> #include <linux/sched.h> #include <linux/version.h> #include <linux/miscdevice.h> #include <linux/types.h> #include <linux/slab.h> #include <linux/ioport.h> #include <linux/fcntl.h> #include <asm/io.h> #include <asm/uaccess.h> #include <asm/system.h> #include <linux/delay.h> #include "system.h" #define start0 0xf1//这两个控制字是为了启动外部定时发生中断的电路 #define start1 0x00 //这地方声明了 字符型设备的几个方法 其实这几个函数都没用 //应该起作用的仅仅是模块加载函数 ssize_t SCR_open(struct inode *inode ,struct file *file ); ssize_t SCR_release(struct inode *inode ,struct file *file); ssize_t SCR_read(struct file *file ,char *buf ,size_t count ,loff_t *fops); ssize_t SCR_write(struct file *file ,char *buf ,size_t count ,loff_t *fops); ssize_t SCR_ioctrl(struct inode *inode ,struct file *file,unsigned int cmd ,long data);
struct file_operations SCR_ctrl_ops= { open: SCR_open, read: SCR_read, write: SCR_write, ioctl: SCR_ioctrl, release: SCR_release, }; static irqreturn_t play(int irq, void* id) //中断函数 就这么简单咯! 我只要看到零就行了 天啊 { printk(KERN_ALERT "0"); } static int __init hello_init(void) { int ret = -ENODEV; volatile unsigned int i,j,k,frame,pos,source; //注册设备 ret = register_chrdev(241,PIO_1_NAME,&SCR_ctrl_ops); if(ret < 0) { printk("hello module init error %d\n",ret); } else { printk("hello module init success \n"); } outw(0xffffffff,PIO_1_BASE+2);//打开PIO1的MASK outw(0,PIO_1_BASE+3); //清除CAP
ret=request_irq(PIO_1_IRQ,&play,SA_INTERRUPT, "/dev/ctrl","241"); printk("\n-----------------------\nret=%x\n-----------------------\n",ret); //申请中断 outb(start0,PIO_BASE); outb(start1,PIO_BASE);//启动外部会定时发生中断的电路
return ret; }
|