linux驱动
文章平均质量分 61
-草原骑士-
嵌入式自学者
喜欢历史,哲学类
展开
-
驱动加载module license ‘unspecified‘ taints kernel问题
驱动加载 module license 'unspecified' taints kernel license声明 MODULE_LICENSE("GPL")原创 2022-11-03 21:36:44 · 1371 阅读 · 0 评论 -
void value not ignored as it ought to be
gcc中出现了“void value not ignored as it ought to be”错误,原因是你使用的一个函数的返回值类型是void,而你有对它进行了赋值处理。例如:int ret;ret=unregister_chrdev(MAJOR_NUM,"globalvar");转载 2011-11-06 19:45:58 · 1367 阅读 · 0 评论 -
linux设备驱动中ADC的使用
内核源代码arch\arm\plat-s3c24xx\s3c2410-clock.c/* standard clock definitions */static struct clk init_clocks_off[] = { { .name = "nand", .id = -1, .parent = &clk_h, .enable = s3c2410_clkco原创 2011-11-03 13:33:19 · 2443 阅读 · 1 评论 -
linux按键中断驱动程序——S3C2440
驱动程序#include#include#include#include#include //可以使用ptintk函数#include#include //与中断相关的头文件#include //字符设备的注册#include //出错检查函数#include //与内存分配相关#include //与中断原创 2011-10-31 20:32:06 · 2602 阅读 · 0 评论 -
在驱动程序中初始化寄存器
在写驱动程序时,我们经常需要初始化I/O端口或者其他一些寄存器,可以通过如下几个函数来实现。__raw_wretal(v,a) __raw_readl(a)outl(v,p) ——32位的写inl(p) ——32位的读outl_p(v原创 2011-10-31 20:50:00 · 1150 阅读 · 0 评论 -
LINUX设备驱动——输入子系统
输入子系统是所有I/O设备驱动的中间层,如何为下层众多各式各样的输入设备提供接口以及为上层提供了一个统一的界面? 根据内核代码,输入子系统中存在两个链表:input_dev_list、input_handler_list,当注册一个input_dev时就会把它挂到input_dev_list上,然后去匹配input_handler_list上的input_handler,相反,当注转载 2011-11-17 22:10:22 · 994 阅读 · 1 评论 -
中断处理程序、中断上下文中处理延时及一些函数的调用规则
1,中断处理程序中不能使用有睡眠功能的函数,如ioremap,kmalloc,msleep等,理由是中断程序并不是进程,没有进程的概念,因此就没有休眠的概念;2,中断处理程序中的延时可以用忙等待函数来代替,如ndelay,udelay,mdelay等,这些函数在实现上本质是根据CPU频率进行一定次数的循环;最好不要使用mdelay,因为毫秒延时对内核来说已经是非常大了。但是在中断处理程序中转载 2011-11-16 11:30:02 · 2281 阅读 · 0 评论 -
msleep函数使用——触摸屏驱动
再写一个触摸屏驱动的时候,在中端处理函数中想用一个ssleep函数让中断等待,以便观察结果,结果运行到这里出现错误。通过google和查书最终找到了答案。void msllep(unsigned int millisecs);unsigned long msleep_interruptible(unsigned int millisecs);void ssleep(unsigned i原创 2011-11-16 11:25:07 · 3366 阅读 · 0 评论 -
IRQ LOCK: IRQ0 is locking the system, disabled
是指IRQ0中断过于频繁的发生,有可能是中断标志清除有误,或者其他原因导致中断服务程序刚刚结束又进入中断。原创 2011-10-10 22:56:02 · 1271 阅读 · 0 评论 -
linux创建设备节点——class_creat()
从linux内核2.6的某个版本之后,devfs不复存在,udev成为devfs的替代。相比devfs,udev有很多优势,在此就不罗嗦了,提醒一点,udev是应用层的东东,不要试图在内核的配置选项里找到它;加入对udev的支持很简单,以作者所写的一个字符设备驱动为例,在驱动初始转载 2011-10-11 21:57:44 · 1184 阅读 · 0 评论 -
Linux驱动学习——2.4与2.6的一点区别
2.4内核注册驱动要用:int register_chrdev (unsigned int major, const char *name, struct file_operations *fops);2.4内核注销驱动要用:int unregister_chrdev转载 2011-10-11 21:49:27 · 890 阅读 · 0 评论 -
“passing argument 2 0f “request_irq” from incompatible pointer type”导致中断申请失败和模块无法加载
今天在些key的driver的时候。。。写完了编译出现一个warmming如下:warning: passing argument 2 of 'request_irq' from incompatible pointer type我的request_irq函数调用如下转载 2011-09-27 21:56:54 · 3682 阅读 · 0 评论 -
内核Kconfig与Makefile文件分析
内核是个复杂庞大的系统,对它进行配置、裁剪、编译原本非常的复杂和困难,但现在我们却只需要简单的2个命令make menuconfig和make uImage就搞定了,原因是在其背后有一个设计精巧的内核构造系统帮我们精确完成了各项任务。内核构造系统最关键的组成元素就是各个目录下的K转载 2011-08-22 21:33:26 · 1265 阅读 · 0 评论 -
编译Linux内核数
原文地址本文是参考了网上多篇帖子而写的算不上什么原创。唯一值得欣慰的只不过在本机上实现罢了。因为毕竟失败了几次。也因为本人是初学驱动编程 很多简单的问题在我来说是相当的困难的。望有识之士不要笑话。最后,希望本文能给刚学驱动而还没开头的人提供一些帮助。转载 2011-07-30 20:32:55 · 589 阅读 · 0 评论 -
[Linux 系统编程] container_of 的一点总结
看内核源码时,看到一个 宏定义,蛮有意思,ptr是成员变量的指针,type是指结构体的类型,member是成员变量的名字,container_of作用是在已知某一个成员变量的名字,指针和结构体类型的情况下,计算结构体的起始地址。用该成员变量的指针,减去它相对于结构体起始位置的偏移转载 2011-08-07 21:33:48 · 572 阅读 · 0 评论