ubuntu虚拟机重启后,共享文件夹无法生效 7、重启完再次查看共享文件夹目录,之前设置的共享文件夹已经生效。1、首先确认共享文件夹是开启的,且是挂载的。原因:可能是对应的驱动在重启后并没有安装。6、确认共享文件夹设置并开启,重启。3、创建一个fuse模块。
解决vmware tools更新报错 当我安装vm tools的时候,报了这个("连接到更新服务器时发生证书错误,请检查您的Internet 设置或与你的系统管理员联系"),并且虚拟机上的安装vmtools的选项是灰色的时候。:SSL证书依赖于系统时间。如果系统时间不正确,可能会导致证书验证失败。命令:date,看输出的时间是否与ubuntu的系统时间一致。:更新服务器的证书可能过期或被系统认为是不可信的。:可能存在网络连接问题,导致无法正确连接到服务器。再次安装vm tools。
C语言 ---- typeof 总之,`typeof`是一个强大的编译器扩展,可以在某些情况下提高代码的可读性和可维护性,但使用时要注意它的限制和依赖性。- 当需要获取表达式的类型,并且代码只会在支持`typeof`的编译器上编译时,可以考虑使用`typeof`关键字。这里,`y`将会被声明为`int`类型,因为`typeof(x)`会被替换为`int`。- 在编写宏时,`typeof`可以帮助捕获参数的类型,以便进行类型安全的操作。这将创建一个类型为表达式`expression`的变量`var`。1. **获取表达式的类型:**
GPIO sysfs接口配置GPIO管脚,GPIO测试中断驱动步骤 如果一个gpio管脚可能并不需要这么麻烦,因为一时间只可能有一个管脚的中断,但是我当时写的是可以同时支持配置3个gpio管脚,因此我觉得比较麻烦,就没有用锁,而是直接在中断处理函数,在函数里对中断号进行一些处理,判断对应的中断是否来源此时正在去使能的中断号,同时enable_irq之前也做了判断。之前是写过一个测试驱动,在加载驱动的时候,是可以配置哪一个gpio管脚、并且可以配置gpio中断、输入输出方向,是否中断屏蔽,甚至还有去毛刺的功能,可通过加载驱动配置对应的寄存器实现。
SPI开源工具 (2)加载spidev.ko的bufsiz(缓存)默认是4096个字节,这个大小确实会影响spi的传输,我尝试过加载驱动的时候增大,timeout就不会出现了,但是这个大小也是有限制的,我理解应该是不能超过你的可用内存大小,但是具体是多少就不知道了。2、spidev_test是一个用户态工具,源码在linux已开源,通过/dev/下生成的spidev节点,系统调用内核的接口去实现spi的通信。(3)通过参数指定和物理环回这两个方法通过spidev_test命令输出的结果是不一样的。
C语言 ---- 强制类型转换 3、char *型转换为int *型的时候,结果会变,因为占用的空间不同,char型只占一个字节,int型占4个字节,转换成int型之后,由于char型的数据只有一个字节,所以还有3个字节的数据需要补上,因此会导致结果变了。但是再从int *型转换为char *型,结果又有变回一样的,归根到底还是两个类型占用的空间不一样。像malloc的返回值为void *型,所以必须要强制类型转换。1、强制类型转换最好是显式转换。2、void *型不可以初始化。
IOMUX实现管脚切换 如图所示,芯片内部集成各个模式,通过IOMUX实现管理,跟GPIO的pinmux是类似的,IOMUX是通过配置对应寄存器不同的值切换不同的模式,根据不同的模块协议去发送对应的脉冲模拟对应的模块。对外只有一个pad引脚(真实可见的)。IOMUX的作用就是可以节省芯片资源,通过一个管脚实现多个低速总线模块的功能,甚至还能解决I2C挂死的问题(具体可参考我I2C防挂死方案的博客)。
USB协议学习笔记 内核中使用结构 struct usb_host_endpoint 来描述,该结构包含真是的端点信息在另一个结构中(struct usb_endpoint_descriptor)每个USB设备都必须有一个控制端点(端点0),每个端点的方向是固定且是单向的(除了端点0)。主机到从机为OUT端点,从机到主机为IN端点。Linux提供了一个子系统叫USB核,便于驱动与USB核的交互。USB通信的基本方式就是端点,主机跟端点的数据传输就是管道(pipe)。接口(interface)端点(endpoint)
GPIO power button 通过GPIO物理按键(按下按键),向CPLD发送信号,CPLD通知CPU触发中断,调用内核对应的中断处理函数实现shutdown。如实现方案有问题可提出建议,该博客只是个人参与过该方案的一个浅浅的理解,记录一下而已。GPIO实现power button功能。GPIO节点信息可通过BIOS上报。
modprobe和insmod区别 modprobe会默认把该驱动的依赖的驱动都加载了,modprobe还会去到对应驱动的目录下找到该驱动,不需要指定绝对路径。insmod需要指定绝对路径,并且不会把依赖的驱动加载,需要手动加载。可通过modinfo i2c.ko查看该驱动依赖的驱动。指令:insmod i2c.ko。指令:modprobe i2c。
zcat查看操作系统配置项 zcat /proc/config.gz | grep XXX(需要查询的CONFIG)m:编译成驱动,通过加载驱动可把对应模块加载进内核。通过这个命令可看出内核里对应的配置项的值。加载:insmod XXX.ko。卸载:rmmod XXX.ko。n:没有设置该配置项。
I2C防挂死方案 只需要配置寄存器,可切换不同的模块,通过按照发送对应模块协议发送对应的脉冲去模拟对应的总线信号。1、CPU读取对端数据(如果是往对端写数据,总线是CPU拉着的,这时候CPU异常复位,总线也会跟着复位,触发不了挂死)在I2C总线通信的时候,如果对端器件没有复位端,在通信过程中CPU异常,导致数据没传输完,可能会造成类似挂死的状态。1、CPU异常复位可在使用i2ctransfer读取对端数据的时候,配置软复位寄存器触发挂死。5、该方案只是一个更优化的方案,是一个可选方案,并不是一个必须方案。