驱动程序:为硬件设备创建相应的设备节点文件。创建设备文件时,规定好设备文件的使用方式。
应用程序:根据驱动程序规定的设备文件使用方式去控制硬件。
/dev目录下:对驱动程序熟悉的工程师可以使用,一个设备节点文件控制硬件全部特性。
/sys目录下:业余工程师使用,一个设备节点文件只控制硬件的一个特性。严格来说,它下面的文件是Linux内核导出到用户空间的硬件操作接口。
Linux系统引脚编号规则(针对i.MX6ull):(组号-1)*32+组内引脚编码。
例如GPIO1_19,组号为1,组内引脚编码为19。所有GPIO1_19再Linux内核的引脚编号为19。
/sys/class/gpio/export:导出GPIO子系统硬件操作接口。
/sys/class/gpio/gpio19/direction:控制芯片引脚的输入输出模式。in代表输入,out代表输出。
/sys/class/gpio/gpio19/value:控制芯片引脚的输出电平。1代表高电平,0代表低电平。
sudo echo 19 > /sys/class/gpio/export
sudo sh -c 'sudo echo out > /sys/class/gpio/gpio19/direction'
sudo sh -c 'sudo echo 1 > /sys/class/gpio/gpio19/value'
input子系统:按键、键盘、鼠标、触摸屏等。
struct input_event{
struct timeval time; //记录输入时间的时间戳
__u16 type; //记录输入事件的类型。如按键输入、坐标输入、特殊输入(EV_SYN),同步事件,提醒我们及时处理已经发生的完成输入事件
__u16 code; //记录输入类型的具体事件代号。如键盘发生按键输入类型事件时,记录键盘哪个键被按下
__s32 value; //记录事件的具体值。如按键输入类型事件,value为1代表按键被按下,为0代表案件被松开
};