自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

iriczhao的博客

天空是一本书,让人百读不厌

  • 博客(206)
  • 收藏
  • 关注

原创 【linux kernel】 一文总结linux内核中的kobject、kset和ktype

总结linux内核中的kobject、kset和ktype知识点

2024-04-20 10:11:41 799

原创 【Android】一文总结Android系统服务大管家-ServiceManager

ServiceManager是一个由C/C++编写的系统服务,源码位于/framework/native/cmds/servicemanager中,本文简要讨论servicemanager的实现和功能。

2024-04-08 21:06:18 1200

原创 【Android】一文总结Android的init语言

- 1、在Android系统中,存在多个以`xxx.rc`形式命名的文件,这些可以文件可以理解成Android系统配置文件,在Android系统启动过程中,由init进程加载并解析,这些文件中的内容形成了Android的init语言,是语言就存在一定的语法、格式、命令和参数等。- 2、为了在阅读这些rc文件时不至于茫然无措,也为了更加深入的理解Android系统的启动过程,也为了后续能够深度的定制Android系统,总结了在rc文件中常使用的command、option等,便于备查理解!

2024-04-07 21:52:31 1110

原创 【linux kernel】linux的SPI框架分析

本文分析linux内核的SPI框架!

2024-01-02 21:13:10 1189 1

原创 【linux kernel】linux 的uart驱动框架分析

本文分析linux的uart框架

2023-11-13 21:49:26 508 1

原创 【linux kernel】linux的platform设备驱动框架分析

本文分析linux的platform设备驱动框架。

2023-10-16 08:44:08 374

原创 【linux kernel】linux内核设备驱动的注册机制

向linux内核注册驱动由driver_register()完成。它将驱动程序的信息添加到内核的驱动程序列表中,使得内核能够在需要时与该驱动程序进行交互。本文将分析该函数!

2023-10-15 15:24:19 520

原创 【linux kernel】对linux内核设备的注册机制和查找机制分析

linux内核设备的注册由```device_register()```函数完成,这个函数是linux设备驱动模型的核心函数,本文将分析该函数!

2023-10-15 15:16:33 289

原创 【linux kernel】linux内核中的debugfs

本文分析和讨论linux内核中debugfs常用的API和使用方法。

2023-08-22 21:17:40 353

原创 【linux kernel】一文总结linux内核通知链

文本基于内核源码4.19.4描述构成通知链的具体数据结构和API接口,同时描述四种通知链的具体应用场景,并对API接口进行简要分析。

2023-07-06 12:00:00 1008

原创 【linux kernel】linux内核数据结构分析之哈希表

出自Linux内核文件是Linux内核中实现散列表的基础数据结构之一,它提供了高效的链表管理机制,用于处理具有相同哈希值的元素。在结构中,first是一个指向链表中第一个节点的指针,它指向通过使用,可以将具有相同哈希值的元素按照链表的形式连接起来,并且可以通过first指针快速访问链表中的第一个元素。在散列表的实现中,每个桶都使用来维护对应链表的头节点。这样可以方便进行链表的插入、删除和遍历操作。只是链表头节点的数据结构,并不存储实际的数据。实际的数据存储在链表节点。

2023-06-20 21:03:43 872

原创 【linux kernel】linux内核数据结构分析之链表

Linux内核中实现了一套经典的链表操作,定义在/include/linux/list.h文件中,本文基于linux内核源码6.2.7,记录了其常用操作链表的API函数,便于在阅读linux内核源码时更好的理解程序执行的过程和细节。

2023-06-19 21:48:56 1292

原创 【linux kernel】linux media子系统分析之media控制器设备

Media Controller设备:Media Controller设备是一个虚拟的设备,它代表了整个媒体设备的拓扑结构,包括所有的媒体实体、媒体端口、连接关系等。在Media Controller中,每个媒体设备都被描述为一个媒体实体(Media Entity),每个媒体实体都有一个或多个媒体端口(Media Pad),每个媒体端口都可以连接到另一个媒体设备的媒体端口上,从而形成一个媒体设备的拓扑结构。它负责创建和管理媒体设备子系统中的设备节点,以便应用程序可以通过设备节点与媒体设备进行通信。

2023-06-18 22:24:12 1030

原创 【V4L2】 v4l2框架分析之v4l2_fh

🔺相关源码文件:在V4L2中,结构用于保存V4L2框架中使用的文件句柄(File Handle)的数据,即每个打开的视频设备都会对应一个结构体,该结构体包含了与该设备相关的各种信息,例如该设备的控制器、缓冲区、状态等等。通过,V4L2子系统能够跟踪设备文件的打开和关闭,并管理与句柄相关的状态和控制操作。

