赞
踩
PCIE引起的系统无法启动完成
1. 外部晶振芯片的时钟输入是否异常,如果无时钟或者幅度异常,将导致 phy 无法锁定。
2. 检查PCIE供电电压 PCIE30_AVDD_0V9 和 PCIE30_AVDD_1V8 电压是否满足要求。
PCIE不使用时,必须屏蔽,否则启动卡在PCIE3*2附近不远处
&pcie30phy {
status = "disabled";
};
&pcie3x2 {
status = "disabled";
};
Linux中输入设备的事件类型有
EV_SYN 0x00 同步事件
EV_KEY 0x01 按键事件,如KEY_VOLUMEDOWN
EV_REL 0x02 相对坐标, 如鼠标上报的坐标
EV_ABS 0x03 绝对坐标,如触摸屏上报的坐标
EV_MSC 0x04 其它
EV_LED 0x11 LED
EV_SND 0x12 声音
EV_REP 0x14 Repeat
EV_FF 0x15 力反馈
EV_PWR 0x16 电源
EV_FF_STATUS 0x17 状态
更多看Linux开发指南 572页附近
container_of(ptr,type,number) 第一个参数是第三个参数的指针,返回值是第二个参数的指针。第三个参数是第二个参数的一部分
atomic 原子操作
__maybe_unused 可能不使用 。可以不定义指针函数,指向结构体指针
_IOWR (魔数, 基数,变量型 )
魔数 (magic number)
魔数范围为 0~255 。通常,用英文字符 "A" ~ "Z" 或者 "a" ~ "z" 来表示。设备驱动程序从传递进来的命令获取魔数,
然后与自身处理的魔数想比较,如果相同则处理,不同则不处理。魔数是拒绝误使用的初步辅助状态。
设备驱动程序可以通过 _IOC_TYPE (cmd) 来获取魔数。不同的设备驱动程序最好设置不同的魔数,但并不是要求绝对,
也是可以使用其他设备驱动程序已用过的魔数.
基(序列号)数
基数用于区别各种命令。通常,从 0开始递增,相同设备驱动程序上可以重复使用该值。例如,
读取和写入命令中使用了相同的基数,设备驱动程序也能分辨出来,原因在于设备驱动程序区分命令时使用 switch ,
且直接使用命令变量 cmd值。创建命令的宏生成的值由多个域组合而成,所以即使是相同的基数,也会判断为不同的命令。
设备驱动程序想要从命令中获取该基数,就使用下面的宏:
_IOC_NR (cmd)
通常,switch 中的 case 值使用的是命令的本身。
变量型
变量型使用 arg 变量指定传送的数据大小,但是不直接代入输入,而是代入变量或者是变量的类型,原因是在使用宏创建命令,
已经包含了 sizeof() 编译命令。比如 _IOR() 宏的定义是:
#define _IOR(type,nr,size) _IOC(_IOC_READ,(type),(nr),(_IOC_TYPECHECK(size)))
而 _IOC_TYPECHECK() 的定义正是:
#define _IOC_TYPECHECK(t) (sizeof(t))
设备驱动程序想要从传送的命令获取相应的值,就要使用下列宏函数:
_IOC_SIZE(cmd)
https://blog.csdn.net/csljl11/article/details/78621545
pm_stay_awake()和pm_relax()的意义
pm_stay_awake() 在中断里保持系统不进入睡眠 ,同时调用schedule_delayed_work(&delay_work, msecs_to_jiffies(10) )函数,
pm_relax()在下半部delay_work中,让系统自由进入睡眠。
https://blog.csdn.net/chizhang7815/article/details/100800761
gpio_desc of_get_named_gpio_flag(devicenode,name,index,&flag)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。