ioctl

“inappropriate ioctl for device”

匿名 (未验证) 提交于 2019-12-03 01:07:01
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试): 问题: I have a Perl script running in an AIX box. The script tries to open a file from a certain directory and it fails to read the file because file has no read permission, but I get a different error saying inappropriate ioctl for device . Shouldn't it say something like no read permissions for file or something similar? What does this inappropriate ioctl for device message mean? How can I fix it? EDIT: This is what I found when I did strace . open("/local/logs/xxx/xxxxServer.log", O_WRONLY|O_CREAT|O_APPEND|O_LARGEFILE, 0666) = 4 _llseek(4, 0,

broadcom 6356s模组驱动

匿名 (未验证) 提交于 2019-12-03 00:37:01
模组broadcom 6356s 蓝牙wifi双模 wifi驱动的通用的软件架构 分为两部分,上面为主机端驱动,下面是我们之前所说的firmware 其中固件部分的主要工作是:因为天线接受和发送回来的都是802.11帧的帧,而主机接受和传送出来的数据都必须是802.3的帧,所以必须由firmware来负责802.3的帧和802.11帧之间的转换 当天线收到数据,并被firmware处理好后会放在一个buffer里,并产生一个中断,主机在收到中断后就去读这个buffer WiFi芯片内部有一个小系统,用来运行802.11协议,此部分代码就叫Firmware。有些芯片(例如 broadcom)的Firmware是以文件的形式存放的,有些芯片(例如 realteck)的Firmware是做到驱动代码中的。 WiFi芯片工作前,需要host先下载Firmware文件到WiFi芯片中,此部分工作在WiFi驱动中完成。 Broadcom WLAN模块同样存在着一个至关重要的文件:bcmdhd.cal,该文件定义了针对WLAN模块的NV值 Firmware与Nvram文件存放于external/wlan_loader/firmware/目录中,最终被编译到系统的/system/etc/firmware WLAN Module工作的3种模式 (3)P2P Broadcom WLAN

CAN FD简介

匿名 (未验证) 提交于 2019-12-03 00:32:02
CAN FD简介 1 CAN FD简介   在汽车领域,随着人们对数据传输带宽要求的增加,传统的CAN总线由于带宽的限制难以满足这种增加的需求。此外为了缩小CAN网络(max. 1MBit/s)与FlexRay(max.10MBit/s)网络的带宽差距,BOSCH公司推出了CAN FD。 CAN FD(CAN with Flexible Data rate)继承了CAN总线的主要特性。CAN总线采用双线串行通讯协议,基于非破坏性仲裁技术,分布式实时控制,可靠的错误处理和检测机制使CAN总线有很高的安全性,但CAN总线带宽和数据场长度却受到制约。CAN FD总线弥补了CAN总线带宽和数据场长度的制约,CAN FD总线与CAN总线的区别主要在以下两个方面:   1. 可变速率:CAN FD采用了两种位速率。从控制场中的BRS位到ACK场之前(含CRC分界符)为可变速率,其余部分为原CAN总线用的速率。两种速率各有一套位时间定义寄存器,它们除了采用不同的位时间单位TQ外,位时间各段的分配比例也可不同;   2. 新的数据场长度:CAN FD对数据场的长度作了很大的扩充,DLC最大支持64个字节,在DLC小于等于8时与原CAN总线是一样的,大于8时有一个非线性的增长,所以最大的数据场长度可达64字节。 1.1 CAN FD数据帧帧格式   CAN FD数据帧在控制场新添加EDL位、BRS位

unlocked_ioctl与compat_ioctl

匿名 (未验证) 提交于 2019-12-03 00:19:01
1、compat_ioctl:支持64bit的driver必须要实现的ioctl,当有32bit的userspace application call 64bit kernel的IOCTL的时候,这个callback会被调用到。如果没有实现compat_ioctl,那么32位的用户程序在64位的kernel上执行ioctl时会返回错误:Not a typewriter 2、如果是64位的用户程序运行在64位的kernel上,调用的是unlocked_ioctl,如果是32位的APP运行在32位的kernel上,调用的也是unlocked_ioctl 文章来源: unlocked_ioctl与compat_ioctl

TX2之WDT看门狗测试程序

匿名 (未验证) 提交于 2019-12-02 23:43:01
参考: https://developer.toradex.cn/knowledge-base/watchdog-(linux) 1 背景 看门狗,又叫watchdog timer,是一个定时器电路,一般有一个输入,叫喂狗(kicking the dog/service the dog),一个输出到MCU的RST端,MCU正常工作的时候,每隔一段时间输出一个信号到喂狗端,给 WDT清零,如果超过规定的时间不喂狗(一般在程序跑飞时),WDT定时超过,就会给出一个复位信号到MCU,使MCU复位。防止MCU死机. 看门狗的作用就是防止程序发生死循环,或者说程序跑飞。 看门狗分硬件看门狗和软件看门狗。硬件看门狗是利用一个定时器电路,其定时输出连接到电路的复位端,程序在一定时间范围内对定时器清零(俗称“喂狗”),因此程序正常工作时,定时器总不能溢出,也就不能产生复位信号。如果程序出现故障,不在定时周期内复位看门狗,就使得看门狗定时器溢出产生复位信号并重启系统。软件看门狗原理上一样,只是将硬件电路上的定时器用处理器的内部定时器代替,这样可以简化硬件电路设计,但在可靠性方面不如硬件定时器,比如系统内部定时器自身发生故障就无法检测到。当然也有通过双定时器相互监视,这不仅加大系统开销,也不能解决全部问题,比如中断系统故障导致定时器中断失效。 2 TX2看门狗模块 在英伟达官方文档中

