登录社区云,与社区用户共同成长
邀请您加入社区
sdio在linux中的位置drivers/mmc里面结构很清晰cardcorehostcard 是 卡host 是 sdio 控制器(适配器)core 是 card 和 host 中用的函数用户空间的sdio(提起这个词,好久没有说过了,感觉离linux越来越远,稍微有些伤感)wit@vexpress:/ # ls /dev/mmcblk0/dev/mmc...
linux spi 驱动入门之自发自收
linux(ubuntu22.04、fedora36)安装nvidia显卡驱动
linux PCIE驱动开发
linux内核编译:make menuconfig 理解
首先创建一个中间设备包含两个属性节点 loading 和 data向上层发送 FIRMWARE 固件下载 event 事件上层监听到 FIRMWARE 启动固件下载,依次遍历 firmware_dirs 数组中的目录找到固件。首先往 loading 节点下发 1 表示准备下载,然后将固件通过 data 目录下发到内核,发完之后向 loading 节点写 0 表示下载完成。
编译petalinux报pl.dtsi错误
首先给出filp的结构体:struct filestruct file { union { struct list_head fu_list; //文件对象链表指针linux/include/linux/list.h struct rcu_head fu_rcuhead; //RCU(Read-Copy Update)是Linux 2.6内核中新的锁机制 } f_u; struct p
本文主要进行media_device的注册过程分析,包括对media_device_register、media_devnode_register函数的分析。
linux设备中initcall
脉宽控制(PWM)操作像不断循环开关,这一功能常用于控制伺服电机、灯光控制、电压调节等。
pci usb reset
clangd插件配置vscode_linux开发环境,告别找不到头文件,实现函数跳转#linux内核,驱动开发
关键词:linux、驱动、usb、phy同以太网类似,USB芯片也分为Host Controller部分(主机控制器/设备控制器)和PHY部分(收发器) 两大部分组成。USB 的 PHY 与以太网的 PHY 类似,用于数字信号和电气信号的转换。主机控制器Controller部分主要实现USB的协议和控制,内部逻辑主要有 MAC层,CSR层,FIFO层等。USB PHY负责最底层的信号转换,作用类似
linux编译报错:./include/linux/bits.h:6:10: fatal error: asm/bitsperlong.h: No such file or directory
3.2 情况二:如果某次的传输cs_change 是1的话,表面影响片选,若该次传输不是消息的最后一次传输,则在本次传输结束后会立即将片选设置为无效状态,延时10us再变为有效状态,再进行下一下传输;如果本次传输是最后一次传输,则不会把片选设置为无效,一直保持有效直到下一个消息传输开始。3.1 情况一:所有的传输都是cs_change 是0的话,整个消息处理传数据过程cs都是在有效状态,完成传输后
lsmod 命令,用于列出当前 linux 系统中加载的模块。当驱动开发人员编写好驱动代码,并生成驱动代码对应的驱动模块后,可以通过 insmod xxx.ko 将驱动模块(.ko)加载到 linux 操作系统中。最后,通过 lsmod 命令就可以看到 xxx.ko 已经加载到 linux 系统当中了。
这里提供了个在linux下运用DMA让gpio产生可控脉冲数量的思路。
本文将带大家学习如何使用设备树编写一个LED的驱动程序。我这里使用的开发板是百问网的imx6ull。使用设备树来编写驱动程序极大的方便了我们写驱动程序,如果不使用设备树去编写驱动程序的话那只能使用寄存器操作硬件。有了设备树后操作硬件就变得非常简单了。...
linux 内核版本 v4.19嵌入式平台rv1109 , 文中代码出处。CCF背后的主要思想是统一和抽象分布在不同SoC时钟驱动程序中的类似代码。这种标准化的方法引入了时钟提供者和时钟消费者的概念:提供者是Linux内核驱动程序,它连接到框架并提供对硬件的访问,从而根据SoC数据表提供(使这些对消费者可用)时钟树(由于可以转储整个时钟树);消费者是通过公共API访问框架的Linux内核驱动程序或
中断驱动程序(tasklet,workqueue,thread_irq)
本文先介绍一下ida和idr的原理和实现的过程,后面再进行详细的源码分析,如果只是想了解大致的实现过程,阅读本文的ida和idr原理这部分就足够了。
作者: baron博客: baron-z.cn本文分析总结 mtk 平台的充电框架, 平台mt8786, 系统Android12, 内核版本. mtk 的充电包含这几个部分,: 给电池充电, 以及系统供电的芯片, 包含 ichg 充电电流 vbus 充电电压, ocv 截止电压等: 管理电池的基本信息, 电量, 充电电流等: 快冲算法相关: 通用适配器驱动, 统一 sink 的接口为 mtk 的标
linux驱动开发中jiffies的使用
Linux SD卡驱动开发(一) —— SD 相关基础概念https://blog.csdn.net/zqixiao_09/article/details/51039378Linux SD卡驱动开发(二) —— SD 卡驱动分析HOST篇https://blog.csdn.net/zqixiao_09/article/details/5103...
ST7789的驱动移植成功后,还需要添加Framebuffer的支持,进行硬件接口的抽象化,通过对Framebuffer的读写来直接对显存进行操作
dev_get_drvdata()与dev_set_drvdata()的用法
linux引入regmap是为了统一管理内核的i2c,spi等总线,将i2c、spi驱动做了一次重构,把I/O读写的重复逻辑在regmap中实现。只需要初始化时指定总线类型、寄存器位宽等关键参数,即可通过regmap模型接口来操作器件寄存器。将等抽象出统一接口等接口,从而提高代码的可重用性。regmap是在linux内核为减少慢速I/O驱动上的重复逻辑,提供的一种通用接口来操作底层硬件寄存器的模型
i2c接口的oled液晶屏Linux驱动
imx6q 双通道lvds屏幕设备树驱动笔记
从代码可以看出对于 dev 来说名字是一个非常重要的参数,首先使用 init_name 作为dev->kobj 的名字同时将 init_name 设置为空,如果 init_name 初始为空则使用 “bus->dev_nam + dev->id” 作为dev->kobj 的名字,如果设备没有设置名字则直接返回错误。
linux-headers是开发内核模块和驱动程序的必要工具。
ps:使用unlink只会删除软连接,不会删除文件本身,比较安全,所以推荐使用unlink。ps:使用rm同时会删除掉软连接和目标文件本身,也可以加个-i来询问用户是否要删除文件。ln -sunlink rm
linux驱动中probe函数是怎么调用的
owner = THIS_MODULE中,表示该文件操作结构体所属的模块是当前的模块,即当前代码所在的模块是该文件操作结构体的所有者。注意,在ile_operations结构体中,所有者就是内核,而不是用户层的代码。这样做可以确保正确的资源管理和模块引用计数。引用计数是一种内存管理技术,用于跟踪共享资源被引用的次数,这里不做深入讨论。.owner是所有者的意思,表示这个模块的所有者是谁。
Linux的RTC框架的分析和使用笔记
//完整接收size长度的数据,如果我们这时候登录到linux,会神奇的发现,像 /etc, /lib ,/bin ,/usr/lib 等目录就已经存在,而且里边有对应的文件了。当然,同样的,bios引导阶段,会加载linux的引导程序,这个一般都是grub引导程序(当然可能也有其他引导程序,但是目前以grub为主),但是linux和windows的启动过程,有非常巨大的区别,这就造成了上面的第2
component架构主要的逻辑编写在内核源码的driver/base/component.c最后系统应该呈现出来的是这样的组织:上面呈现了3种对象:component、master、component_match可以看到无论是master还是component都有他们的操作集ops。在component架构中,master在一个复杂驱动(drm或者alsa)中被看成在一个统筹的角色,各个comp
在传统的Linux驱动开发中,一般是以Linux内核为基础进行模块编译,但是以petalinux创建的工程系统,并没有找到对应的内核源码,不过赛灵思的官网肯定能找得到的。这里直接使用 petalinux 工具进行驱动的编写,而不使用在内核源码目录下进行编译,只不过 Petalinux 编译有点慢。这里是记录petalinux工具的使用。
在偶然的一次实验中(具体是pinctrl实验),我发现有些平台的pincontroller驱动起得很晚,而pinctrl client驱动却起得很早,在设备驱动模型中probe之前又会进行管脚复用的相关设置,按照常理来讲,这就产生了某种依赖性: pincontroller必须尽早启动,否则pinctrl client无法使用管脚复用功能,但实际上的效果并非如此,尽管pincontroller驱动起
设备都是以节点的形式“挂”到设备树上的,因此要想获取这个设备的其他属性信息,必须先获取到这个设备的节点。此函数获取 GPIO 编号,因为 Linux 内核中关于 GPIO 的 API 函数都要使用 GPIO 编号,此函数会将设备树中类似<&gpio5 7 GPIO_ACTIVE_LOW>的属性信息转换为对应的 GPIO 编号,此函数在驱动中使用很频繁!gpio:要申请的 gpio 标号,使用 of
字符设备驱动中ioctl的使用
linux i2c驱动开发之最简单入门:设备树与驱动的匹配
解决cc1: error: code model kernel does not support PIC mode的一种方法
windows使用vscode远程开发Linux及Uboot全套方法
mount操作是用来挂载文件系统,需要在特权级(CAP_SYS_ADMIN)下执行;将source指定的文件系统(通常是指向设备的路径名,但也可以是目录或文件的路径名,或者是虚拟字符串)附加到target中路径名指定的位置(目录或文件)。umount操作是用来卸载文件系统,同样需要在特权级(CAP_SYS_ADMIN)下执行;
应用请求休眠,系统进入休眠流程,此时如果设备触发了中断,中断处理程序中首先关闭中断,然后调度内核线程去处理work,但假如这个时候此work还未被调度到,系统就进入休眠了,那么这个设备就被永久关闭中断了,再也不能唤醒系统。休眠后系统卡住,组织串口来休眠,并开启相关打印;设置pm_debug_messages,打印来自系统的调试消息的暂停/休眠内核日志的基础结构。平台休眠的最后,会开启中断,用与响应
在使用非阻塞IO中,也常常使用poll、select、epoll系统调用。三者本质上一致:允许进程决定是否可以对一个或者多个打开的文件做非阻塞的读取或者写入。当使用poll(select、epoo样,下面以poll为例)时,会进行阻塞,知道打开给定的文件集有可以进行读取、写入。常常用于需要多个输入或者输出流而又不会阻塞于其中任何一个流的应用程序中。在应用程序中调用poll系统调用,会将所有给定的文
内核编译遇到的问题
驱动开发
——驱动开发
联系我们(工作时间:8:30-22:00)
400-660-0108 kefu@csdn.net