2023-06-17 11:19:36 321

原创 【V4L2】 v4l2框架分析之v4l2_subdev

在linux内核中,许多驱动程序需要与子设备通信,这些子设备用于完成一些子任务,最常见的是:处理音频或视频的播放、编码或解码。传感器和摄像机控制器。这些设备通常是I2C设备(但也不全是)。

2023-06-15 22:47:09 973

原创 【V4L2】 v4l2框架分析之v4l2_device

对于想要接入V4L2子系统的设备,每个设备实例都由一个表示。对于简单的设备可以只分配这个结构,但大多数情况下,可以把这个结构嵌入到更大的结构中。//指向struct device的指针。//指向struct media_device的指针,值可以为NULL。struct media_device表示一个媒体设备。//用来跟踪注册的子设备。//自旋锁。用于锁定这个结构体;如果这个结构体被嵌入到一个更大的结构体中,也可以被驱动程序使用。

2023-06-12 21:52:55 849

原创 【V4L2】v4l2框架分析之video_device

本文基于Linux内核版本4.1.15分析V4L2框架下的video_device。

2023-06-11 12:04:39 772

原创 V4L2-PCI驱动程序样例分析(一)

本文基于linux内核提供的一个PCI驱动程序模板进行分析,驱动程序文件为```v4l2-pci-skeleton.c```,放在linux/samples/v4l目录下。从该驱动程序中,将看到一个PCI驱动程序的总体框架和组成结构,同时该驱动基于V4L2设计,从而也能了解到如何基于V4L2开发视频捕获驱动。

2023-06-10 10:13:38 910

原创 如何在Windows下搭建Qt安卓开发环境?

本文描述如何在Windows下搭建Qt安卓开发环境,由于Qt维护的安卓开发环境和安卓开发环境在很大程度上不兼容,所以在选择Qt版本的时候需要注意:在JDK和Android SDK环境的选择上需要注意,否则QtCreator会检测不到正确/合适的Android开发环境。

2023-03-13 22:10:35 1109 1

原创 如何在openKylin操作系统上搭建Qt开发环境

文本描述如何在openKylin操作系统上搭建Qt开发环境。

2023-03-02 22:59:52 1007

原创 虚拟机上安装openKylin详细步骤总结

本文描述虚拟机上安装openKylin详细步骤总结。

2023-02-28 22:20:16 1757

原创 【Qt】Qt 隐式共享

​Qt中的许多C++类使用隐式数据共享来提高资源使用并减少数据复制。当这些类作为参数传递时,因为只传递一个指向数据的指针,并且只有当函数写入数据时数据才会被复制,即,隐式共享类是安全、高效的。​ 共享类由一个指向包含引用计数和数据的共享数据块的指针组成。​ 当创建共享对象时,它将引用计数设置为1。每当有新对象引用共享数据时,引用计数就递增,当对象解引用共享数据时,引用计数就递减,当引用计数变为零时,将删除共享数据。​ 在处理共享对象时,有两种方法复制对象。深度拷贝和浅拷贝。

2023-02-12 22:46:39 2758

原创 如何在VMware虚拟机上安装运行Mac OS系统(详细图文教程)

如何在VMware虚拟机上安装运行Mac OS系统。

2023-02-12 11:08:38 12116 2

原创 【Qt】如何在Qt应用程序中使用设计好的UI文件

本文描述如何在编译的时候使用ui文件。描述ui文件背后的机制,以及如何在应用程序中使用设计好的ui文件。

2023-01-29 23:08:28 3719

原创 【Qt】如何使用QtCreator向工程添加文件

本文主要描述了QtCreator中的『新文件创建向导』下各个选项的用途。基于QtCreator版本:```8.0.1```

2023-01-23 10:08:31 5933

原创 【Qt】一文总结新工程的创建

在使用Qt进行项目开发过程中,```QtCreator```是一款流行多年的必备开发利器,本文基于QtCreator这款IDE,描述其『新文件和新工程』创建向导中各选项的含义,还简要分析使用QtCreator内部自带模板创建出的基础工程。

2023-01-17 20:54:47 1195

原创 【linux kernel】Linux设备驱动模型 | bus

本文首先描述与总线相关的数据结构,重点描述```struct bus_type```结构体内部各个元素的含义以及内部之间的联系。接着会描述linux设备驱动模型初始化过程中关于总线的初始化流程,这部分由```buses_init()```完成,最后会描述对总线的几个操作接口函数。

