自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(122)
  • 资源 (12)
  • 问答 (1)
  • 收藏
  • 关注

原创 Linux内存管理深度理解

这种做法的唯一缺点便是内核空间和用户空间均变小了。按照虚拟化的定义,虚拟内存与物理内存的映射关系是非线性的、随机的,但这种随机映射,在访问内存效率上会低一些,由于内核在系统运行周期是一个最高等级的常驻“进程”,并且资源是紧张的,因此内核建立一套自己”特殊“的映射规则,大大增加了软件复杂度,但为了提高效率,软件如何复杂都是有意义的!2、换言之,BSS段和数据段本质上可以不划分,软件层面的优化措施,一来节省文件空间,二来可以统一初始化,提升效率,对于嵌入式系统而言,资源就是成本,成本就是竞争力,是有必要的;

2025-10-06 10:33:09 897

原创 Android 14 - HDMI_CEC架构分析

null) {//构造HdmiCecControllerreturn;

2025-03-04 10:24:08 1467

原创 Android 14输入系统架构分析:图解源码从驱动层到应用层的完整传递链路

Android系统源代码情景分析

2025-02-17 11:13:11 1503

原创 Amlogic BSP-HDMI模块驱动分析

HDMI涉及的知识较多,这里做一些HDMI的简要分析,希望能给大家提供一些思路所在层次名称代码路径kerneldriver//注意TV没有tx的应用场景kerneldtsrelease/aml-comp/kernel/aml-5.4/arch/arm/boot/dts/amlogic/t5d_t950d4_am301_linux_1.5g.dts //1.5g指ddr内存//以上修改的话最好一起修改,覆盖不同芯片多个方案kernelpinctrl子系统bootboothdmi。

2023-12-29 23:25:24 2375 2

原创 Amlogic IR模块Linux驱动分析

Amlogic linux IR驱动

2023-11-05 21:36:53 1356

原创 重新理解Linux交叉编译及编译流程

文章目录一、背景二、gcc和arm-linux-gcc的常用选项二、交叉编译的四个流程及实例说明1、预处理(preprocessing)2、编译(compilation)3、汇编(assembly)4、链接(linking)参考书籍1、编译原理2、嵌入式Linux应用开发一、背景编译性程序源文件需要经过编译才能生成可执行文件,比如一个C/C++文件要经过预处理(preprocessing)、编译(compilation)、汇编(assembly)和链接(linking)等4步才能变成可执行文件。

2022-03-12 23:19:09 40158 16

原创 Android图像和图形显示基础

本文系统介绍了Android显示子系统的基础知识,重点区分了图像显示(预存文件)和图形显示(实时渲染)的概念差异。详细阐述了3D图形显示原理、图形处理管线流程以及Linux和Android系统的图形软件栈架构。同时分析了视频编解码机制、2D/3D图形引擎硬件差异,并以RK3568平台为例说明了显示硬件模块的功能分工。最后指出不同应用对显示硬件的需求差异,强调系统需提供多层次的显示能力支持。全文为深入理解Android显示子系统提供了全面的概念框架和技术背景。

2025-12-22 10:11:28 992

原创 基于Framebuffer的Android LCD驱动详解

本文摘要: 文章系统介绍了LCD驱动开发的核心知识,重点分析了TFT-LCD的硬件原理与驱动实现。内容涵盖:1)LCD显示原理(像素构成、灰阶、数据格式);2)TFT-LCD电路结构(时序控制器TCON、Source驱动IC等关键部件);3)主控与屏幕的接口方案(RGB-TTL、MIPI等);4)Framebuffer显存管理机制。通过时序图详解了显示控制信号(VSYNC/HSYNC/DCLK)的协同工作,并对比了不同接口特性(8080/MCU接口与RGB接口差异)。最后指出LCD驱动属于字符设备,强调内核

2025-12-22 00:52:09 990

原创 深入Linux内核之块设备子系统

