自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(18)
  • 资源 (1)
  • 收藏
  • 关注

原创 Markdown笔记

graph TDA[矩形节点] --> B(圆角节点)C{菱形决策} --> D((圆形节点))效果如下所示:fill:#333;color:#333;color:#333;fill:none;矩形节点圆角节点菱形决策圆形节点graph TDA --> B // 实线箭头A -.-> C // 虚线箭头A == text ==> D // 粗线带文字A -- text --> E // 实线带文字graph TD。

2025-06-03 09:34:21 2515

原创 Linux 驱动之设备树

【北京迅为】嵌入式学习之Linux驱动(第七期_设备树_全新升级)_基于RK3568_哔哩哔哩_bilibili​ Linux之父Linus Torvalds在2011年3月17日的ARM Linux邮件列表中说道:This whole ARM thing is a f*cking pain in the ass。之后ARMLinux社区引入了设备树。为什么Linus Torvalds会爆粗口呢?​ 在讲平台总线模型的时候,平台总线模型是把驱动分成了两个部分,一部分是device,一部分是driver,设备

2025-06-01 18:35:34 1145

原创 Linux驱动之平台总线

本文摘要: 文章介绍了Linux平台总线(Platform Bus)模型的基本概念和工作原理。平台总线是Linux虚拟的总线模型,将驱动分为描述硬件的device.c和控制硬件的driver.c两部分,通过name匹配实现设备与驱动的耦合。文章详细讲解了platform_device结构体及其关键成员,包括资源定义(struct resource)和设备注册/卸载接口(platform_device_register/unregister)。最后通过一个测试案例展示了如何定义内存和中断资源,并注册平台设备。

2025-06-01 14:59:44 1032

原创 Linux 高级字符设备

本文介绍了Linux高级字符设备中的IO模型和等待队列机制。主要内容包括: IO模型:分析了五种IO模型(阻塞、非阻塞、信号驱动、IO多路复用和异步IO)的工作原理及特点,对比了它们的数据处理流程和适用场景。 等待队列:讲解了内核中用于进程阻塞和唤醒的等待队列机制,包括等待队列头(wait_queue_head_t)和队列项(wait_queue_entry)的数据结构,以及两种初始化等待队列头的方法(动态初始化和静态宏定义)。 实际应用:通过代码示例展示了非阻塞IO的轮询实现、IO多路复用的epoll使用

2025-05-28 08:30:00 971

原创 Linux 驱动之中断

