自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(50)
  • 资源 (9)
  • 收藏
  • 关注

原创 littlefs 源码分析

掉电恢复能力:通过写时复制和校验和确保数据完整性动态磨损均衡:延长闪存寿命有限的内存使用:适合资源受限的微控制器简单易用的 API:模仿 POSIX 接口,易于使用高度可移植:只需实现块设备操作即可移植到不同平台littlefs 的设计思想和实现技术对于理解嵌入式文件系统的工作原理具有重要参考价值,其代码结构清晰,算法设计巧妙,是学习嵌入式系统存储管理的优秀案例。

2026-06-05 16:22:13 208

原创 Linux 系统内核列表宏解析

侵入式设计:将list_head嵌入到用户结构体中,实现类型无关list_entry 宏:通过偏移量计算从链表节点获取结构体指针O(1) 复杂度:插入和删除操作只需修改指针缓存友好:数据和指针连续存储,提高缓存命中率。

2026-06-04 15:51:06 313

原创 SFUD源码分析

通用性:支持多种串行闪存芯片,提供统一的操作接口灵活性:支持 SPI 和 QSPI 接口,可根据硬件平台选择智能识别:支持 SFDP 标准,可自动识别闪存参数可移植性:平台适配层与核心逻辑分离,易于移植到不同平台可靠性:完善的错误处理和重试机制高性能:支持 QSPI 快速读取模式,提高数据传输速度分层架构:将硬件操作与业务逻辑分离,提高代码可维护性模块化设计:核心功能模块化,便于扩展和测试标准支持:遵循 JEDEC 标准,提高兼容性配置灵活:通过配置选项可裁剪功能,适应不同场景。

2026-06-03 10:02:00 227

原创 Linux系统读取设备树硬件信息

Linux系统提供了多种方法来读取设备树硬件信息,包括内核空间的OF API、GPIO相关API、平台数据API,以及用户空间的sysfs接口、dtc工具和libfdt库。更好地理解硬件配置编写更通用的设备驱动快速调试硬件相关问题提高系统的可移植性随着嵌入式系统的不断发展,设备树在Linux系统中的作用越来越重要,掌握设备树的读取方法对于嵌入式开发人员来说是一项必备技能。

2026-05-22 16:00:23 330

原创 Googletest Mock示例

隔离测试:不依赖实际硬件即可测试应用层逻辑可控测试:精确控制硬件行为,测试各种场景快速测试:测试执行速度快,适合持续集成提高质量:通过全面的测试覆盖,提高代码质量和可靠性这种测试方法特别适合嵌入式系统开发,其中硬件依赖可能会限制测试的灵活性和速度。通过合理的架构设计和测试策略,我们可以在开发早期发现并解决问题,从而提高产品质量和开发效率。

2026-05-22 15:57:40 327

原创 Linux系统GPIO子系统概述

GPIO子系统为Linux内核提供了统一的GPIO管理框架,通过分层架构和设备树集成,实现了GPIO配置的标准化和集中管理。它不仅简化了驱动开发,还提供了用户空间访问接口,方便应用程序使用GPIO功能。在实际应用中,正确使用GPIO子系统可以实现各种输入输出功能,如LED控制、按键检测、传感器接口等。通过sysfs接口和libgpiod库,开发人员可以方便地测试和使用GPIO功能。

2026-05-22 15:56:08 694

原创 Linux系统pinctrl子系统概述

pinctrl子系统为Linux内核提供了统一的引脚管理框架,通过分层架构和设备树集成,实现了引脚配置的标准化和集中管理。它不仅简化了驱动开发,还提高了系统的可维护性和可移植性。在实际应用中,正确使用pinctrl子系统可以避免引脚冲突,优化引脚配置,提高系统的稳定性和可靠性。随着SoC集成度的不断提高,pinctrl子系统的重要性也将日益凸显。通过sysfs接口,开发人员可以方便地查看和测试引脚配置,这对于调试和开发过程非常有帮助。

2026-05-22 15:55:25 423

原创 Modbus RTU协议模块源码解析

协议解析层负责Modbus帧的解析和响应帧的构建,是整个Modbus从站协议的核心处理层。功能码实现模块负责处理Modbus标准功能码,包括读保持寄存器、写单个寄存器和写多个寄存器等操作。寄存器映射模块负责管理Modbus寄存器数据,包括寄存器的读写操作和硬件控制。// 寄存器映射表0, // REG_TEMP_HUMIDITY (温湿度值)0 // REG_RELAY_STATUS (继电器状态)功能:定义Modbus寄存器数组说明:包含温湿度值和继电器状态两个寄存器。

