
子类__内核子系统篇
文章平均质量分 81
RK3399平台入门到精通系列之内核子系统篇
内核笔记
一直从业于半导体行业,曾为Linux内核开源文档社区提交过若干文档。
主要从事Linux、Android相关系统软件开发工作,负责Soc芯片BringUp及系统软件开发,喜欢阅读内核源代码,在不断的学习和工作中深入理解内存管理,进程调度,文件系统,设备驱动等内核子系统。
展开
-
RK3399平台开发系列讲解(DMA篇)深刻理解DMA
设备越来越多,数据传输的需求越来越复杂,使用的场景各不相同。加之显示器、网卡、硬盘对于数据传输的需求都不一样,所以各个设备里面都有自己的。特别是当传输的数据量比较大的时候,比如进行大文件复制,如果所有数据都要经过。可以是可以,不过这个发送的不是数据内容,而是控制信号。比如说,我们用千兆网卡或者硬盘传输大量数据的时候,如果都用。的等待,在很多时候,其实并没有太多的实际意义。就很有意思了,它既是一个主设备,又是一个从设备。设备的大量操作,其实都只是把内存里面的数据,传输到。设备来说呢,它又变成了一个主设备。原创 2022-10-09 23:39:35 · 2801 阅读 · 7 评论 -
RK3399平台开发系列讲解(GPIO子系统)4.3、详解GPIO子系统
从硬件角度来看,GPIO是功能,是引脚可以运行的模式。从软件角度来看,GPIO只不过是数字线,可以作为输入或输出使用,并且只能有两个值(1表示高电平,0表示低电平)。内核GPIO子系统提供在驱动程序中可以想象得到的设置和处理GPIO线路的所有功能。原创 2022-10-04 16:34:18 · 2157 阅读 · 4 评论 -
RK3399平台开发系列讲解(Pinctrl子系统)4.6、Pin Controller的实现
Pin Controller的注册原创 2022-05-17 23:05:23 · 1929 阅读 · 8 评论 -
RK3399平台开发系列讲解(input子系统)4.52、input子系统的实现原理
本节介绍input子系统的实现原创 2022-07-19 17:43:56 · 1652 阅读 · 9 评论 -
RK3399平台开发系列讲解(使用篇)Pinctrl子系统的介绍 - 视频介绍
Pinctrl子系统的使用介绍 - 视频介绍原创 2022-06-26 19:50:13 · 1737 阅读 · 7 评论 -
RK3399平台开发系列讲解(Regmap子系统)4.51、Regmap子系统
平台内核版本安卓版本RK3399Linux4.4Android7.1🚀返回专栏总目录文章目录一、Regmap子系统概述二、数据结构三、实现沉淀、分享、成长,让自己和他人都能有所收获!😄📢Regmap子系统详解。一、Regmap子系统概述内核版本3.1中引入了Regmap API,用于统一内核开发人员访问SPI/IIC设备的方式,无论是SPI设备还是IIC设备,只需要初始化,配置Regmap就可以通过Regmap读写设备。Regmap子系统主要提供如下两种功能...原创 2022-05-18 00:06:55 · 1743 阅读 · 7 评论 -
RK3399平台开发系列讲解(I2C子系统)4.50、I2C物理总线详解
I2C物理总线详解原创 2022-04-26 23:19:05 · 2336 阅读 · 9 评论 -
RK3399平台开发系列讲解(I2C子系统)4.49、I2C驱动详解
平台内核版本安卓版本RK3399Linux4.4Android7.1🚀返回专栏总目录文章目录一、什么是i2c总线二、Linux的i2c接口三、i2c总线驱动3.1、i2c_adapter3.2、i2c_algorithm3.3、i2c_msg四、i2c设备驱动4.1、i2c_client4.2、i2c_driver4.3、i2c_device_id沉淀、分享、成长,让自己和他人都能有所收获!😄📢i2c驱动详解一、什么是i2c总线i2c是“Inter-IC” ...原创 2022-04-25 23:06:32 · 2664 阅读 · 8 评论 -
RK3399平台开发系列讲解(TTY子系统)4.48、TTY子系统详解
TTY子系统详解原创 2022-04-19 22:11:14 · 2120 阅读 · 7 评论 -
RK3399平台开发系列讲解(I2C子系统)4.45、i2c-dev接口
i2c-dev接口原创 2022-04-17 23:55:04 · 1926 阅读 · 5 评论 -
RK3399平台开发系列讲解(I2C子系统)4.45、如何生成i2c_client
i2c总线不具备枚举能力, 因此, 需要使用合适的方式来注册i2c_client, 有多种方式可以实现这一目的。原创 2022-04-13 23:19:06 · 1871 阅读 · 6 评论 -
RK3399平台开发系列讲解(内核设备树原理)3.9、内核启动阶段获得dtb位置指针过程介绍
内核启动阶段获得dtb位置指针过程介绍原创 2022-03-31 23:16:52 · 4638 阅读 · 8 评论 -
RK3399平台开发系列讲解(IIO子系统)4.43、IIO数据的获取方式介绍
只有两种方法可以通过IIO框架访问数据:通过sysfs通道单次捕获,或通过IIO字符设备的连续模式(触发缓冲区)。原创 2022-03-28 22:31:06 · 2246 阅读 · 8 评论 -
RK3399平台开发系列讲解(IIO子系统)4.42、IIO子系统数据结构
本篇将介绍IIO数据结构。原创 2022-03-27 22:47:47 · 2974 阅读 · 7 评论 -
RK3399平台开发系列讲解(I2C子系统)4.40、I2C协议详解
今天将详细介绍I2C协议原创 2022-03-24 22:53:47 · 2961 阅读 · 8 评论 -
RK3399平台开发系列讲解(CCF子系统)4.39、CCF的使用介绍
一般情况下驱动开发人员不需要编写时钟驱动程序,而是通过api去调整设置时钟相关参数,本小节将对ccf子系统的api进行简单整理,以便于查阅了解如何调整时钟参数。原创 2022-03-20 22:20:55 · 1939 阅读 · 12 评论 -
RK3399平台开发系列讲解(IIO子系统)4.38、什么是IIO(Industrial I/O)
工业I/O (Industrial I/O,IIO)是专用于模数转换器 (ADC)和数模转换器(DAC)的内核子系原创 2022-03-20 19:23:54 · 3096 阅读 · 8 评论 -
RK3399平台开发系列讲解(SPI子系统)4.36、SPI子系统驱动框架详解
对于SPI的驱动框架,与I2C是大致一致的,也分为两层,控制器驱动程序层叫 spi_controller ,主要提供transfer函数,进行spi协议的收发。spi_controller也是基于 Platform 模型的,注册 spi_controller 时也会扫描一个链表进行注册设备,简直太相似了。另一层是设备驱动层,基于 spi_bus_type,在driver里则使用spi_read、spi_writer 等函数,最终也会调用到 controller->transfer 函数进行发送接收。原创 2022-03-15 23:46:30 · 3468 阅读 · 8 评论 -
RK3399平台开发系列讲解(Pinctrl子系统)4.4、Pinctrl与GPIO的关系
gpio子系统是pinctrl的client用户。原创 2022-03-14 23:47:44 · 2148 阅读 · 9 评论 -
RK3399平台开发系列讲解(Pinctrl子系统)4.5、Pinctrl子系统详解
gpio引脚除了作为普通输入输出端口之外还具有接入其他控制器的功能,例如gpio的pin可以作为uart、iic、spi等其他控制器的功能引脚,同时gpio还有上拉下拉,驱动能力以及速率等配置信息。一个soc里有几百个引脚,这些引脚的功能分配和特性配置是个繁琐的工作而且容易出现管脚复用冲突等问题还不容易查找到问题,而pinctrl正好是为了统一管理pin的功能分配的。原创 2022-03-14 00:08:37 · 3352 阅读 · 10 评论 -
RK3399平台开发系列讲解(I2C子系统)4.33、I2C通信过程介绍
I2C总线是由Philips公司开发的一种简单、双向二线制同步串行总线。它只需要两根线即可传送信息。它结合了 SPI 和 UART 的优点,您可以将多个从机连接到单个主机(如SPI那样),也可以使用多个主机控制一个或多个从机。原创 2022-03-13 01:43:46 · 2876 阅读 · 8 评论 -
RK3399平台开发系列讲解(SPI子系统)4.32、SPI通信过程介绍
SPI是一种常见的设备通用通信协议。它有一个独特优势就是可以无中断传输数据,可以连续地发送或接收任意数量的位。而在I2C和UART中,数据以数据包的形式发送,有着限定位数。原创 2022-03-13 00:57:29 · 8388 阅读 · 6 评论 -
RK3399平台开发系列讲解(内核子系统篇)2.35、资源分配request_resource介绍
request_resource资源分配原创 2022-01-09 23:32:27 · 1876 阅读 · 9 评论 -
RK3399平台开发系列讲解(内核入门篇)1.42、Linux 文件系统是怎么工作的?
同 CPU、内存一样,磁盘和文件系统的管理,也是操作系统最核心的功能。原创 2021-12-07 00:32:22 · 1720 阅读 · 8 评论 -
RK3399平台开发系列讲解(进程调度篇)14.7、Linux进程的调度
对于Linux操作系统来讲,它面对的 CPU 的数量是有限的,但是进程数目远远超过 CPU 的数目,因而就需要进行进程的调度,有效地分配 CPU 的时间,既要保证进程的最快响应,也要保证进程之间的公平。这也是一个非常复杂的、需要平衡的事情。原创 2021-11-21 13:03:10 · 1796 阅读 · 9 评论 -
RK3399平台开发系列讲解(Pinctrl子系统)4.9、pinctrl子系统之相关ops操作集
pinctrl_ops:提供有关属于引脚组的引脚的信息。pinmux_ops:选择连接到该引脚的功能。pinconf_ops:设置引脚属性(上拉,下拉,开漏,强度等)。原创 2021-08-20 23:50:00 · 2822 阅读 · 11 评论 -
RK3399平台开发系列讲解(内核子系统篇)2.3、IIC子系统之数据结构的抽象
文章目录Linux 对 IIC 的抽象Linux 对 IIC 的抽象i2c_adatper:描述一个实际的 IIC 物理硬件i2c_algorithm:函数指针集,钩子函数,用于描述特定 SoC 硬件的 IIC 模块产生通信波形的方法i2c_client:描述一个挂接到IIC 总线上的具体物理设备i2c_driver:用于描述一个IIC 设备的驱动...原创 2020-08-01 23:07:51 · 1836 阅读 · 9 评论 -
RK3399平台开发系列讲解(内核子系统篇)2.33、图解输入子之重要的结构体及工作流程
文章目录1、input子系统结构体之间关系2、input子系统工作流程2.1、设备驱动层2.2、事件处理层2.3、应用程序的 open 操作2.4、底层的事件发生时平台内核版本安卓版本RK3399Linux4.4Android7.11、input子系统结构体之间关系输入子系统主要涉及 input_dev, input_handler, input_handle 等数据结构,其中:input_dev 是物理输入设备的基本数据结构,包括设备相关的一些信息;input_.原创 2020-08-13 23:31:53 · 1955 阅读 · 9 评论 -
RK3399平台开发系列讲解(内核子系统篇)2.32、ALSA结构框图
ALSA结构框图原创 2020-08-06 02:40:04 · 2111 阅读 · 9 评论 -
RK3399平台开发系列讲解(内核子系统篇)2.31、图解PWM子系统框架
系列内容深入理解linux内核深入理解PWM子系统用户空间:shell脚本调节背光:#!/system/bin/shi=0while [ $i -le 255 ]do echo $i echo $i > /sys/class/backlight/backlight/brightness i=$((i+1)) usleep 100000...原创 2019-03-16 15:04:45 · 3570 阅读 · 8 评论 -
RK3399平台开发系列讲解(内核子系统篇)2.30、phy_device与net_device的连接
调用phy_connect接口进行phy_device、net_device的绑定时,可根据"fixed-0:phy_addr",在mdio_bus上查找对应的phy_device,从而完成phy_device与net_device的绑定。原创 2021-04-04 22:57:39 · 2725 阅读 · 12 评论 -
RK3399平台开发系列讲解(内核子系统篇)2.29、PHY驱动框架
文章目录phy_driver结构体分析phy驱动的初始化平台内核版本安卓版本RK3399Linux4.4Android7.1phy id的定义位置:kernel-4.14\drivers\net\phy\realtek.cstatic struct phy_driver realtek_drvs[] = {{ ... { .phy_id = 0x001cc916, .name = "RTL8211F Gi原创 2021-03-31 23:12:23 · 2474 阅读 · 12 评论 -
RK3399平台开发系列讲解(内核子系统篇)2.28、MDIO子系统之PHY ID的信息
__driver_attach()调用 driver_match_device()来鉴别 driver 和 device 是否匹配,而匹配主要分为两种方式:若 phy_driver{}内的 id_table 存在,则将 platform_driver{}内的 id_table->name 和 phy_device{}内的 name 进行匹配;若 phy_driver{}内的 id_table 不存在,则将 platform_driver{}内的 name 和 phy_device{}内的 name 进原创 2021-05-23 22:56:14 · 2750 阅读 · 9 评论 -
RK3399平台开发系列讲解(内核子系统篇)2.27、MDIO子系统概括
linux的mii management对应的mdio子模块原创 2021-05-23 21:57:08 · 2477 阅读 · 11 评论 -
RK3399平台开发系列讲解(内核子系统篇)2.26、MDIO子系统之结构体抽象
针对mii management,抽象为struct mii_bus;针对phy设备,抽象为struct phy_device;针对phy设备的驱动,抽象为struct phy_driver ;mdio_bus为总线类型。phy_device通过其drv指针,实现与phy_driver的关联与绑定;mii_bus借助其成员phy_map,将所有连接至该mii management的phy device关联起来。...原创 2021-05-23 23:27:36 · 2539 阅读 · 12 评论 -
RK3399平台开发系列讲解(UART子系统)4.28、串口子系统之底层uart_driver注册进TTY子系统
串口子系统之底层uart_driver注册进TTY子系统原创 2021-04-03 23:56:26 · 2547 阅读 · 12 评论 -
RK3399平台开发系列讲解(UART子系统)4.27、串口子系统之uart_driver结构详解
uart_driver表示一个串口控制器驱动的抽象,内部包含了tty_driver类型的成员变量,同时也包含了该串口控制器所支持的所有串口对应uart_state原创 2021-03-23 23:14:24 · 3203 阅读 · 10 评论 -
RK3399平台开发系列讲解(UART子系统)4.26、TTY子系统之系统框架
TTY子系统之系统框架原创 2019-03-21 00:35:54 · 2675 阅读 · 7 评论 -
RK3399平台开发系列讲解(UART子系统)4.25、TTY子系统之数据结构关系
TTY子系统之数据结构关系原创 2020-12-26 11:57:42 · 2503 阅读 · 10 评论 -
RK3399平台开发系列讲解(UART子系统)4.24、TTY子系统之终端设备的抽象
TTY子系统之终端设备的抽象原创 2020-12-06 00:05:38 · 2787 阅读 · 10 评论