本文介绍了Linux驱动中的中断机制,主要内容包括: 中断基本概念: 中断是CPU响应外部或内部事件的机制,需经历中断信号、响应、保护现场、处理、恢复现场等过程 分为中断上文(快速响应关键任务)和中断下文(处理耗时任务) 中断子系统框架: 对比51单片机的中断控制方式 引入ARM架构的通用中断控制器(GIC)及其级联结构 详细说明硬件中断号(HW ID)与软件中断号(IRQ number)的映射关系 GIC中断类型: 软件生成中断(SGI) 私有外设中断(PPI) 共享外设中断(SPI) 局部外设中断(LP

2025-05-28 08:30:00 702

原创 Linux 驱动并发与竞争

本文介绍了Linux驱动开发中的并发与竞争问题。在单核、多核CPU及多任务环境下,并发访问共享资源会导致竞争问题。Linux内核提供了原子操作、自旋锁、信号量和互斥锁等机制来解决这一问题。重点讲解了原子操作的实现方法,包括atomic_t类型变量的声明与初始化,以及常用的原子读写、加减、条件操作等函数。通过原子操作可以确保对共享变量的访问不可被打断,从而避免并发竞争问题。文章还提供了原子操作的实验代码路径,帮助开发者理解如何在Linux驱动中实际应用这些技术。

2025-05-25 08:30:00 552

原创 Linux RTC驱动笔记

本文介绍了Linux系统中的RTC(实时时钟)驱动相关知识。主要内容包括:RTC的基本概念与分类(内部RTC和外部RTC的优缺点);迅为RK3568/RK3588开发板上的RTC外设电路设计分析;Linux RTC子系统的三层架构(用户空间、设备驱动层和硬件层);最后以RX8010芯片为例,分析了其设备树配置和内核驱动实现,重点解读了驱动初始化、中断处理和时间设置等关键代码流程。文章为嵌入式开发者提供了RTC驱动的完整技术参考。

2025-05-25 08:30:00 2239

原创 Linux 字符设备基础

​ Linux规定每一个字符设备或者块设备都必须有一个专属的设备号。一个设备号由主设备号和次设备号组成。主设备号用来表示某一类驱动,如鼠标,键盘都可以归类到USB驱动中。而次设备号是用来表示这个驱动下的各个设备。比如第几个鼠标,第几个键盘等。所以,我们开发字符驱动程序,申请设备号是第一步,只有有了设备号,才可以像系统注册设备。​ Linux中使用一个名为的数据类型表示设备号。定义在里面。如下图所示,通过定义可以看出是类型,也就是类型。所以设备号是一个32位的数据类型。其中高12位为主设备号,低20位为次设备

2025-05-24 09:26:42 937

原创 Linux 驱动基础

本文介绍了Linux驱动开发的基础知识,包括: Linux内核源码目录结构解析,如arch、drivers、fs等核心目录功能说明。 驱动开发基本流程: 编写最简单的Hello World驱动 驱动模块的编译方法(独立编译和内核集成) 模块加载/卸载命令(insmod/modprobe/rmmod) 模块参数传递机制 内核配置系统: Kconfig语法详解 Makefile与.config文件关系 将驱动编译进内核的方法 进阶技术: 内核符号导出 系统调用机制分析 自定义系统调用实现 模块初始化优先级控制

2025-05-24 08:00:00 893

原创 基于VSCode搭建Linux驱动开发环境

【代码】基于VSCode搭建Linux驱动开发环境。

2025-05-21 21:14:14 231

原创 Docker学习笔记

【代码】Docker学习笔记。

2025-05-17 19:50:09 225

原创 Linux pwm驱动笔记

本文介绍了基于RK3568开发板的PWM(脉宽调制)技术及其在嵌入式Linux驱动中的应用。PWM通过调节脉冲信号的宽度(占空比)来控制设备的输出,广泛应用于LED调光、电机调速、电源转换和音频合成等领域。文章详细讲解了PWM的基础知识,包括占空比和频率的概念,并介绍了RK3568开发板的PWM接口特性,支持16路PWM控制器,具备高精度计时和捕获功能。 文章还通过实例展示了如何在RK3568开发板上使用PWM控制SG90舵机和蜂鸣器,并提供了设备树配置和驱动代码的编写方法。此外,文章还介绍了PWM子系统的

2025-05-17 18:49:41 1125

原创 基于nginx的RTMP服务器搭建

基于ubuntu系统,手把手教您搭建开源RTMP服务器。

2025-05-14 11:06:22 1278

原创 Linux I2C驱动笔记

I2C总线是一种同步、串行、半双工的通信总线,由SDA(串行数据线)和SCL(串行时钟线)两根信号线构成,通常通过上拉电阻保持总线空闲状态为高电平。I2C总线支持多设备连接,允许多主机存在,但同一时刻只允许一台主机操作。每个I2C设备都有唯一的地址,主机通过地址与从机通信。I2C总线的传输速率在标准模式下可达100kbit/s,快速模式下可达400kbit/s,高速模式下可达3.4Mbit/s。I2C总线上的设备数量受总线最大电容400pF限制,且挂载相同型号器件时还受器件地址限制。 在硬件实现上,I2C总

2025-05-13 16:48:52 1022

原创 Linux串口驱动

本文介绍了Linux串口驱动的基础知识和应用编程,重点讲解了串口通信的基本概念、常见串口类型、关键参数配置以及比特率与波特率的区别。文章还详细描述了串口通信协议、硬件接口、RS232和RS485的电平特性,以及如何在Linux系统中进行串口配置和应用编程。通过示例代码,展示了如何设置串口参数、读取和解析GPS模块数据,并提供了完整的代码实现和Makefile文件。此外,文章还介绍了串口子系统的框架和驱动注册流程,帮助读者深入理解Linux串口驱动的工作原理。

2025-05-13 08:55:05 1815

原创 Linux SPI驱动笔记

基本概念SPI(串行外设接口)是一种同步、全双工的串行通信协议,由摩托罗拉公司提出,广泛用于嵌入式系统中连接主控芯片(如MCU、SoC)与外围设备(如传感器、存储器、显示屏等)。其核心特点是通过主从架构实现高速数据传输。核心特点高速传输:支持从几百Kbps到几十Mbps的速率,具体取决于硬件时钟频率。全双工通信:数据可同时在主设备和从设备之间双向传输。灵活性:通过配置时钟极性和相位,适配不同设备需求。简单性:协议层无复杂地址机制,完全依赖硬件片选(CS)控制。无流控与错误检测。

2025-05-11 19:42:57 878

原创 ncdu 移植到arm平台

期望输出:ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked...# 应输出类似:aarch64-linux-gnu-gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0。根据你的宿主机系统(假设为 x86_64 Linux),安装适用于。需要配置交叉编译工具链和依赖库。库,需为 aarch64 交叉编译该库。# 设置交叉编译器和依赖库路径。# 编译并安装到工具链目录。

2025-05-07 16:16:47 937

原创 解决拷贝虚拟机ubuntu20后网卡无法访问的问题

ubuntu,虚拟机,网卡

2024-05-03 18:42:03 858 3

手把手教您搭建开源RTMP服务器

文件主要包含RTMP服务器代码,RTMP配置和手机端APP。 详细的安装过程请参考网址:https://blog.csdn.net/yan1139698896/article/details/147947596?spm=1011.2415.3001.5331

2025-05-14

Linux 串口驱动流程图和逻辑图

迅为 Linux 串口驱动流程图和逻辑图

2025-05-13

aarch64平台ncdu工具

安装步骤: 1. tar -xvzf ncdu_packet.tar.gz -C /usr 2. chmod 777 /usr/bin/ncdu 3. ncdu 1 编译步骤,参考网址: https://blog.csdn.net/yan1139698896/article/details/147768567?spm=1011.2124.3001.6209

2025-05-10

tiny6410裸机程序

关于tiny6410裸机的按键中断程序,按键中断实现LED流水闪烁。

2012-10-06

空空如也

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

TA关注的人

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