自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

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

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

2025-12-30 17:02:23 566

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

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

2025-12-30 10:51:52 649

原创 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 574

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

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

2025-12-29 10:15:00 1145

原创 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 681

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

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

2025-12-25 09:29:27 676

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

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

2025-12-24 11:33:46 693

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

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

2025-12-23 14:30:15 877

原创 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 483

原创 嵌入式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 701

原创 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 1312

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

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

2025-12-19 14:49:21 782

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

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

2025-12-18 10:12:48 403

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

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

2025-12-18 10:08:52 953

原创 Linux系统驱动架构概述

Linux驱动采用。

2025-12-11 09:05:51 447

原创 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 1137

原创 移植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 2002

转载 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 681

转载 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 755

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

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

2008-05-29 10:09:00 629

转载 U-Boot的移植之(一)基础篇:添加新的目标板定义

U-Boot Practically Porting GuideAuthor: Aaron Wong aaronwong@engineer.comU-Boot的移植之(一)基础篇:添加新的目标板定义本文使用最新的U-Boot-1.3.0-rc2。U-Boot本身支持很多开发板,在其源代码中,每个板子都对应一个board/目录下的文件夹(笔者注:这并不确切,因为有的文件夹是供应商

2008-05-29 09:54:00 636

转载 Linux设备驱动程序学习(3-补)-Linux中的循环缓冲区

Linux设备驱动程序学习(3-补)-Linux中的循环缓冲区 参考资料:《Linux内核中的循环缓冲区》作者:西邮 王聪    严重感谢文章作者! 但是(可能是源码版本问题)有些结论并不正确: “而kfifo_init只会接受一个已分配好空间的fifo->buffer,不能和kfifo_free搭配,用kfifo_init分配的kfifo只能用kfree释放。” 阅读源码可以得出这

2008-05-29 09:00:00 574

转载 Linux设备驱动程序学习(3)-并发和竞态

Linux设备驱动程序学习(3)-并发和竞态今天进入《Linux设备驱动程序(第3版)》第五章并发和竞态的学习。 对并发的管理是操作系统编程中核心的问题之一。 并发产生竞态,竞态导致共享数据的非法访问。因为竞态是一种极端低可能性的事件,因此程序员往往会忽视竞态。但是在计算机世界中,百万分之一的事件可能没几秒就会发生,而其结果是灾难性的。 一、并发及其管理竞态通常是作为

2008-05-29 08:58:00 449

转载 Linux设备驱动程序学习(2)-调试技术

Linux设备驱动程序学习(2)-调试技术今天进入《Linux设备驱动程序(第3版)》第四章调试技术的学习。 一、内核中的调试支持在前面已经建议过:学习编写驱动程序要构建安装自己的内核(标准主线内核)。最重要的原因之一是:内核开发者已经建立了多项用于调试的功能。但是由于这些功能会造成额外的输出,并导致能下降,因此发行版厂商通常会禁止发行版内核中的调试功能。为了实现内核调试,我在内核配

2008-05-29 08:56:00 622 1

转载 Linux设备驱动程序学习(1)-字符设备驱动程序

Linux设备驱动程序学习(1)-字符设备驱动程序今天进入《Linux设备驱动程序(第3版)》第三章字符设备驱动程序的学习。这一章主要通过介绍字符设备scull(Simple Character Utility for Loading Localities,区域装载的简单字符工具)的驱动程序编写,来学习Linux设备驱动的基本知识。scull可以为真正的设备驱动程序提供样板。 一、主设备

2008-05-29 08:19:00 501

原创 linux bootp和tftp设置

Linux bootp和tftp设置PC端linux系统为Redhat 9。安装bootp下载bootp-2.4.3-7.i386.rpmrpm -ivh bootp-2.4.3-7.i386.rpm添加配置文件 /etc/bootp     service bootps         {          disable    =no          socket_type    =dg

2008-05-28 14:15:00 1355

原创 crosstool制作arm-linux交叉编译工具链

crosstool制作arm-linux交叉编译工具链今天使用crosstool制作了arm-linux交叉编译工具链,并且成功编译和运行u-boot-1.3.0。通过http://www.kegel.com/crosstool/了解crosstool。要制作的交叉编译工具链版本为3.3.2。具体步骤如下:下载crosstool-0.43.tar.gzmkdir      /home/wxm/

2008-05-26 16:50:00 899

原创 嵌入式Ramdisk

嵌入式Ramdisk首先在内核配置中选择对Ramdisk的支持,一般会在Block devices的选项中。其次在启动参数中设置root=/dev/ram0。然后修改arm/arm/arch-pxa/myboard.c(不同的板子不同)通过函数setup_ramdisk (1, 0, 0, 8192);   setup_initrd (__phys_to_virt(0xa1000000)

2008-05-19 15:37:00 847

转载 嵌入式Linux内核移植相关代码分析

嵌入式Linux内核移植相关代码分析转载于:http://blog.mcuol.com/User/webenson/Article/1816_1.htm本文通过整理之前研发的一个项目 (ARM7TDMI + uCLinux),分析内核启动过程及需要修改的文件,以供内核移植者参考。整理过程中也同时参考了众多网友的帖子,在此谢过。由于整理过程匆忙,难免错 误及讲解的不够清楚之处,请各位网友

2008-05-19 10:00:00 1246

转载 Linux设备驱动程序学习(0)-Hello, world!模块

Linux设备驱动程序学习(0)-Hello, world!模块 一个学习Linux设备驱动程序都会碰到的第一个例程: #include linux/init.h>#include linux/module.h> MODULE_LICENSE("Dual BSD/GPL");sta

2008-05-14 11:18:00 616

Linux驱动proc接口示例源码

Linux驱动proc接口示例源码

2025-12-30

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

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

2025-07-18

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关注的人

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