1)块设备驱动模型(Block Device Driver Model):适用于块设备驱动的模型。驱动程序通过块设备驱动接口(Block Device Driver Interface)与块设备进行通信。2)块设备基本都很稳定,为什么很少出现问题?块设备的实现主体是内核提供,并且硬件相对规范成熟,基本能自适应?3)纷繁复杂的储存器件,如何做到统一?

2025-09-16 01:31:13 1012

原创 深度剖析Linux内核无线子系统架构

1、Network configuration - 网络协议栈实现//IP层实现//无线栈实现2、Network device configuration - 网络设备驱动程序实现1、WIFI驱动子系统 也是基于网络设备(net_driver),属于扩展子系统;2、如何学习无线子系统?1)基于传统linux网络子系统进行差异化学习;linux网络子系统本身也很庞大复杂,先消化这块,否则再叠加无线部分,难度会非常大2)无线子系统 较于有线子系统 有哪些新的模块?

2025-09-12 00:40:48 2234

原创 Android网络之WIFI技术网络模型概述

1、IEEE802家族IEEE802家族是由一些列局域网(Local area network,简称LAN)技术规范所组成的,802.11是其中之一。IEEE802规范的重心放在OSI模型的最下面两层,因为它们同时涵盖了物理层(physical,简称PHY)与数据链路层(data link)组件。2、为啥IEEE802重点是定义数据链路层和物理层?与OSI模型的关联?

2025-09-07 20:08:22 1158

原创 Linux网络设备驱动程序深度理解

1、网络设备驱动模型(Network Device Driver Model):适用于网络设备驱动的模型。驱动程序通过网络设备驱动接口(Network Device Driver Interface)与网络设备进行通信。2、有了字符设备驱动程序的基础,学习网络驱动程序应该进行差异化学习线路3、网络上很多教程都只是简单介绍?由于linux网络协议栈内容非常庞大,要讲清楚极其困难,系统协议栈已经非常稳定和成熟,对于新增一个网络设备驱动程序,只需要实现对应接口即可。4、多个应用同时申请网络数据,怎么区分?

2025-09-07 17:54:06 1004

原创 Linux内核网络子系统框架介绍

1、Linux内核网络协议栈的 实现很庞大复杂,专业的网络工程师才需要精通,驱动工程师专注于 根据驱动模型 开发对应驱动即可,网络协议栈底下有很多子系统(IPV4路由选择子系统、邻接子系统、Netfilter子系统、Linux无线子系统、InfiniBand子系统、蓝牙子系统、NFC子系统、PCI子系统),无线子系统只是其一。2、linux内核网络栈实现了计算机网络协议中的三个层级1)网络设备驱动层 就位于数据链路层,网络设备驱动程序 将接收来自网络层的数据包sk_buff或传递给网络层;

2025-09-06 12:37:57 970

原创 Linux总线设备驱动模型深度理解

物理上的总线是一堆电路线路连线(比如I2C总线、SPI总线、USB总线等等),软件上用来描述控制器与外设的连接关系,内核使用Bus结构体来描述这种连接关系,本质上总线Bus只是一个数据结构,它的名字用对应通信接口命名罢了,而一些驱动程序没有实际对应的通信接口(比如GPIO),那就用platform来命名吧,我们冠名为虚拟的总线!2、接下来看总线设备驱动模型和各类子系统(以platform设备驱动为例子,platform可以理解为通用简单的总线设备驱动的实现之一)的实现细节;2、总线设备驱动 的含义?

2025-08-23 23:25:14 1000

原创 Linux统一的设备模型深度理解

1)使用文件目录、列表来管理设备,将设备信息都映射成文件;2)文件内容是动态更新的,设备文件也随系统进行增删改查;1)kobject相当于一个”基类“,kset/ktype辅助基类;2)kobject、kset、ktype共同作用,将设备组织成一个关系模型;3)内核的组织有了,如何将这些关系网,也呈现给用户层?答案是通过sysfs,将这个关系模型以目录文件呈现下面来逐一介绍1)术语2)源码目录3)数据结构#endifchar *buf);

