开发板驱动学习

how things work by a series of component-connection。



试试mtk自带的函数和linux通用的函数

驱动里mt_eint_unmask(CUST_EINT_FP_NUM); 没有禁用

cat /sys/class/misc/mtgpio/pin | grep -E "PIN:| 65:| 66:| 67:| 68:| 0:| 80:"

开发板关闭mtkloger就不会有大量的内核log



spi返回值不同是因为cs脚没有控制好,短接mimo数据正确,

spi正常,但是生成校准数据很慢,看log是返回 jni A083_Static_Calibrate ret = 11 , 原因: write/ioctl方式写对没有, 或者cs脚没有拉到,或者spi速度太慢

用示波器看cs脚状态,或者mtk平台下cat /sys/class/misc/mtgpio/pin | grep -E "PIN:| 65:| 66:| 67:| 68:| 0:| 80:"

发现用write的方式生成校准数据正常,因为cs脚能正常拉低拉高,但是驱动里ioctl没有实现cs拉低拉高


<4>[ 436.632901]<0>-(0)[0:swapper/0]zsw tooan_eint_func

<4>[ 436.632851]<0>-(0)[0:swapper/0]zsw disable_interrupt

<4>[ 436.632977]<0> (0)[129:tooan_fp]zsw FPS triggered 222222 !!!!!!!

现在发现禁用中断没有起作用,但是驱动里已经执行了,所以猜测可能是驱动里又打开了,或者enable_irq(ex_spidev->irq); 没作用

mt_eint_mask(CUST_EINT_FP_NUM); 关闭中断

mt_eint_unmask(CUST_EINT_FP_NUM); 打开中断


ioctl 收发同时,读图时cs不停的拉低拉高,而且收(read)多于发(write)

<4>[ 787.873631]<0> (0)[2915:com.a083x32]zsw tooan_ioctl cmd=1075866368

<4>[ 787.874331]<0> (0)[2915:com.a083x32]zsw tooan_ioctl cmd=1075866368

<4>[ 787.875026]<0> (0)[2915:com.a083x32]zsw tooan_ioctl cmd=1075866368

<4>[ 787.875718]<0> (0)[2915:com.a083x32]zsw tooan_ioctl cmd=1075866368

<4>[ 787.876410]<0> (0)[2915:com.a083x32]zsw tooan_ioctl cmd=1075866368

<4>[ 787.877103]<0> (0)[2915:com.a083x32]zsw tooan_ioctl cmd=1075866368

<4>[ 787.877796]<0> (0)[2915:com.a083x32]zsw tooan_ioctl cmd=1075866368

<4>[ 787.878485]<0> (0)[2915:com.a083x32]zsw tooan_ioctl cmd=1073834753

<4>[ 787.878896]<0> (0)[2915:com.a083x32]zsw ioctl set_cs_high

<4>[ 787.896265]<0> (0)[2915:com.a083x32]zsw ioctl set_cs_low

<4>[ 787.896292]<0> (0)[2915:com.a083x32]zsw ID_IOCTL_DIS_IRQ num = 9

<4>[ 787.896327]<0> (0)[2915:com.a083x32]zsw tooan_ioctl cmd=1075866368

<4>[ 787.896404]<0> (0)[2915:com.a083x32]zsw tooan_ioctl cmd=1073834753

<4>[ 787.897583]<0> (0)[2915:com.a083x32]zsw ioctl set_cs_high

<4>[ 787.897721]<0> (0)[2915:com.a083x32]zsw tooan_ioctl cmd=-2147390719

<4>[ 787.898122]<0> (0)[2915:com.a083x32]zsw ioctl set_cs_low

<4>[ 787.898144]<0> (0)[2915:com.a083x32]zsw ID_IOCTL_DIS_IRQ num = 9

以前是通过板级文件配置,5.1以后都是通过配dts来控制设备节点。

probe 执行初始化,管脚初始化,

int gpio输入可以高低默认拉高,cs输出,可以高低,默认拉高,读图时拉低cs确定从机

gpio复用为其他特殊协议的io如i2c,spi时是需要配置模式的,mtk是mode_01,最基本的模式是mode_00,

释放资源

互斥锁

结构体调用

操作硬件寄存器

示波器

你可能感兴趣的