(最近开始学习Linux驱动编程,为了方便总结就把信息简单的归纳下来了。由于初学,技术很欠缺,欢迎纠正错误的地方)
OS :linux
cpu :s3c2440
开发板:TQ2440
先制作一个驱动的基本构架:
#define MAYOR 0
#define DEV_NAME "myled"
static int DevNum = 0;
static int leds_open (struct inode *inode, struct file *file);
{}
static int leds_ioctl (struct inode *, struct file *, unsigned int, unsigned long);
{}
static struct file_operations led_fop= {
.owner = THIS_MODULE;
.open = leds_open;
.ioctrl = leds_ioctl;
};
static int __init s3c2440_leds_init(void)
{
int ret;
DevNum = register_chrdev( MAYOR, DEV_NAME, &led_fop);
if( DevNum<0 )
{
printk(DEV_NAME" can't register major number\n");
return DevNum;
}
printk(DEV_NAME" initialzed\n");
return 0;
}
static int __exit s3c2440_leds_exit(void)
{
if( DevNum>0)
{
unregister_chrdev( DevNum, DEV_NAME);
}
}
module_init(s3c2440_leds_init);
module_exit(s3c2440_leds_exit);