2025-08-23 01:21:08 1101

原创 Linux设备树Device Tree深度理解

1、设备树本身不复杂,就是一套机制,实现数据分离(本质上与ini是一致的),会用即可(类似JNI/HAL类型);2、类似makefile/cmake/Android.mk,还是有大量 常规语法/特殊语法 - 代码实现解析,需要理解背诵;3、专业术语fdt : flattened(解析展开) device treecompatible属性 : 兼容的?指的是兼容性?兼容一个或多个,按顺序排列4、boot下如何使用dtb?需要移植fdt库,方法如下,与内核的一致。

2025-08-20 01:53:43 872

原创 一文搞懂Linux字符设备驱动程序

编写Linux字符设备驱动相对简单,但由于存在多个版本,令人混淆,下面来一一梳理讲解,彻底搞清楚字符设备驱动1、Linux字符设备驱动Linux驱动实践:你知道【字符设备驱动程序】的两种写法吗?Linux驱动实践:一步一步编写字符设备驱动程序(新API) : https://cloud.tencent.com/developer/article/19091532、实现一个字符设备驱动程序大致的步骤1)构造file_operations;2)告诉内核 register_chrdev(一个数组项里)

2025-08-20 00:51:16 1000

原创 Linux内核驱动程序框架介绍

注意:研究内核驱动,必然要对内核有一定的了解,驱动程序与其它子系统有或多或少的交集!1)设备驱动程序的框架概述1、提供一套框架罢了,真正开发时,使用 能够与内核的其它部分无缝结合的标准API 即可完成驱动任务;2)linux驱动(.ko)基本框架 :2)设备驱动的设计思想掌握设计思想和背景让我们能够更好地理解 驱动程序框架。

2025-08-20 00:22:10 746

原创 Linux内核综述-对各个关键技术进行深度分析

1)linux内核本质是什么?1、内核就是一个庞大且独立的 “裸机” 程序!- 记住这点很重要,贯穿整个内核的学习;2、内核本身就是一个完整独立的“进程” - 不依赖外部,也就意味着任意一个错误导致此“程序”崩溃,即系统崩溃!3、内核中的通信方式还是比较单一 - 基本都是依赖函数间调用,因为内核本身就是一个完整“进程”,当然支持线程kthread4、所谓的操作系统 - 无非就是从无序到有序!2)为什么linux内核生命力如此顽强?

2025-08-19 01:49:23 1022

原创 Android14音频子系统-Framework分析

先来看看一个APP播放多媒体音频示例程序// 音频采样率// 音频通道配置// 音频格式// 创建 AudioTrack 对象.build();// 生成示例音频数据(1秒 440Hz 的正弦波)// 秒// Hz// 最大振幅(16位PCM)i++) {// 开始播放// 将音频数据写入 AudioTrack// 停止播放并释放资源APP播放音频流只需要简单的几个步骤疑问:1、音频数据格式 谁来解析处理?编解码模块(Codec)负责处理。

2025-06-26 10:25:42 1313

原创 Android14-HAL分析

1、HIDL HAL是什么?1)HIDL全称HAL interface definition language,而HIDL HAL则为,使用HIDL语言描述HAL层的对外接口,2)注意HIDL语言只是一个Google提供的辅助工具,必须使用?不是,自己也可以自行实现所有代码2、与传统HAL的区别?1)传统HAL:用户<->HAL<->驱动2)HIDL HAL:用户(client) <-> HIDL(hidl-gen) <-> HAL(service) <-> 驱动。

2025-06-26 00:05:30 1438

原创 Android14音频子系统-Audio HAL分析

1、回顾HAL、tinyalsa与linux driver的关系2、与AudioFlinger的关系3、1、如何判断当前平台用的是哪个库?可尝试注入错误代码,单编 验证一下 > 但编了也不一定会用!2、hal的作用?隐藏了什么细节,还是说只是为了符合Android框架而写?>>播放数据之前的,设置的步骤和参数就是厂家要保护的内容3、HAL如何对接tinyalsa?把tinyalsa当做一个库接口使用即可。