2026-05-22 15:54:33 539

原创 嵌入式编程-结构体指针奇地址访问问题

内存对齐是指数据在内存中的存储位置必须是其大小的整数倍。1字节数据(如char)可以存储在任何地址2字节数据(如short)必须存储在偶数地址4字节数据(如int、float)必须存储在4的倍数地址8字节数据(如double、int64_t)必须存储在8的倍数地址结构体指针赋值为奇地址导致程序崩溃的根本原因是内存对齐问题。在嵌入式系统中,由于处理器对内存访问有严格的对齐要求,未对齐的访问会导致硬件异常和程序崩溃。

2026-04-02 09:15:54 381

原创 DH密码交换的原理和示例

DH密钥交换是一种优雅而强大的密码学协议,它解决了在不安全信道上建立共享密钥的问题。其核心在于利用离散对数问题的困难性,使得攻击者无法从公开信息中推导出共享密钥。虽然DH密钥交换本身存在中间人攻击的风险,但通过与数字签名等技术相结合,可以构建更加安全的通信系统。在现代网络安全中,DH密钥交换及其变体(如椭圆曲线Diffie-Hellman,ECDH)被广泛应用于各种安全协议中,为互联网通信提供了基础的安全保障。

2026-04-02 09:15:04 769

原创 RSA加密解密原理和示例

已知n和e,要计算d,需要知道φ(n)要计算φ(n),需要知道p和q从n分解出p和q在计算上是困难的RSA算法的核心数学原理是欧拉定理的推广,确保加密和解密是互逆操作。在实际应用中,必须结合适当的填充方案和密钥管理策略,才能构建安全的加密系统。

2026-03-20 11:28:11 639

原创 TFTP服务端开源代码分析

本文件详细分析TFTP服务端的实现,包括数据结构、层次关系和工作流程。

2026-03-12 13:58:43 363

原创 TFTP客户端开源代码分析

本文件详细分析TFTP客户端的实现,包括数据结构、层次关系和工作流程。

2026-03-12 13:58:08 522

原创 Linux系统I2C子系统概述

Linux I2C子系统提供了一套完整的框架,使得开发者可以方便地编写I2C设备驱动。通过分层架构设计,将硬件细节与设备逻辑分离,提高了代码的可维护性和可移植性。同时,内核提供了丰富的工具和API,方便开发者进行驱动开发和调试。

2026-02-05 13:51:04 528

原创 Linux内核LED子系统概述

/ 注册触发模式// 触发LED事件// 注销触发模式Linux内核LED子系统提供了统一的LED控制框架,支持多种触发模式和硬件平台。通过sysfs接口和内核API,用户可以方便地控制LED设备,实现各种闪烁效果和状态指示。LED子系统的设计遵循了Linux内核的模块化原则,具有良好的可扩展性和兼容性,适用于各种嵌入式系统和工业应用场景。

2026-02-05 11:39:40 589

原创 Linux系统内核io_uring测试程序分析

425# endif426# endif427io_uring 提供了高性能、低延迟的异步 I/O 接口,适用于需要高吞吐量的应用场景。本目录中的测试程序展示了 io_uring 的各种使用方式和特性,为开发者提供了参考实现。通过合理配置和优化,io_uring 可以显著提高应用程序的 I/O 性能,特别是在高并发场景下表现优异。

2026-02-04 13:56:41 1375

原创 Linux内核GPIO工具概述

lsgpio: 列出GPIO信息gpio-hammer: 闪烁GPIO管脚gpio-event-mon: 监控GPIO事件这些GPIO工具提供了从用户空间操作GPIO管脚的便捷方式,展示了Linux GPIO字符设备接口的使用方法。工具之间通过共享实用函数库实现代码复用,提高了可维护性。lsgpio: 用于查看GPIO系统状态: 用于测试GPIO输出功能: 用于监控GPIO输入事件这些工具对于调试和测试GPIO功能非常有用,特别是在嵌入式系统开发中。

2026-02-04 13:54:48 811

原创 Linux内核tools目录概述

提供进程延迟统计工具。

2026-02-03 13:22:16 684

