spi ioctl无效参数解决
方法一:
struct spi_ioc_transfer tr; /* 这种写法一定要赋初值 */
memset(&tr,0,sizeof(struct spi_ioc_transfer));
tr.tx_buf = (unsigned long)tx;
tr.rx_buf = (unsigned long)rx;
tr.len = sizeof(tx);
tr.delay_usecs = delay;
tr.speed_hz = speed;
tr.bits_per_word = bits;
方法二:
struct spi_ioc_transfer tr1 =
{
.tx_buf = (unsigned long)tx,
.rx_buf = (unsigned long)rx,
.len = sizeof(tx),
.delay_usecs = delay,
.speed_hz = speed,
.bits_per_word = bits,
};
执行操作//SPI_IOC_MESSAGE(1)的1表示spi_ioc_transfer的数量
ret = ioctl(fd, SPI_IOC_MESSAGE(1),&tr); //ioctl默认操作,传输数据
方法一如果没有添加memset会导致ioctl无效的参数,方法二不会
原因分析:
通过跟踪spi驱动发现,可以调用read和write实现半双工通讯,如果使用ioctl那么就是全双工。然而全双工函数内部会判断变量spi_ioc_transfer的所有值,如果没有赋值初始值,那么编译器会赋值随机值,那么驱动程序会报错无效的参数。
第二种方法赋值在内核驱动中比较常见,编译器会给没有手动赋值的成员变量赋值为0,第一种方法没有赋值编译器会赋值为随机值
在应用层,一般会使用ioctl(fd, SPI_IOC_MESSAGE(2), xfer);来进行读写一起的操作.在声明xfer后,必须初始化为0
结构体赋值还可以采用冒号方式,在定义结构体类型时使用冒号时代表位域的概念
spi ioctl无效参数解决相关推荐
- vs2005下,回发或回调参数无效的解决方法
vs2005下,"回发或回调参数无效"的解决方法 还是前几天发现的问题,原来在vs2003下使用的ajax无刷新联动代码,放到vs2005的项目后就会出现错误 回发或回调参数无效. ...
- C++ 读取文件时报错“将一个无效参数传递给了将无效参数视为严重错误的函数”解决方法
** C++ 读取文件时报错"将一个无效参数传递给了将无效参数视为严重错误的函数"解决方法 最近在运行工程时需要读取stl网格文件,但是在运行时发现报错如下: 但是之前运行过一个测 ...
- 关于ImageMagick出现无效参数(invalid parameter)的解决方法
关于ImageMagick出现无效参数(invalid parameter)的解决方法 参考文章: (1)关于ImageMagick出现无效参数(invalid parameter)的解决方法 (2) ...
- 手写logback_springboot logback调整mybatis日志级别无效的解决
springboot logback调整mybatis日志级别无效的解决 现象 在日志配置文件 logback-spring.xml 中,无论怎么修改级别,mybatis 的 sql 日志都会打印出来 ...
- vue 执行函数this_在vue中使用回调函数,this调用无效的解决
let self = this //使用新变量替换this,以免this无效 //updatestudentinfotoserver是一个将本身部分数据异步上传的接口,接收三个参数,其中第一个是数据, ...
- ioctl 函数 参数 详解
2019独角兽企业重金招聘Python工程师标准>>> ioctl 函数 参数 详解 2009-04-24 11:55 ioctl函数 本函数影响由fd参数引用的一个打开的文件. # ...
- ajax异步获取右侧html,Ajax异步获取html数据中包含js方法无效的解决方法
Ajax异步获取html数据中包含js方法无效的解决方法 页面上使用js写了一个获取后台数据的方法 function data() { var tab = $("#dic") $. ...
- 【C++】VS中读写操作(fclose.cpp)引发中断——将一个无效参数传递给了将无效参数视为严重错误的函数
[C++]VS中读写操作(fclose.cpp)引发中断--将一个无效参数传递给了将无效参数视为严重错误的函数 遇到的问题 跑数据测试程序时,突然跳出报错中断信息,显示触发断点,错误如下图所示. 但是 ...
- 0x0FF0ED76 (ucrtbased.dll) (Project5.exe 中)处有未经处理的异常: 将一个无效参数传递给了将无效参数视为严重错误的函数。 出现了
void drop(int a)//一个删除deque容器中元素的函数{deque<int>::iterator it;it = kn.begin();kn.erase(it+a);cou ...
最新文章
- 无需标注数据集,自监督注意力机制就能搞定目标跟踪
- Java程序 实验小全
- Y项目逸事之中国人设计的全球模板
- Git Gui for Windows的建库、克隆(clone)、上传(push)、下载(pull)、合并(转)
- Xamarin XAML语言教程构建ControlTemplate控件模板 (四)
- ORACLE 数据迁移
- 实现 通过数据库里一个字段值相等 则把 他合为一条数据
- using 关键字有两个主要用途
- EOS开发dApp前需要了解的五件事
- R语言中文社区10篇最火的文章 | 2017大盘点
- 一连三问 !!! 什么是内存对齐?内存对齐的原因是什么?内存对齐的好处是什么?
- python写数据到hive_Python数据篇之Pyhive
- 计算机专业数字逻辑,大学计算机专业数字逻辑课程试卷及答案(4份)
- 软件工程的完整生命周期
- 【大数据】一图了解大数据发展历程
- Intel无线网卡linux,Deepin 15.8/Ubuntu 18.04用intel无线网卡9260ac速度跑不满的解决
- 【论文翻译】The Quantum Internet: Networking Challenges in Distributed Quantum Computing
- computer-06 其它
- ARFoundation入门1.0 什么是AR
- Kony 如何获取Android context
热门文章
- 人体工程学游戏椅行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)
- 2.4 FrozenLake使用cross-entropy方法
- IntelliJ Idea SpringBoot 数据库增删改查实例
- 章丘谋定大葱功能性-农业大健康·万祥军:不当村官当会长
- 三层架构学习的困难_浅谈C/S和B/S架构的工作原理及优缺点
- 天津高一计算机会考,09天津高中计算机会考复习.doc
- [win10] airpods2 蓝牙连接时卡顿、断连、无声
- python输入两个列表a和b、利用内置函数zip()_2nd Python基础语法
- 1)编写Animal接口,接口中声明run()方法; 2)定义Bird类和Fish类实现Animal接口; 3)编写Bird类和Fish类的测试程序,并调用其中的run()方法
- 阿里云javaweb开发环境搭建(一)(jdk+Tomcat)