2025-06-25 23:43:09 1410

原创 Android14音频子系统-ASoC-ALSA之DAPM电源管理子系统

ALSA声卡驱动中的DAPM详解之一 :https://blog.csdn.net/DroidPhone/article/details/12793293基本概念>>可以当做ASoc-ALSA系统下的一个子系统,构造也是相当复杂,但声卡驱动需要熟悉此框架,使用其框架的宏和API来构造(电源)寄存器对象;产生的背景:1)ASOC框架中动态音频电源管理子系统 - 设计的目的是省电2)同时也达到减少暴露给应用的操作(寄存器操作)效果 - 比如封装打开某个input通道、MUX、mixer操作等等;

2025-06-25 23:32:03 891

原创 Android14音频子系统-Linux音频子系统ASoC-ALSA

1、linux ALSA ASoc架构: https://blog.csdn.net/weixin_45437140/article/details/1286375212、alsa框架介绍:https://blog.51cto.com/u_93011/8854396 原文(付费):https://blog.csdn.net/RadianceBlau/article/details/79432661。

2025-06-25 23:25:48 1193

原创 Android14音频子系统-Linux音频子系统ALSA

面对多种多样的codec芯片和总线,音频子系统需要做的就是兼容所有设备,换做是你的话该怎么设计?1、ALSA如何统一规范?1)ALSA驱动本质上是对字符设备驱动的进一步封装,由于抽象更统一的接口使其变得复杂一些;2)封装字符设备的操作,向上统一提供接口,驱动程序必须使用其提供的API注册声卡设备;>>三层file_operations结构:顶层->控制->playback/capture3)使用ALSA的大部分是PCI设备,即个人电脑上的声卡;

2025-06-25 23:17:02 1439 2

原创 Android14音频子系统 - 系统框架概述

2、Native层的AudioFlinger管理着系统中的输入输出音频流,并承担着音频数据的混合,通过读写Audio硬件实现音频数据的输入输出功能;3)由于Android更新相当频繁,需要设计统一的接口(audio_hw_device、audio_stream_out、audio_stream_in);厂商提供的HAL库:audio.a2dp.default.so、audio.primary.default.so、audio.usb.default.so。1、hal库(Android8以下);

2025-06-25 22:59:23 2597

原创 理解Android Studio IDE工具

1、待续。

2025-05-03 14:40:00 530

原创 如何在Android系统上单编ko?

/$(CROSS_COMPILE)strip --strip-debug 裁剪ko,去掉冗余信息,由于Android系统会统一后处理,不会体现在单个模块的mk里,需要加上。1、完整编译kernel的环境,驱动编译需要依赖kernel的生成物;1、在Android系统编译LOG上找到编译器信息(一般都会打印出来)3)进入docker,在此makefile目录下敲make。2、基于源MK构造 可独立运行的makefile。3、将所需环境变量配置在当前mk里;2、编译器及编译选项;

2025-04-10 20:40:04 966

原创 深度学习之学习路线

文章目录一、机器学习的关联技术二、机器学习的基本概念三、机器学习的应用现状四、机器学习学习资料一、机器学习的关联技术1、二、机器学习的基本概念1、三、机器学习的应用现状1、四、机器学习学习资料1、...

2022-02-16 22:53:43 5577

原创 机器学习之绪论

文章目录一、机器学习的关联技术二、机器学习的基本概念三、机器学习的应用现状四、机器学习学习资料一、机器学习的关联技术1、二、机器学习的基本概念1、三、机器学习的应用现状1、四、机器学习学习资料1、...

2022-02-16 22:52:38 601

原创 计算机中各个重要长度指标分析