原创 Linux系统SPI测试程序源码分析

发送自定义十六进制数据,适用于简单的功能测试。spidev_test.c是一个功能强大的SPI设备测试工具,它提供了丰富的配置选项,可以满足各种SPI设备的测试需求。通过本文的分析,读者可以深入理解该程序的工作原理和参数配置方法,为SPI设备驱动开发和调试提供有力支持。

2026-02-03 10:03:59 683

原创 Linux系统驱动架构概述

这个架构设计使得Linux能够支持从嵌入式设备到服务器、从简单字符设备到复杂网络设备的广泛硬件平台。

2026-02-02 12:49:42 737

原创 Linux系统LED驱动程序源码分析

/ LED设备信息结构体// LED名称标签int gpio;// LED对应的GPIO编号// 是否低电平有效// 对应sysfs节点的kobject对象// sysfs属性结构体本文对LED驱动程序和设备树文件进行了详细分析,介绍了驱动的实现原理、设备树配置以及使用方法。该驱动采用平台设备驱动框架,支持设备树配置,通过sysfs文件系统提供用户空间接口,实现了对LED的灵活控制。

2026-02-02 12:49:06 445

原创 Linux内核时钟芯片DS3232驱动源码分析

0x000x010x020x020x030x040x050x050x060x070x0B0x0E0x800x040x020x010x0F0x800x040x020x010x110x140xFF236{ }这是设备树匹配表,定义了驱动支持的设备类型。字段指定了设备树中设备节点的compatible属性值,用于匹配硬件设备。宏将该匹配表导出到内核,以便设备树核心能够找到并匹配相应的设备。完整的功能实现:支持时间读写、闹钟设置、温度读取等所有DS3232芯片功能。

2025-12-30 17:02:23 849

原创 Linux内核DS1307驱动源码分析

mcp794xx, // MCP794xx系列// ... 其他型号// DS1307寄存器地址0x000x010x020x030x040x050x060x070x08// NVRAM起始地址// 寄存器位定义0x80// 时钟停止位0x40// 12小时制标志0x20// PM标志0x80// 控制寄存器输出位0x10// 方波使能0x02// 频率选择位10x01。

2025-12-30 10:51:52 737

原创 Linux驱动proc接口示例源码分析

define PROC_NAME "proc_example" // proc文件名// 模块参数,可通过insmod时指定PROC_NAME:定义了将在/proc目录下创建的文件名proc_value:模块参数,默认值为42:宏用于将变量声明为模块参数,格式为name:参数名type:参数类型perm:参数在/sys/module下的权限:为模块参数添加描述信息proc文件系统:提供了用户空间与内核空间的通信接口序列文件(seq_file):内核提供的简化文件内容生成的机制。

2025-12-30 10:50:24 634

原创 Linux驱动sysfs接口示例源码解析

/ 定义字符串缓冲区大小100。

2025-12-29 10:15:00 1262

原创 Linux驱动input子系统示例源码分析

/ 设备结构体// sysfs对象// 设备类// 设备:自定义设备结构体,包含 input_dev 指针和 sysfs 对象simk_class和:用于在 sysfs 中创建设备节点// sysfs属性结构体.attr = {.mode = 0666, // 可读可写},.show = NULL, // 读取函数(暂不实现).store = inputkey_store, // 写入函数// 声明sysfs属性组NULL,

2025-12-26 15:23:04 751

原创 Linux驱动tasklet示例源码分析

256// 全局变量// 互斥锁用于保护共享资源// Tasklet 相关变量// Tasklet 执行计数和CLASS_NAME:定义设备名称和类名称BUF_SIZE:定义缓冲区大小:存储字符设备的主设备号:设备类指针:字符设备结构体message[]和:用于存储从用户空间接收的数据:互斥锁,保护共享资源访问:Tasklet结构体实例:原子变量,记录Tasklet执行次数:记录上次Tasklet执行的时间戳。

2025-12-25 09:29:27 728

原创 Linux驱动工作队列示例源码分析

本示例驱动展示了Linux内核中工作队列的基本使用方法,是学习异步处理机制的良好起点。通过字符设备接口接收用户数据,并在独立的工作队列中异步处理,可以有效避免在设备驱动的关键路径上执行耗时操作。工作队列是Linux内核中处理延迟执行任务的重要机制,特别适用于需要执行I/O操作、复杂计算或其他可能阻塞的任务的场景。正确使用工作队列可以显著提高系统的响应性和稳定性。

