EDN首页   博客首页 用户登陆  |  注册
aaa
发表于 2009/6/30 19:39:41

1

关于投票

Linux驱动入门

 

Linux驱动入门

写驱动,其实主要就是三件事:

1、实现struct file_operations中的函数。

一般至少需要实现六个:

int (*open) (struct inode *, struct file *);

int (*release) (struct inode *, struct file *);

ssize_t (*read) (struct file *, char __user *, size_t, loff_t);

ssize_t (*write) (struct file *, const char __user, size_t, loff_t);

loff_t (*llseek) (struct file *, loff_t, int);

int (*ioctl) (struct inode *, struct file *, unsigned int, unsigned long);

2、实现两个模块中必须的函数:

static int __init my_init(void);

static void __exit my_exit(void);

模块,无外乎就是多了init和exit这两个函数,可以把驱动程序中实现的函数加载进内核中,和把驱动程序从内核中卸载。

3、写一个加载模块的脚本,里面要在用insmod加载了驱动模块之后,

用mknode创建/dev中相应的文件。今后用户操作设备时都是通过访问/dev中的设备文件进行的。

系统分类: 嵌入式  |  用户分类: 驱动学习  |  标签: Linux驱动  |  来源: 转贴  | 

点击查看原文

发表评论 阅读全文(268) | 回复(0)

发表于 2009/6/30 19:11:53

1

关于投票

Linux驱动调试技术

 

Linux驱动调试技术


1. printk

在头文件<linux/kernel.h>中定义了8种可用的日志级别字符串:

KERN_EMERG
用于紧急事件消息,它们一般是系统崩溃之前提示的消息。

KERN_ALERT
用于需要立即采取动作的情况。

KERN_CRIT
临界状态,通常涉及严重的硬件或软件操作失败。

KERN_ERR
用于报告错误状态;设备驱动程序会经常使用 KERN_ERR 来报告来自硬件的问题。

KERN_WARNING
对可能出现问题的情况进行警告,这类情况通常不会对系统造成严重问题。

KERN_NOTICE
有必要进行提示的正常情形。许多与安全相关的状况用这个级别进行汇报。

KERN_INFO
提示性信息。很多驱动程序在启动的时候,以这个级别打印出它们找到的硬件信息。

KERN_DEBUG
用于调试信息。

每个字符串(以宏的形式展开)代表一个尖括号中的整数。整数值的范围从0到7,数值越小,优先级就越高。

没有指定优先级的printk 语句默认采用的级别是DEFAULT_MESSAGE_LOGLEVEL,这个宏在文件kernel/printk.c中指定为一个整数值。在 Linux 的开发过程中,这个默认的级别值已经有过好几次变化,所以我们建议读者始终指定一个明确的级别。

系统分类: ARM  |  用户分类: 驱动学习  |  标签: LINUX调试  |  来源: 转贴  | 

点击查看原文

发表评论 阅读全文(303) | 回复(0)

Total , Page /