学习计算机中各类长度指标很容易混淆,梳理总结如下:看图理解1、机器字长:简称字长,计算机一次能处理的最大二进制数据的位数,如32/64位系统指的就是机器字长,一般与内部寄存器(ACC、MQ、通用寄存器等)和ALU数据通路相等;2、存储字长:一个存储单元所储存的二进制数据的长度,由MDR的位数决定;3、指令字长:一个指令字中包含二进制数据的位数,由操作码+地址码位数决定,一般取存储字长的整数倍;4、PC位数:一般由MAR的位数决定;以上指标都必须是字节的整数倍;...

2022-01-04 21:08:41 3579

原创 python爬虫概述及编写demo

我们所熟悉的一系列搜索引擎都是大型的网络爬虫,比如百度、搜狗、360浏览器、谷歌搜索等等。每个搜索引擎都拥有自己的爬虫程序,比如 360 浏览器的爬虫称作 360Spider,搜狗的爬虫叫做 Sogouspider。

2022-01-04 10:31:09 24362 2

原创 华为实验室中嵌入式开发设备(基站)的网络连接模型介绍

linux开发人员办公电脑常常需要连接Linux服务器和目标设备;那么它们之间是如何连接的呢?华为实验室的连接模型如下(列举一种最常用的模型):说明:交换机:可以理解为一台专用linux设备,用于组织局域网交互;串口服务器:同样可以理解为一台专用linux设备,用于扩展串口,并转化为网络(telnet服务)...

2021-03-20 23:40:38 21559

原创 makefile gcc优先链接静态库、指定链接静态库的几种方法

方法一:简单粗暴1、直接指定静态库全称一般我们用-l来指定链接库,如果动态库、静态库都可以使用,会优先链接动态库,我们可以直接指定静态库全称来实现只链接静态库,如:gcc libssl.a方法二:-static : 所有的库文件使用静态库链接gcc -static -ltest -lfoo注意:libtest libfoo 都将只使用静态库,如果没有提供链接无法通过方法 三:–Bdynamic : 用于在各种可能的情况下为共享动态绑定设置首选项。-Bstatic : 将绑定只限制于静态库

2021-01-28 22:52:11 33518 1

原创 linux下通过C语言编程实现读取系统信息 - Meminfo

在linux下编程,常常需要获取系统信息,以下通过编程实现抓取系统信息,可以将下列代码作为一个模板来修改实现自己的需求。文章目录一、源码二、编译三、运行效果一、源码#include <stdlib.h>#include <stdio.h>#include <unistd.h>int main(int agrc, char **argv){ char buf[64] = {'\0'}; FILE *Stream;

2021-01-26 22:44:23 2196

原创 python项目实践:EXCEL处理,汇总多个excel文件特定数据,生成直方图呈现

python能够轻松实现自动化办公,一些金融、证券、会计行业中会经常处理excel中的大量数据,工序单一,任务繁多,以下 项目实现汇总多个excel文件特定数据,生成图表呈现,可以作为一个模板进行改造升级应用:文章目录一、源代码二、使用一、源代码#!/usr/bin/env pythonimport osimport re'''excel操作库'''import xlrdimport xlwt#复制、分割、刷选excel等功能from xlutils.copy import *impo

2021-01-26 00:02:31 2894

原创 python项目实践:log处理,提取日志中的性能数据

python能十分方便地进行文本处理,文本数据分析、提取、替换或综合应用都十分轻松,以下在项目中需要对日志中性能数据提取并写入到xls,方便对性能优劣分析,以下 项目可以作为一个模板进行改造升级应用:源代码#!/usr/bin/env pythonimport osimport sysimport reFILTER_1 = "10(0 failed) times"FILTER_2 = "perf data"FUN_NAME = ['test func perf']def filter

2021-01-25 23:49:21 29423

原创 词根词缀的实践应用 - 词根词缀词典&墨墨详细使用

摘要: 本文推荐了两款英语学习工具:词根词缀词典APP和墨墨背单词。词根词缀词典通过分析词源(如vis/vid同源词根)、派生词(如provide)及用户笔记,帮助理解单词构成;墨墨背单词则基于艾宾浩斯曲线,提供多词典查询、助记联想及真题例句,适合备考。两者结合可系统提升词汇记忆效率。