2025-12-24 11:33:46 745

原创 Linux驱动内核线程示例源码分析

include <linux/slab.h> /* 用于kzalloc/kfree */这些头文件提供了内核模块开发所需的基本API,包括内核线程管理、进程调度、错误处理、延迟函数和互斥锁等功能。模块信息声明定义了模块的许可、作者、描述和版本信息。明确的退出机制:始终实现检查,并响应停止请求状态管理:在休眠前正确设置线程状态,在退出前恢复为资源保护:使用适当的同步机制保护共享资源错误处理:对所有可能的错误情况进行处理,避免在错误状态下继续运行可配置性:使用模块参数使线程行为可配置。

2025-12-23 14:30:15 947

原创 Linux驱动定时器示例源码分析

int count;timer_data结构:定时器结构体int count:计数器,用于跟踪定时器触发次数:定时器名称,用于日志区分my_data:全局指针,指向动态分配的timer_data实例定义模块的初始化和退出函数20hr_timer:高精度定时器结构体实例interval:定时器间隔时间,类型为ktime_t(纳秒级精度)count:计数器,用于跟踪定时器触发次数MAX_COUNT:最大触发次数宏定义传统定时器。

2025-12-23 11:15:27 519

原创 嵌入式Linux软件中断概述

c// SMP热插拔线程定义.store = &ksoftirqd, // 每CPU线程指针.thread_should_run = ksoftirqd_should_run, // 运行条件.thread_fn = run_ksoftirqd, // 线程函数.thread_comm = “ksoftirqd/%u”, // 线程名称.setup = ksoftirqd_setup, // 设置函数.cleanup = ksoftirqd_cleanup, // 清理函数。

2025-12-22 16:38:00 807

原创 Linux系统74HC595驱动程序解析(基于设备树配置的多设备)

