嵌入式驱动开发
嵌入式Serious
这个作者很懒,什么都没留下…
展开
-
linux使用spi读取传感器数值一直显示0
一、问题描述 最近在使用飞思卡尔的imx6ull的时候,要用spi协议实现和icm20608六轴传感器的通讯时,发现读取出来的数据都是0(即使读取的是ID寄存器)。二、解决方法1、上论坛查找问题,发现首先是忘记屏蔽掉设备树中冲突的引脚配置pinctrl_ecspi3:icm20608{ fsl,pins=< /* MX6UL_PAD_UART2_TX_DATA__ECSPI3_SS0*/ MX6UL_PAD_UART2_TX_DATA__GPIO1_...原创 2021-10-04 15:37:34 · 1958 阅读 · 5 评论 -
加载linux驱动模块时,终端提示一堆内存错误
一、问题描述 在写好一个linux驱动模块,在开发板上运行的时候,出现以下提示:WARNING: CPU: 0 PID: 100 at fs/sysfs/dir.c:31 sysfs_warn_dup+0x54/0x74()sysfs: cannot create duplicate filename '/class/led_class'Modules linked in: leddriver(O+) [last unloaded: leddriver]CPU: 0 PID: ...原创 2021-09-18 00:30:18 · 3112 阅读 · 0 评论 -
linux异步通知
一、异步的概念 在使用阻塞或者非阻塞IO时,都是由应用程序询问设备是否空闲。使用异步时,可以由设备驱动通知应用程序,设备变成可用状态。二、操作过程1、应用程序①注册信号处理函数sighandler_t signal(int signum, sighandler_t handler)signum:要设置处理函数的信号。handler :信号的处理函数。返回值:设置成功的话返回信号的前一个处理函数,设置失败的话返回 ...原创 2021-09-11 21:12:14 · 216 阅读 · 0 评论 -
linux系统下的非阻塞访问和阻塞访问
一、阻塞访问和非阻塞访问的定义及区别 在实际开发过程中,可能遇到对同一个设备驱动进行多次访问的情况,根据访问方式的不同,可以分为阻塞和非阻塞访问,这两种访问的区别体现在设备繁忙时,对于当前进程的处理方式不同。 阻塞访问: 当执行设备操作时,无法获得资源,则将该进程挂起,等到获得可以执行设备操作资源的时候再执行,等待期间处于休眠状态。一般通过等待队列来实现处理的先后顺序。 非阻塞访问:当执行设备操作时,无法获得资源,但...原创 2021-09-11 15:57:54 · 687 阅读 · 0 评论 -
编译linux驱动提示 bin/sh 权限不足
一、问题描述 在编译之前编译成功的linux驱动时,出现以下错误提示: /bin/sh :..............Permisson denied二、问题解决1、可能是没有给文件足够的权限,用以下命令给可读可写权限:sudo chmod 777 (+文件名)2、给了权限,发现还是不行: 看下是否有module.order这个文件,有的话删掉他就能编译成功了。...原创 2021-08-30 00:54:29 · 5009 阅读 · 0 评论 -
编译linux驱动时提示很多源码头文件和定义缺失
一、问题描述 在写好驱动程序要编译的时候,出现以下错误提示(中间也有很多类似头文件和定义缺失的提示,篇幅问题没有放上来):make -C /home/lzh/study_1/alientek-alpha/kernel-alientek M=/home/lzh/study_1/study_drivers/1_chardevbase modulesmake[1]: Entering directory '/home/lzh/study_1/alientek-alpha/kernel-a...原创 2021-08-21 21:39:47 · 3713 阅读 · 2 评论 -
linux驱动加载失败提示“invaild module format”
一、问题描述1、利用串口给开发板发指令,令其加载驱动,提示如下:提示的信息是版本不一致。2、在ubuntu里面加载,提示如下:3、即使保证了编译的linux源码和开发板运行的源码版本一致,依然不行:这里可以看到版本号都是4.1.15,但是还是提示版本不对。二、问题解决1、在网上查到即使内核版本一致,可能也会因为编译器版本不一致产生错误。2、在开发板查看驱动的编译器版本和Linux系统的驱动版本:发现这里可能是突破口,但是其实arm7对arm6向下兼..原创 2021-08-16 14:10:20 · 779 阅读 · 1 评论