首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏韦东山嵌入式

    2——Pinctrl子系统重要概念

    Pinctrl子系统重要概念 引入 无论是哪种芯片,都有类似下图的结构: 要想让pinA、B用于GPIO,需要设置IOMUX让它们连接到GPIO模块; 要想让pinA、B用于I2C,需要设置IOMUX 所以,要把引脚的复用、配置抽出来,做成Pinctrl子系统,给GPIO、I2C等模块使用。 BSP工程师要做什么? 看下图: 等BSP工程师在GPIO子系统、Pinctrl子系统中把自家芯片的支持加进去后,我们就可以非常方便地使用这些引脚了:点灯简直太简单了。 等等,GPIO模块在图中跟I2C不是并列的吗?干嘛在讲Pinctrl时还把GPIO子系统拉进来? 大多数的芯片,没有单独的IOMUX模块,引脚的复用、配置等等,就是在GPIO模块内部实现的。 所以这2子系统我们一起讲解。 16.1.2 重要概念 从设备树开始学习Pintrl会比较容易。

    98530编辑于 2021-12-08
  • 来自专栏韦东山嵌入式

    2——GPIO子系统重要概念

    当BSP工程师实现了GPIO子系统后,我们就可以: a. 在设备树里指定GPIO引脚 b. 在驱动代码中: 使用GPIO子系统的标准函数获得GPIO、设置GPIO方向、读取/设置GPIO值。 “#gpio-cells = <2>”表示这个控制器下每一个引脚要用2个32位的数(cell)来描述。 为什么要用2个数? 16.2.3 在驱动代码中调用GPIO子系统 在设备树中指定了GPIO引脚,在驱动代码中如何使用? 也就是GPIO子系统的接口函数是什么? GPIO子系统有两套接口:基于描述符的(descriptor-based)、老的(legacy)。 基于sysfs操作引脚: 以100ask_stm32mp157为例,它有一个按键,原理图如下: 那么PG2的号码是96+2=98,可以如下操作读取按键值: echo 98 > /sys/class

    2.2K20编辑于 2021-12-08
  • 来自专栏Rice嵌入式

    linux input子系统(2)《Rice linux 学习开发》

    上一篇文章写了《input子系统的的概念》。今天这篇文章主要分析input子系统的代码,input子系统作为一个字符设备存在kernel中,我们从input这个模块的入口函数开始讲起。 ③ 将新的new_fops赋值给file->f_op,此时的input子系统的file_operations为新挂载的input设备的file_operations。 图2-1 图2-22-3 《三》 input_table[]数组从以上的代码中都没有赋值,那么他在哪里赋值的呢? 其实input子系统也一样,驱动跟handle的注册也是没有优先顺序的。 图8-1 下一篇:Linux input子系统的驱动开发

    1.8K20编辑于 2022-05-09
  • 来自专栏LINUX阅码场

    WSL2:Windows 亲生的 Linux 子系统

    在上一篇文章中,我们主要聊了一下:在 Windows 系统中,安装 WSL 子系统。 文章在此:WSL:在 Windows 系统中开发 Linux 程序的又一神器 但是 WSL 只是长得像 Linux 而已,虽然在这个子系统中,我们可以执行 Linux 程序,但是到了底层,WSL 调用的还是 后来,微软终于放出了 WSL2 这个真正的 Linux 子系统,这是一个真正的 Linux 完整内核,与传统的虚拟机 VitualBox、VMWare 一样,但是它与宿主机的互操作性更好。 输入的指令是: wsl --set-version Ubuntu-18.04 2 这个步骤可能会遇到这样的问题: 解决方法:从微软的官网下载 WSL2 Linux 内核升级包,下载地址是: WSL2 --set-default version 2

    2.3K10发布于 2021-09-18
  • 来自专栏IOT物联网小镇

    WSL2:Windows 亲生的 Linux 子系统

    在上一篇文章中,我们主要聊了一下:在 Windows 系统中,安装 WSL 子系统。 文章在此:WSL:在 Windows 系统中开发 Linux 程序的又一神器 但是 WSL 只是长得像 Linux 而已,虽然在这个子系统中,我们可以执行 Linux 程序,但是到了底层,WSL 调用的还是 后来,微软终于放出了 WSL2 这个真正的 Linux 子系统,这是一个真正的 Linux 完整内核,与传统的虚拟机 VitualBox、VMWare 一样,但是它与宿主机的互操作性更好。 解决方法:从微软的官网下载 WSL2 Linux 内核升级包,下载地址是: WSL2 Linux 内核升级包 ? 也可以从文末的网盘中下载 下载之后,一路 Next 安装即可。 同时,把 WSL 的默认版本改为 2:wsl --set-default version 2。 此时,我们再执行指令 wsl -l -v 来查看一下,就变成 WSL2 版本了: ?

    4K40发布于 2021-08-13
  • 来自专栏txp玩Linux

    Linux V4L2子系统-videobuf2框架分析

    为此,Linux内核抽象出了videobuf2机制,用于管理存放视频图像的帧缓冲。videobuf2抽象层像一座桥梁,将用户空间和V4L2 driver连接起来。 虽然使用videobuf2会给驱动程序强加一些设计决策,但是使用它的收益是videobuf2可以减少驱动程序代码和保持V4L2子系统在用户空间API的一致性,显然使用videobuf2更为合理。 V4L2子系统属于内核的组件,也运行在内核空间,其采集的数据也保存在内核空间的内存中。应用程序无法直接访问内核空间的内存,需要借助一些方法才能访问。 struct v4l2_plane v4l2_planes[VIDEO_MAX_PLANES]; struct vb2_queue *vb2_queue; // 该vb2_buffer buffer); return 0; } 2、ioctl: V4L2子系统定义了很多ioctl命令供应用程序使用。

    2.1K70编辑于 2023-08-31
  • 来自专栏菜菜的技术博客

    Linux驱动之I2C子系统剖析

    总线速度有三种模式 标准模式 100kbps 快速模式 400kbps 高速模式 3.4Mbps I2C子系统框架 I2C设备驱动层:drivers/i2c/i2c-dev.c (通用型) 或者为特定设备定制的设备驱动 (比如E2PROM驱动) I2C核心层: drivers/i2c/i2c-coere.c I2C总线驱动层(主机控制器驱动层):drivers/i2c/busses/i2c-s3c2410.c I2C设备驱动层 I2C核心层 注册I2C总线 由内核开发人员编写的,不涉及具体硬件 给驱动编程人员提供编程接口 I2C总线驱动层 是I2C主机适配器的驱动程序 初始化I2C适配器(控制器) 实现操作方法:根据I2C操作时序进行操作 笔者会大体上对I2C子系统的源码进行分析,如若分析的有出入,还望指出。 I2C核心层 I2C核心层的实现位于drivers/i2c/i2c-core.c中,笔者从i2c_init函数开始分析。 ; // I2C主机控制器的操作方法 i2c->adap.retries = 2; i2c->adap.class = I2C_CLASS_HWMON | I2C_CLASS_SPD; i2c

    7.6K20编辑于 2022-11-15
  • 来自专栏学习有记

    SQL Server 代理进阶 - Level 2 :作业步骤和子系统

    图1 - 创建一个新的工作 现在点击Steps选项卡查看作业步骤,然后点击New ...打开New Job Step对话框(图2)。 ? 图2 - 创建一个新的工作步骤 我已经完成了这个工作中的步骤,在开始备份之前对master数据库进行完整性检查。我可以一步完成所有工作,但是要在步骤之间向您展示工作流程。 图7 - 作业已成功运行 作业子系统 有七个主要的工作子系统,你会使用。此数字不包括复制子系统,因为它们是特殊情况,通常这些作业步骤和作业是由复制组件创建的,而不是由DBA创建的。 如果你精通VBScript,这可能是一个方便的子系统,但是从SQL Server 2008开始,这个子系统已经被弃用,你应该使用PowerShell子系统。 许多不同的子系统是可用的,每个子系统都有不同的功能。在这个阶段的下一个步骤中,我将研究代理功能以增强作业步骤的安全性,以及Analysis Services的其他SQL代理子系统。 ----

    1.8K40发布于 2018-07-19
  • 来自专栏开源519

    pinctrl子系统

    1.概念介绍 Pinctrl子系统是驱动分离分层思想下的产物,硬件属性方面放在设备树dts中,其中关于设备所使用的的管脚配置,可以集中使用pinctrl。 其中设备树pinctrl节点添加可参考文档 kernel-4.14/Documentation/devicetree /bindings/pinctrl/pinctrl-mt65xx.txt 其中涉及到2个对象 2. 软件驱动 2.1 内部调用 内部调用指的是直接封装LED控制接口,供内部源码调用控制。 软件部分还是相同套路,先与设备树节点匹配成功。然后从节点属性拿数据。 2.2 查找pinctrl节点 (2)从节点中查找设备device结构体 of_find_device_by_node 获取pinctrl句柄,参数为此设备的device结构体。

    1.6K10发布于 2020-07-23
  • 来自专栏CU技术社区

    微软更新Linux子系统,编译WSL 2内核只需3步

    WSL 2是第二代Windows上的Linux子系统。相比第一代,它带来了如下新的变化: 文件系统性能提升,完整的系统调用兼容性。 安装WSL 2 安装WSL 2需要Windows 10版本是Build 18917或更高,首先先确认系统版本已升级。 在“启用或关闭Windows功能”中启用以下两个选项:Windows虚拟机平台、适用于Linux的Windows子系统。 启用这些更改后,重新启动计算机。 如果想让WSL 2成为默认架构,可以执行以下操作: wsl —set-default-version 2 这将使所有安装的Linux发行版初始化为WSL 2。 编译WSL 2内核 微软还在GitHub上更新了编译WSL 2内核的步骤,只需3步: 1、从微软商店安装最新的Ubuntu发行版 2、打开Ubuntu子系统,安装内核组件: sudo install build-essential

    2.4K10发布于 2019-10-25
  • 来自专栏量子位

    微软更新Linux子系统,编译WSL 2内核只需3步

    WSL 2是第二代Windows上的Linux子系统。相比第一代,它带来了如下新的变化: 文件系统性能提升,完整的系统调用兼容性。 安装WSL 2 安装WSL 2需要Windows 10版本是Build 18917或更高,首先先确认系统版本已升级。 在“启用或关闭Windows功能”中启用以下两个选项:Windows虚拟机平台、适用于Linux的Windows子系统。 启用这些更改后,重新启动计算机。 如果想让WSL 2成为默认架构,可以执行以下操作: wsl —set-default-version 2 这将使所有安装的Linux发行版初始化为WSL 2。 编译WSL 2内核 微软还在GitHub上更新了编译WSL 2内核的步骤,只需3步: 1、从微软商店安装最新的Ubuntu发行版 2、打开Ubuntu子系统,安装内核组件: sudo install build-essential

    2K60发布于 2019-07-17
  • 来自专栏txp玩Linux

    Linux V4L2子系统-Video设备框架分析

    一、概述: 在V4L2子系统中,Video设备是一个字符设备,设备节点为/dev/videoX,主设备号为81,次设备号范围为0-63。 ,最后减少v4l2_device的引用计数(一个v4l2_device可管理多个video_device,当v4l2_device的引用计数为0时,将进行注销工作)。 (2)进入到内核空间,访问字符设备struct file_operations中的方法。对于Vedio设备,该操作集合被V4L2子系统初始化为v4l2_fops集合。 (3)通过V4L2子系统提供的v4l2_fops集合,可直接调用底层驱动实现的Video主设备struct v4l2_file_operations方法,对于ioctl方法,则需要借助中间函数__video_do_ioctl (4)struct v4l2_file_operations和struct v4l2_ioctl_ops中的函数都可以通过v4l2_subdev_call调用Video从设备struct v4l2_subdev_core_ops

    1.4K42编辑于 2023-08-31
  • 来自专栏颜汐小屋

    Windows 11安装WSL 2子系统与常见错误处理

    图片Windows 11安装WSL 2子系统打开“控制面板 - 程序 - 启用或关闭 Windows功能”图片分别找到下面2个功能,并勾并确定。 适用于Linux的Windows子系统虚拟机平台点击确定后等待安装完毕并重启操作系统。 错误处理WslRegisterDistribution failed with error: 0x800701bc如果启动子系统时遇到“WslRegisterDistribution failed with error: x800701bc”这个错误,需要更新您的WSL子系统,只需要下载wsl_update_x64.msi安装更新即可。 Wsl/Service/0x800706f7”这个错误,只需要以管理员身份运行cmd,然后执行下面的命令即可:netsh winsock reset 结语以上是我在Windows 11上启用WSL 2子系统的过程和错误处理

    12K70编辑于 2023-09-11
  • 来自专栏韦东山嵌入式

    09_GPIO子系统与Pinctrl子系统的交互

    按理说: 一个引脚可能被用作GPIO,也可能被用作I2C,GPIO和I2C这些功能时相同低位的。 要用作GPIO,需要先通过Pinctrl把引脚复用为GPIO功能。 2. ,假设在GPIO子系统中全局编号为100103 GPIO1内部引脚编号为03,假设在GPIO子系统中全局编号为104107 假设我们要使用pin1_1,应该这样做: 根据GPIO1的内部编号1,可以换算为 Pinctrl子系统中的编号5 使用Pinctrl的函数,把第5个引脚配置为GPIO功能 2.2 数据结构 3. GPIO调用Pinctrl的过程 GPIO子系统中的request函数,用来申请某个GPIO引脚, 它会导致Pinctrl子系统中的这2个函数之一被调用:pmxops->gpio_request_enable

    1.2K10编辑于 2021-12-08
  • 来自专栏鸿蒙开发笔记

    OpenHarmony 移植案例与原理 - utils子系统之KV存储部件 (2)

    `1.OpenHarmony开发基础2.OpenHarmony北向开发环境搭建3.鸿蒙南向开发环境的搭建4.鸿蒙生态应用开发白皮书V2.0 & V3.05.鸿蒙开发面试真题(含参考答案) 6.TypeScript 【OpenHarmony】Uboot 驱动加载流程12.OpenHarmony构建系统--GN与子系统、部件、模块详解13.ohos开机init启动流程14.鸿蒙版性能优化指南.......4.1.4 `1.OpenHarmony开发基础2.OpenHarmony北向开发环境搭建3.鸿蒙南向开发环境的搭建4.鸿蒙生态应用开发白皮书V2.0 & V3.05.鸿蒙开发面试真题(含参考答案) 6.TypeScript 【OpenHarmony】Uboot 驱动加载流程12.OpenHarmony构建系统--GN与子系统、部件、模块详解13.ohos开机init启动流程14.鸿蒙版性能优化指南.......4、KV存储部件对应 【OpenHarmony】Uboot 驱动加载流程12.OpenHarmony构建系统--GN与子系统、部件、模块详解13.ohos开机init启动流程14.鸿蒙版性能优化指南.......4.2 读取键值

    24010编辑于 2025-06-14
  • 来自专栏一只程序原

    JVM内存与垃圾回收篇第2章类加载子系统

    2 章 类加载子系统 1、内存结构概述 如果自己想手写一个Java虚拟机的话,主要考虑哪些结构呢? 类加载器 执行引擎 完整框图: 2、类加载子系统 类加载器子系统作用 类加载器子系统负责从文件系统或者网络中加载Class文件,class文件在文件开头有特定的文件标识。 1; private static int c = 3; public static void main(String[] args) { int b = 2; number = 10; //linking之prepare: number = 0 --> initial: 10 --> 20 static { num = 2; = new Thread(r, "线程2"); t1.start(); t2.start(); }}class DeadThread { static {

    42230编辑于 2022-08-22
  • 来自专栏linux驱动个人学习

    Linux 时钟子系统

    一文搞懂 | Linux 时钟子系统 Clock 时钟就是 SoC 中的脉搏,由它来控制各个部件按各自的节奏跳动。比如,CPU主频设置,串口的波特率设置,I2S的采样率设置,I2C的速率设置等等。

    4.8K30编辑于 2022-10-31
  • 来自专栏嵌入式艺术

    TTY子系统初探

    一、TTY子系统介绍 1、TTY介绍 TTY,一词源于Teleprinter,译为电传打印机,在早起用来表示电脑终端的设备。 现在我们通常使用TTY,是各种(物理/虚拟)终端的统称! cbe366c77f71c68a0664f1805e7e5856 2、控制台终端 控制台终端包括:系统控制台、当前控制台、虚拟控制台。 在PC上,用户可以使用Ctrl + Alt + Fn切换,这种虚拟控制台对应tty1~n,其中:/dev/tty1代表第1个虚拟控制台;当使用Ctrl + ALT+F2进行切换时,系统的虚拟控制台为/dev /tty2 ,当前控制台(/dev/tty)则指向/dev/tty2 而比较特殊的是/dev/tty0,他代表当前虚拟控制台,其实就是当前所使用虚拟控制台的一个别名。 我们可以在命令行提示符下键入:echo "tekkaman" > /dev/ttyS1会把“tekkaman”发送到连接在ttyS1(COM2)端口的设备上。

    2.4K20编辑于 2023-01-18
  • 来自专栏铭心の博客

    PowerShadow——影子系统

    今天突然好奇传奇私服什么样,于是打算玩一下 但是又怕私服带病毒把电脑搞瘫了,然后就想起了以前用的一款还原软件(影子系统)。本文主要是分享一下这款软件。 影子系统作用及适用人群 1. 影子系统是什么? 影子系统是一款电脑还原软件,可以在重启后还原到某一个时间点。去过网吧的应该知道有的网吧无法保存文件,而且基本上不卡。 网吧之所以不卡就是因为有还原(指的是有盘网吧),网吧以前用的是万象网管+冰点还原(类似影子系统)。 2. 影子系统适用于那些人? 影子系统主要适用于喜欢折腾电脑但又怕折腾坏了、对电脑不熟悉(比如老年人和小孩儿)等人群。 影子系统安装前准备 未关闭软件及程序正常关闭及保存!未关闭软件及程序正常关闭及保存! 影子系统安装及使用 下载影子系统安装包,本站有提供 点我跳转。

    4.9K10编辑于 2024-12-20
  • 来自专栏嵌入式Linux系统开发

    Linux Led 子系统

    2、概述 led 子系统驱动框架: 所有 led 共性: 有和用户通信的设备节点 亮和灭 不同点: 有的 led 可能是接在 gpio 管脚上,不同的 led 有不同的 gpio 来控制 有的 led 可能由其他的芯片来控制(节约 cpu 的 pin,或者为了控制 led 的电流等) 可以设置亮度 可以闪烁 所以 Linux led 子系统把所有 led 的共性给实现了,把不同的地方留给驱动工程师去做 led 子系统是一个简单的 Linux 子系统 ,在目录 /sys/class/leds 下展示该子系统设备,每个设备都有自己的属性: brightness:设置 LED 亮度,范围 0 ~ max_brightness class/leds/led1/brightness cat /sys/class/leds/led1/brightness cat /sys/class/leds/led1/max_brightness 2、 闪烁 cat /sys/class/leds/led1/trigger 会看到 trigger_list [none] mmc0 mmc1 mmc2 timer 其中的 timer 这个 trigger

    1.9K30编辑于 2023-08-22
领券