8位串行输入8位并行输出三态输出缓冲级联能力强移位时钟频率可达25MHz主要引脚功能DS (SER):串行数据输入SHCP (SRCLK):移位寄存器时钟STCP (RCLK):存储寄存器时钟OE:输出使能(低电平有效)MR:主复位(低电平有效)Q0-Q7:并行数据输出Q7’:串行数据输出(用于级联)enum{GPIO_NUM_OE = 0, // 输出使能GPIO_NUM_DS, // 串行数据输入GPIO_NUM_SHCP, // 移位寄存器时钟。

2025-12-22 12:41:21 1476

原创 Linux系统PCF8575驱动程序解析

分层设计: 将设备框架与软件模拟I2C驱动分离,提高代码可维护性和可移植性设备树支持: 通过设备树动态配置GPIO引脚,增强驱动灵活性多种接口: 提供字符设备文件和sysfs属性文件两种用户空间接口并发安全: 使用互斥锁保护设备访问,确保并发安全软件模拟I2C实现: 不依赖硬件I2C控制器,可在任何GPIO上实现I2C通信该驱动程序可广泛应用于需要扩展GPIO接口的嵌入式Linux系统,如工业控制、智能家居、物联网设备等场景,通过PCF8575可轻松扩展16个额外的I/O引脚。

2025-12-19 14:49:21 839

原创 Linux系统设备树示例(同一个驱动支持多个设备)

在Linux设备树中,当同一驱动程序需要支持多个相同或类似设备时,可以通过定义多个设备节点来实现。

2025-12-18 10:12:48 630

原创 Linux系统 74HC595 驱动程序解析

分层设计: 将设备框架与硬件控制分离,提高代码可维护性和可移植性设备树支持: 通过设备树动态配置GPIO引脚,增强驱动灵活性多种接口: 提供字符设备文件和sysfs属性文件两种用户空间接口并发安全: 使用互斥锁保护设备访问,确保并发安全可扩展性: 支持级联多个74HC595芯片,扩展更多输出引脚该驱动程序可广泛应用于需要扩展GPIO输出的嵌入式Linux系统,如LED矩阵控制、数码管显示、继电器控制等场景。

2025-12-18 10:08:52 1117

原创 Motorola SD/MMC驱动源码分析

 今天重新看了一下Motorola的SD/MMC驱动源码,并结合以前的分析记录,做一个总结。以E680为例,按照初始化的过程进行分析。模块初始化函数module_init(e680_mmc_init);在函数e680_mmc_init里初始化定时器,定时器的function函数为e680_detect_handler,当卡插入或取出时调用该函数。init_timer(&e680_detection

2008-07-21 12:43:00 1163

原创 移植Motorola开源的SD/MMC驱动程序

移植Motorola开源的SD/MMC驱动程序首先感谢Motorola的开源精神,它告诉其他嵌入式linux的开发人员:你们不是一个人在战斗,不是一个人!好了,言归正传,下面将介绍我的移植过程。内核版本为linux-2.4.21,CPU是PXA255。下载motorola开源的SM/MM驱动程序源码https://opensource.motorola.com/sf/frs/do/listRe

2008-06-05 10:13:00 2043

转载 U-Boot的移植之(四)调试篇:下载U-Boot到目标板进行调试

U-Boot Practically Porting Guide Author: Aaron Wong aaronwong@engineer.com U-Boot的移植之(四)调试篇:下载U-Boot到目标板进行调试 编译完成之后,得到的几个重要文件是: (1) u-boot.bin: 116K,原始二进制文件,用于下载到启动

2008-05-29 10:34:00 700

转载 U-Boot的移植之(三)实战篇:移植U-Boot到XSBASE270开发板

U-Boot Practically Porting GuideAuthor: Aaron Wong aaronwong@engineer.com U-Boot的移植之(三)实战篇:移植U-Boot到XSBASE270开发板1. 在U-Boot中添加XSBASE270目标板的定义具体方法可参考第一节,本篇给出部分细节和要点,假定$U-BOOT为源码根目录。

2008-05-29 10:12:00 784

转载 U-Boot的移植之(二)进阶篇:从源代码看系统启动过程

U-Boot Practically Porting GuideAuthor: Aaron Wong aaronwong@engineer.comU-Boot的移植之(二)进阶篇:从源代码看系统启动过程为什么要分析源代码?分析优秀的源代码本身就是一个学习的过程,也是进行深入研究的必经之路。不过在此我们的主要目的并非要研究U-boot或Bootloader技术本身,而仅仅是为了成功的

2008-05-29 10:09:00 649

网络调试助手(TCP服务端、TCP客户端、UDP、UDP组播)

网络调试助手,支持TCP服务端、TCP客户端、UDP、UDP组播,发送模式支持编辑框、文件、发送收到的数据。

2026-10-27

源代码文件编码格式转换器

实现批量文件编码转换,支持'utf-8', 'gbk', 'gb2312', 'big5', 'ascii'

2025-07-18

Modbus RTU协议模块源码

实现了Modbus RTU协议的从站功能,包括协议解析、功能码处理、寄存器映射和数据收发等核心功能。

2026-04-01

C语言tftp服务端和客户端源码

C语言开发的在Linux平台上的TFTP服务器端和客户端。支持目录列表, 可变块大小,二进制传输模式。单独通信模块,方便移植到其他通信协议。

2026-03-12

轻量级的交互式命令行解析器

一个轻量级的交互式命令行解析器,提供了丰富的功能包括命令解析、TAB自动补全、命令历史记录以及可扩展的命令架构

2026-01-30

Linux驱动proc接口示例源码

Linux驱动proc接口示例源码

2025-12-30

qt-embedded-3.3.4的tslib补丁

qt-embedded-3.3.4的tslib补丁

2008-05-14

Android启动流程代码分析

详细分析Android系统启动流程,由eoeAndroid社区整理发布。

2012-05-11

Android系统移植技术详解

详细介绍在ubun系统下移植Android系统的过程。

2012-07-23

OV5640应用笔记(MIPI接口)

OV5640自动对焦摄像头应用笔记(MIPI接口)

2012-08-29

KINGSTON EMMC4.41参考设计

KINGSTON EMMC4.41参考设计 包括芯片技术资料、参考电路、初始化流程等。

2012-04-24

Eboot SD FAT

Eboot的SD卡升级源码,在210平台测试过。

2012-06-04

linux-2.4.21 patch

linux-2.4.21的补丁

2008-02-01

linux-2.4.21 pxa patch

嵌入式内核linux-2.4.21的PXA处理器的补丁

2008-02-01

patch-2.6.9-mainstone

linux-2.6.9内核补丁 mainstone开发板

2008-09-26

空空如也

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

TA关注的人

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