2023-01-16 21:43:03 1043

原创 【linux kernel】linux内核重要函数 | do_initcalls

从上述内容可以知道,linux内核中使用基于封装出的多个接口API初始化内核的各个模块,使用这些API接口会将指定的函数放到名称为的section中,id为初始化调用级别,内核中定义了14种调用级别:分别为17和1s7s(linux 3.0后增加的扩展)。这些调用级别是按照先后顺序依次排列的。(4-1)linux内核中,对于内核的各个模块的初始化,正是通过使用的衍生宏定义接口API将初始化函数放置到section中,不同模块的初始化函数按照调用级别顺序排列。

2023-01-14 22:56:40 1201

原创 【linux kernel】linux内核裁剪随想

为什么需要裁剪?首先,裁剪并不一定是缩小内核镜像的大小,而是**移植和适配**。内核支持的特性很多,站在项目的角度,不一定全部需要这些特性和功能。这时候就需要将不需要的特性和功能剔除,随着这个过程的进行,内核的镜像会逐渐缩小。

2022-12-21 22:01:21 2100

原创 【linux kernel】基于ARM64分析linux内核的链接脚本vmlinux.lds.S

本文基于ARM64分析linux内核的链接脚本。

2022-11-15 20:29:59 1651

原创 【嵌入式linux】嵌入式linux | u-boot启动logo修改

本文描述如何修改u-boot的启动logo。

2022-11-10 21:45:48 1034

原创 【buildroot】buildroot使用笔记-04 | 重构的规则和方法

本文描述重构buildroot的规则和方法。

2022-11-02 20:55:18 913

原创 【buildroot】buildroot使用笔记-03 | 系统初始化的三种方式

本文描述buildroot中系统初始化的三种方式以及buildroot的工作方式。

2022-11-02 20:52:27 1127

原创 【buildroot】buildroot使用笔记-02 | 对/dev的四种管理机制

本文描述buildroot对/dev目录的四种处理方式。

2022-11-01 20:33:53 1172

原创 【buildroot】buildroot使用笔记-01 | 常规使用步骤

本文记录了buildroot的使用步骤,描述了针对imx6ull处理器芯片的buildroot的轻量级根文件系统完整构建过程。由于是轻量级的构建,所以大约需要5-6分钟就可以编译构建完成。相比较于busybox,buildroot构建出的根文件系统功能更加完善,配置文件也更加完整,不用再去手动添加和修改一些linux系统启动必须的文件了,非常适合更复杂的嵌入式linux系统的构建和开发。

2022-10-31 21:06:02 1795 1

原创 【Busybox】Busybox源码分析-04 | ash和login程序

本文分析busybox中的ash和login程序

2022-10-24 20:19:22 1541

原创 【Busybox】Busybox源码分析-03 | 终篇

本文是小生分析busybox源码的最后一篇,描述了经busybox构建完成后的最小根文件系统中需要添加哪些文件以及文件的解析过程。从使用者的角度来看,能够编译构建busybox,能够填充最小的根文件系统满足实际的应用需求,就已经差不多了。从设计的角度来看,busybox的源码和linux内核、u-boot源码一样,具有出色的设计思维和优秀的构建思想在里面。

2022-10-17 22:02:16 1012

原创 【Busybox】Busybox源码分析-02 | init程序

linux内核启动过程的后期,在```kernel_init()```函数代表的init线程中,会尝试执行用户空间的init进程。本文将分析init程序。

2022-10-15 22:37:00 1024

原创 【Busybox】Busybox源码分析-01 | 源码目录结构和程序入口

描述Busybox的源码目录结构和程序入口分析

2022-10-13 20:24:19 1166

原创 嵌入式Qt | 如何交叉编译Qt模块

在硬件板卡提供商提供的嵌入式linux平台下的Qt环境中,很多时候会不太适合实际的开发场景:(1)可能一些Qt的模块不支持。这时候要么找厂家,要么自己编译。(2)在厂家提供的平台开发环境中,支持的东西太多,太杂,导致整个文件系统镜像太大。这时候为了减小根文件系统,往往需要自己集成和编译开发环境。(3)不同版本Qt编译构建出的库文件,一般会不兼容,需要针对特定版本进行交叉编译。本文主要是记录在Qt源码跨平台源码编译构建过程中的一些注意点以及自己的思考。

2022-10-11 22:41:06 3744

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除