下面是测试程序,在调用open之后,就看不到printf函数的输出了,也就是说能看到输出的Before open,却看不到After open!,既然能打印出Before open,串口设置应该没问题。可是不知为什么调用open函数之后,就看不到printf的输出了。而且open函数中的printk("<1>Here is led_open
"); 也只是打印出了"H?",而不是期望的"Here is led_open"。 麻烦大虾帮忙分析一下啊。
#include <stdio.h> #include <string.h> #include <malloc.h> #include <sys/types.h> #include <sys/stat.h> #include <sys/ioctl.h> #include <fcntl.h> #include <unistd.h> #include <signal.h> #include <fcntl.h>
int main(void) { int i=10,fd; rgdata=0xffffffff; printf("Before open
"); if((fd=open("/dev/leddrv",O_RDWR))==-1) { printf("open error
"); exit(1); } printf("After open!
"); while(i--) { rgdata=~rgdata; sleep(1); } close(fd); return 0; }
驱动程序中的open函数如下: static int led_open(struct inode *inode,struct file *file) { printk("<1>Here is led_open
"); rPUPE = 0xffff; //Disable pullup resister rPCONE=0x500; //Set PE5,PE6 to output return 0; }
|