Get USB disk drive letter by device path or handle

别来无恙 提交于 2019-12-02 21:56:42
问题 My goal is to write a c-dll (compiled with MinGW) that is able to search for certain models of USB sticks connected to the computer and deliver the serial number, the vendor ID, the product ID and the drive letter. I have searched on the internet for several hours know but could not find an approach that works for me. I am using the Setup Api to get a list of all connected USB devices. For each USB device I get a path that looks like this: \?\usb#vid_048d&pid_1172#00000020370220#{a5dcbf10

系统调用IO和标准IO

匿名 (未验证) 提交于 2019-12-02 21:56:30
Ŀ¼ open close read write lseek ioctl 在Linux中一切皆文件,文件操作在Linux中是十分重要的。为此, Linux内核提供了一组用户进程与内核进行交互的接口用于对文件和设备进行访问控制,这些接口被称为系统调用。 系统调用对于应用程序最大的作用在于: 以统一的形式,为应用程序提供了一组文件访问的抽象接口,应用程序不需要关心文件的具体类型,也不用关心其内部实现细节。 常用的系统调用IO函数有5个:open、close、read、write、ioctl,此外还有个非系统调用IO函数lseek,系统调用IO都是不带缓冲的IO。 open open用于创建一个新文件或打开一个已有文件,返回一个非负的文件描述符fd。 0、1、2为系统预定义的文件描述符,分别代表STDIN_FILENO、STDOUT_FILENO、STDERR_FILENO。 #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> //成功返回文件描述符,失败返回-1 int open ( const char * pathname , int flags , ... /* mode_t mode */ ); flags参数一般在O_RDONLY、O_WRONLY和O_RDWR中选择指定一个

linux 嵌入式看门狗使用

匿名 (未验证) 提交于 2019-12-02 21:56:30
linux看门狗使用很简单,在应用层使用,只需要ioctl设置一下溢出时间,既可以使用看门狗,定时喂狗即可 前提是kernel支持看门狗 Device Drivers ―> 配置好好后,即可make 应用层的使用,直接上代码 #include <stdio.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <errno.h> #include <pthread.h> #include <sys/ioctl.h> #include <stdlib.h> #include <unistd.h> #include <fcntl.h> #include <sys/time.h> #include <unistd.h> #include <time.h> #include <getopt.h> #include <sys/signal.h> //watchdog #define WATCHDOG_IOCTL_BASE 'W' struct watchdog_info { unsigned int options; /* Options the card/driver supports */ unsigned int firmware_version; /* Firmware version

重读APUE(4)-fcntl和ioctl的区别

有些话、适合烂在心里 提交于 2019-12-02 21:13:48
fcntl(File Control)-文件控制 ioctl(In/Out Control)-I/O控制 1. fcntl 作用于文件,提供对文件的基础控制; ioctl 作用于文件和设备对象,一般用来向设备发送命令,或者控制设备属性; 2. fcntl 是系统预先定义好的命令选项,不能自定义; ioctl 可以通过驱动程序自定义,驱动程序中可以通过file_operations->unlocked_ioctl实现针对特定设备的定制命令控制; 来源: https://www.cnblogs.com/wanpengcoder/p/11762723.html

Linux设备驱动程序 之 ioctl

六眼飞鱼酱① 提交于 2019-12-02 19:32:51
ioctl 除了读取和写入设备之外,大部分驱动程序还需要另外一种能力,即通过设备驱动程序执行各种类型的硬件控制,通常这种需求使用ioctl方法支持,该方法实现了同名的系统调用; 在用户空间,ioctl系统调用的原型如下: 1 int ioctl(int d, int request, ...); 原型中的可变参数不是数目不定的一串参数,而只是一个可选参数;可选参数的具体格式依赖于控制命令,也就是第二个参数;某些控制命令不需要参数,某些需要一个整数参数,某些需要一个指针参数;使用指针参数可以向ioctl传递任意数据,这样设备可以与用户空间交换任意数量的数据; ioctl系统调用内核中的定义如下: 1 SYSCALL_DEFINE3(ioctl, unsigned int, fd, unsigned int, cmd, unsigned long, arg) ioctl在file_operations中的函数原型如下: 1 long (*unlocked_ioctl) (struct file *, unsigned int, unsigned long); 2 long (*compat_ioctl) (struct file *, unsigned int, unsigned long); 大多数ioctl的实现都包含了一个switch语句来根据cmd参数选择对应的操作