
以装载和卸载模块为例:
1、首先输入代码
#include <linux/init.h>
#include <linux/module.h>
2、然后输入下方的代码:
static int my_init(void)
{
return 0
}
static void my_exit(void)
3、然后在输入下方的代码:
{
return
}
module_init(my_init)
module_exit(my_exit)这样就完成了。
这是LCD的参数,VBPD(vertical back porch):表示在一帧图像开始时,垂直同步信号以后的无效的行数,对应驱动中的upper_margin;
VFBD(vertical front porch):表示在一帧图像结束后,垂直同步信号以前的无效的行数,对应驱动中的lower_margin;
VSPW(vertical sync pulse width):表示垂直同步脉冲的宽度,用行数计算,对应驱动中的vsync_len;
HBPD(horizontal back porch):表示从水平同步信号开始到一行的有效数据开始之间的VCLK的个数,对应驱动中的left_margin;
HFPD(horizontal front porth):表示一行的有效数据结束到下一个水平同步信号开始之间的VCLK的个数,对应驱动中的right_margin;
HSPW(horizontal sync pulse width):表示水平同步信号的宽度,用VCLK计算,对应驱动中的hsync_len;
这些是必须要知道的,这是基础啊!是lcd驱动的硬件方面的知识。
Linux驱动上ioctl函数上的cmd是由一个32位字段组成的,分为4个部分:1)type
类型或叫幻数,8位
2)number
序数,8位
3)direction
方向,表示是由内核空间到用户空间,或是用户空间到内核空间
4)size
大小,表示需要读写的参数大小
Linux内核一般会自动地过滤到一些不合法的cmd定义,比如你自己定义的1,2,
cmd为1,2没有type、没有number,没有direction,也没有size,Linux内核自动过滤掉你的ioctl请求,你的ioctl根本就没有到驱动ioctl上就被返回错误了。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)