首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Linux笔记(21)| platform总线驱动分析

    但是,实际项目开发中还有很多结构简单的设备,对它们进行控制并不需要特殊的时序。它们也就没有相应的物理总线,比如led、rtc时钟、蜂鸣器、按键等等,Linux内核将不会为它们创建相应的驱动总线。...在Linux里面用了几个宏来定义资源 ? 在嵌入式中,基本上没有IO地址空间,所以通常使用IORESOURCE_MEM。代码中是这样定义的。 ? 我们把宏一层层展开,就得到下面这样子: ?...> #include linux/mod_devicetable.h> #include linux/io.h> #include linux/cdev.h> #include linux/fs.h...devm_ioremap将获取到的寄存器地址转化为虚拟地址。...使用platform_set_drvdata函数,将LED数据信息存入在平台驱动结构体中pdev->dev->driver_data中。

    2.4K40

    高通GPIO驱动(DTS方式)

    比上面的方式多了许多配置GPIO的方式,例如配置电流(可以用于睡眠唤醒的功能),管理pin脚的复用,接口规格等功能;蜗窝科技的大牛们就有几篇写的很好: linux内核中的GPIO系统之(1):软件框架...linux内核中的GPIO系统之(2):pin control subsystem Linux内核中的GPIO系统之(3):pin controller driver代码分析 linux内核中的GPIO...系统之(4):pinctrl驱动的理解和总结 linux内核中的GPIO系统之(5):gpio subsysem和pinctrl subsystem之间的耦合 DTS代码: 1 device_node...//引用 6 ... 7 }; 驱动代码: 1      struct pinctrl *pinctrl = devm_pinctrl_get...pinctrl_select_state(pinctrl, pinctrl_state); //设置pinctrl的状态为'gpio_active 4 devm_pinctrl_put

    4.8K40

    Linux驱动开发新手必读 | 二、LED子系统——硬件驱动层

    二、LED子系统——硬件驱动层 上篇文章我们了解了子系统的框架,下面我们来分析驱动框架中每层的实现以及作用。...实现思路: 通过dev_get_platdata检索设备的平台数据,如果平台数据中的LED数量大于零,则使用devm_kzalloc为其分配内存空间,并且使用create_gpio_led进行初始化 如果平台数据不存在或...该结构体的信息大多由解析设备树获得,将设备树中label解析为name,gpios解析为gpiod,linux,default-trigger解析为default_trigger等 2.1.2 gpio_led_data...遍历每个子节点,并为每个子节点创建对应的LED设备 对于每个子节点,使用fwnode_property_read_string接口,读取设备树中相关的属性信息,如:label、linux,default-trigger...在sysfs中创建对应的文件节点。

    62640

    Linux Led 子系统

    内核中驱动维护者针对每种驱动设计一套【成熟的、标准的、典型的】驱动实现,并把不同厂家的同类硬件驱动中相同的部分抽出来实现好,再把不同部分留出接口给具体的驱动工程师来实现,这就叫驱动框架。...可能是接在 gpio 管脚上,不同的 led 有不同的 gpio 来控制 有的 led 可能由其他的芯片来控制(节约 cpu 的 pin,或者为了控制 led 的电流等) 可以设置亮度 可以闪烁 所以 Linux...led 子系统核心文件: driver/leds/led-class.c driver/leds/led-core.c driver/leds/led-triggers.c include/linux/...触发方式,如 heartbeat、mmc0、backlight、gpio delay_off、delay_on:trigger为timer时,LED亮灭的时间,单位ms kernel/include/linux...leds/led1/trigger 会看到 trigger_list [none] mmc0 mmc1 mmc2 timer 其中的 timer 这个 trigger 是 ledtrig-timer.c 中模块初始化的时候注册进去的

    50230

    Linux common clock framework(1)_概述

    面向的读者是platform clock driver的开发者,目的是掌握怎么借助clock framework管理系统的时钟资源; 第三篇为clock framework的内部逻辑解析,面向的读者是linux...概述 如今,可运行Linux的主流处理器平台,都有非常复杂的clock tree,我们随便拿一个处理器的spec,查看clock相关的章节,一定会有一个非常庞大和复杂的树状图,这个图由clock相关的器件...主要内容包括(不需要所有clk都支持): 3. common clock framework提供的通用API 管理clock的最终目的,是让device driver可以方便的使用,这些是通过include/linux...b)devm_clk_get,和clk_get一样,只是使用了device resource management,可以自动释放。...c)clk_put、devm_clk_put,get的反向操作,一般和对应的get API成对调用。

    97130

    I2C总线架构 之 总线驱动

    这种做法完全不适应Linux的通用性的设计理念,对于Linux来讲:同样的事情我只做一遍,向外提供接口,不管你是什么IIC设备挂载那条IIC总线上,都可以用。...因此,这就需要Linux在代码架构上有非常严谨的模块化设计。 架构设计 在Linux设计中,将I2C代码框架分为三个部分:I2C总线、I2C核心、I2C驱动。...i2c总线结构体 Linux在分层中,必不可少的将每一层模块封装成一个结构体,然后将结构体作为一个与外接交互的桥梁。...(&pdev->dev, NULL); ret = clk_prepare_enable(i2c_imx->clk); /* Request IRQ */ ret = devm_request_irq...然后利用i2c-core中APIi2c_add_numbered_adapter(&i2c_imx->adapter)将适配器adapter注册到内核中,在此过程中还会生成i2c_client,具体放到下一篇

    1.5K30

    Linux DRM 框架与实例分析

    1、DRM 框架 Linux 图像子系统涉及 GUI、3D application、DRM/KMS、hardware 等: 在 Linux display 驱动开发时,通常关注 FBDEV(Framebuffer...上述的这些组件,最终完成了一个完整的 DRM 显示控制过程,如下图所示: 上面 CRTC、Planes、Encoder、Connector 这些组件是对硬件的抽象,即使没有实际的硬件与之对应,在软件驱动中也需要实现这些...在驱动中 rockchip 的显示驱动使用 component 框架,显示驱动为 master,显示驱动下的设备称为 component。...rockchip-drm 匹配到设备树,会到设备树 dts 查找 ports 节点和 iommus 节点,使用 component_master_add_with_match 函数注册自己到 component 框架中,...在 rockchip 提供的显示驱动代码中,也有模拟 FB 设备的相关代码,参见 drivers/gpu/drm/rockchip/rockchip_drm_fb.c 文件,最终效果就是设备目录下,出现熟悉的身影

    1.7K10

    【Linux】关于Linux中的权限

    而Linux的文件类型和后缀无关(后缀名可以作为提示,用户可以使用后缀区分文件类型),但是对linux来说区分文件和文件本身的后缀是无关的(但是gcc等工具对文件后缀可能有要求)。...开始之前,我们输入ll指令,来看看前面10个字符代表什么意思: 在linux中,是通过ll显示的众多属性列中的第一列的第一个字符来区分文件类型的。...则无法用ls等命令查看目录中的文件内容....可写权限: 如果目录没有可写权限, 则无法在目录中创建文件, 也无法在目录中删除文件 所以这也是为什么系统规定目录的起始权限从777开始,所有的目录被创建出来,一般都要能够被进入 换句话来讲, 就是只要用户具有目录的写权限..., 用户就可以删除目录中的文件, 而不论这个用户是否有这个文件的写权限。

    7.2K20
    领券