10 2015 档案

摘要:通过这几天的学习发现驱动的框架感觉都差不多,一般分为以下几个步骤:分配一个结构体struct x *x = amlloc();设置结构体的参数硬件寄存器file_operations注册卸载不同之处就是设置这一环节,lcd的驱动的框架就是这么回事,只不过设置的各项参数比较多。lcd的设置项包括固定参... 阅读全文
posted @ 2015-10-11 10:00 丿踏遍青山人未老 阅读(243) 评论(0) 推荐(0)
摘要:写一下个人对驱动分层的理解,简单的说将驱动分层也就是将驱动中硬件操作的代码和软件处理的代码分为两部分,软件相关的代码较稳定,硬件相关的代码可能因硬件的变动而做出相应调整。这样做的好处是便于编写大型的驱动,好比我们的编程中写的函数将功能模块化,模块化的好处这里就不说了。 以JZ2440开发板的点... 阅读全文
posted @ 2015-10-10 10:40 丿踏遍青山人未老 阅读(1005) 评论(0) 推荐(0)
摘要:1.声明input_dev结构体 static struct input_dev *buttons_dev;2.init函数中分配input_dev结构体并对其设置、注册/* 1. 分配一个input_dev结构体 */ buttons_dev = input_allocate_device... 阅读全文
posted @ 2015-10-10 09:50 丿踏遍青山人未老 阅读(258) 评论(0) 推荐(0)
摘要:1.首先构造file_operations结构体,并写出相关函数static struct file_operations first_drv_fops = {.owner = THIS_MODULE, /* 这是一个宏,推向编译模块时自动创建的__this_module变量 */.open = ... 阅读全文
posted @ 2015-10-10 09:06 丿踏遍青山人未老 阅读(257) 评论(0) 推荐(0)
摘要:应用程序注册信号处理函数 my_signal_fun();应用程序获取应用PID并告诉驱动 fcntl(fd, F_SETOWN, getpid());//获取pid int oflags = fcntl(fd, F_GETFL); fcntl(fd, F_SETFL, oflags|FAS... 阅读全文
posted @ 2015-10-08 15:43 丿踏遍青山人未老 阅读(249) 评论(0) 推荐(0)
摘要:保存局部变量传递参数(当函数传递的参数超过4个时使用栈传递参数)保存寄存器的值 阅读全文
posted @ 2015-10-06 11:49 丿踏遍青山人未老 阅读(198) 评论(0) 推荐(0)
摘要:初始化的全局变量:数据段局部变量:栈malloc:堆未初始化的全局变量:bss段 阅读全文
posted @ 2015-10-06 10:59 丿踏遍青山人未老 阅读(162) 评论(0) 推荐(0)