2021-01-23 23:58:37 2941

原创 英语词缀与英语派生词词典读书笔记,并总结输出思维导图

本文主要探讨英语词缀在构词法中的核心作用。重点分析了词缀的分类(前缀、中缀、后缀)、来源(本族语、拉丁语、希腊语)及其在构词过程中的形态、语音、语义和语法变化规律。特别强调了词缀对派生词词形、词义、词性和重音的影响机制,并指出词缀与词基的复杂互动关系。文章还深入讨论了多层派生词构词顺序、异源同形词缀、词缀多义性等特殊现象,以及现代英语中词缀发展的新趋势。通过系统梳理词缀的语法属性和构词规则,为理解英语派生词的形成提供了理论框架。

2021-01-23 21:04:58 5990

原创 英语词根与说文解字词典读书笔记,并总结输出思维导图

本文主要探讨英语词缀在构词法中的核心作用。重点分析了词缀的分类(前缀、中缀、后缀)、来源(本族语、拉丁语、希腊语)及其在构词过程中的形态、语音、语义和语法变化规律。特别强调了词缀对派生词词形、词义、词性和重音的影响机制,并指出词缀与词基的复杂互动关系。文章还深入讨论了多层派生词构词顺序、异源同形词缀、词缀多义性等特殊现象,以及现代英语中词缀发展的新趋势。通过系统梳理词缀的语法属性和构词规则,为理解英语派生词的形成提供了理论框架。

2021-01-23 20:58:03 4280

ubuntu下编程工具(shell脚本).pdf

ubuntu下shell脚本教学,ppt来的,简单而全,linux新手或者想系统了解复习的童鞋,需要的取走。

2020-01-18

makefile全套资料&lds链接脚本&通用makefile例子.rar

资料包含:跟我一起写Makefile GNU make 中文手册(新) lds链接脚本 通用makefile代码例子

2020-01-19

HUPlayer(Windows&安卓&苹果MAC)

HUPlayer(包括 Windows 苹果MAC 安卓大集合);网上找了好久,需要的请拿走

2018-02-21

汇编资料大全(AT&T).rar

在学习GNU汇编时收集的资料和电子书籍,x86架构、AT&T格式,有需要的童鞋取走 - 汇编资料大全(AT&T)

2020-01-18

嵌入式linux开发概述与环境搭建.rar

包含嵌入式linux开发概述与环境搭建两个pdf文件,可以初步了解嵌入式linux平台的开发过程,以及开发环境

2020-03-22

secureCRT7.37&8.0(x86+x64)+注册机

网上找了好久的secureCRT,版本包括7.37(x86)、8.03(x86+x64),亲测可行!!

2018-02-21

Altium_designer_summer教材&&pcb设计教程.rar

Altium_designer_summer教材、pcb设计教程完整版,平时当作手册查询,十分使用的文档资源

2020-04-07

sourceInsight3.5&amp;4.0操作手册.rar

sourceInsight3.5&amp;4.0用户手册,手册包含详细的软件使用、设置说明;在使用软件过程中,可以通过查询对应章节来解决问题,发掘扩充功能;

2020-07-19

cmake实践&amp;中文手册.rar

cmake实践、cmake中文手册,学习cmake必备手册,在大型linux开发项目中,必然会用到cmake工具,因此很有必要系统掌握cmake

2020-10-28

x86_AT&T格式例程.rar

在学习GUN汇编时,实践过的例子,包括有:延时、打印、算最大值三个例子,代码有详细注释,编译可执行。

2020-01-18

STM8_W25Q16驱动(寄存器版本)

STM8S208驱动W25Q16FLASH芯片(寄存器版本),亲测可行

2017-12-20

SourceInsight3.5看代码神器+破解文件

SourceInsight3.5看代码神器,里面包含破解文件(SN.text)+使用技巧教程;安装破解教程:https://jingyan.baidu.com/article/c1a3101eabcca2de656debc6.html;有需要的拿走

2018-02-21

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

TA关注的人

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