S3C6410 SPI驱动移植

PN532 SPI驱动代码包(S3C6410实测,含Mifare Classic读写与NDEF格式化示例) 这套代码专为嵌入式Linux或裸机环境设计,基于SPI接口驱动PN532 NFC芯片,在三星S3C6410平台完成实测验证。核心包含PN532.h和PN532.cpp类库,完整支持ISO14443A协议,能识别并通信Mifare Classic卡片,稳定读取UID、执行扇区数据读取(readMifareClassic)、内存块转储(mifareclassic_memdump)、NDEF消息格式化写入(mifareclassic_formatndef)等关键操作。配套多个开箱即用的示例程序:iso14443a 阅读详情

内核版本:linux-2.6.29

 

主要的几个结构

platform_device platform_driver s3c24xx_spi spi_master spi_bitbang spi_device spi_driver spidev_data s3c_spi_info

第一步:注册platform_device

在arch/arm/mach-s3c2410/mach-qt2410.c 中注册platform_device ,其中s3c2410_spi_info 作为platform_device.private_data. platform_device.name 为"s3c2410-spi".


同时在mach-qt2410.c 中注册spi_board_info, 其中spi_board_info.bus_num=0, 与s2c2410_spi_info 中的bus_num 相同, 以后会通过bus_num 比对来匹配。

 

第二步:注册platform_driver

在driver/spi/spi_s3c24xx.c 中注册platform_driver (s3c24xx_spi_driver) ,这个platform_driver 的名字为"s3c2410-spi" ,这样名字与platform_device 的相同,在注册的时候会匹配到一起。并调用s3c24xx_spi_driver.probe 函数s3c24xx_spi_probe 。

 

第三步:注册spi_device

在.probe 函数中创建s3c24xx_spi ,该结构中包括了一个spi_bitbang, 一个spi_master ,

配置了一些互相关联的项以后( 将3c2410_spi_info.bus_num 作为spi_master.bus_num) ,即扫描注册的spi_board_info 链表,查找所有spi_board_info.bus_num 与spi_master.bus_num 相等的项,并为每一项注册spi_device ,其中spi_device 的名字为spi_board_info. Modalias 。

 

第四步:注册字符设备,注册spi_driver

在driver/spi/spidev.c 中,先注册 了以SPIDEV_MAJOR 为主设备号,spidev_ops 为文件操作集的字符设备 。

注册spi_driver . 在driver/spi/spidev.c 中,其中spi_driver 的名字为”spidev” ,这样与刚才注册的spi_device 相匹配,在spi_driver.probe 并为每个匹配的spi_device 创建了一个spidev_data ,并在sys 系统中注册一个带有以SPIDEV_MAJOR 为主设备号,以0开始的递增的数字为副设备号的设备点,这样如果有udev 运行的话会在/dev 下面节点。

 

好了,所有的工作准备就绪了,用户可以通过访问/dev/ 下的节点来使用这个驱动了。

 

S3C6410嵌入式Linux系统WiFi驱动开发教程 Linux驱动程序是操作系统的核心组件,它允许操作系统与硬件设备进行通信。驱动程序能够将硬件的细节抽象化,为上层应用提供统一的接口。随着Linux在嵌入式设备中的普及,编写高效的驱动程序成为了IT行业中的一个重要技能。S3C6410是三星电子推出的一款基于ARM1176JZF-S核心的高性能应用处理器,广泛应用于移动设备和智能设备中。它具备一系列的多媒体和外设接口功能,使其成为连接无线模块的理想选择。 阅读详情

相关推荐

S3C6410数据手册(中文高清无水印带目录)完整版

S3C6410作为三星公司推出的高性能嵌入式应用处理器,广泛应用于移动设备、工业控制与多媒体终端中。该处理器基于ARM1176JZF-S内核,采用65nm工艺制造,主频可达667MHz,具备良好的功耗控制与多媒体处理能力。其系统架构以AMBA多层总线为核心,集成AHB(高性能总线)与APB(低速外设总线),实现内存控制器、DMA、中断控制器、定时器、UART等模块的高效协同。graph TD芯片内部通过多层总线矩阵支持多个主设备(如CPU、DMA)并发访问,有效提升系统带宽利用率。

weixin_33363025的博客 1234

linux下SPI驱动----OK6410(一)

SPI是同步外设接口,由摩托罗拉公司开发的全双工同步串行总线,接口有MISO、MOSI、SCK和SS四线组成。在这里不具体介绍SPI的工作原理了,相信学SPI驱动的同学已经在单片机上实现过了SPI的通讯。       学习SPI驱动首先必须要建立一个分层的设计思想,分层设计不光在SPI中体现,在linux内核中都是分层的思想,使得linux具有强大的适应性。分层设计思想在linux的Input、

laoylhuli 2118

S3C6410嵌入式系统开发:从裸机到驱动代码详解

S3C6410微处理器是三星电子推出的一款高性能、低功耗的ARM11架构处理器,广泛应用于移动设备和嵌入式系统中。它具有强大的图形处理能力和丰富的接口资源,可以支持Linux、Android等多种操作系统。S3C6410处理器搭载了ARM1176JZF-S核心,工作频率可达667MHz,具有32KB的指令缓存和32KB的数据缓存。此外,它集成了多种外设接口,如USB HOST/Device,SD/MMC等,使其在数据存储和传输方面具有优势。

weixin_42372837的博客 896

OK6410开发板linux系统下的SPI驱动和测试

OK6410下的SPI驱动是可以用的,但是飞凌把它作为其它用途了,我们修改一些代码才能在/dev目录下创建SPI的设备节点文件Step1:打开arch/arm/mach_s3c64XX/mach_mini6410.c 增加如下代码: 点击(此处)折叠或打开 static void cs_set_level(unsigned line_id, int lvl) {  gpio_directio...

WXXGoodJob的博客 570

基于S3C6410处理器的QT广告机系统毕业设计项目实战

你看,S3C6410虽然老了,但它教会我们的东西一点没过时:软硬协同、资源受限下的优雅设计、系统思维。无论你是做物联网、工业控制还是智能硬件,这套方法论都能复用。毕竟,真正的嵌入式工程师,不是只会写代码的人,而是能让机器“听话”、让系统“活着”的那个人。💪所以下次当你路过一块广告屏,不妨多看一眼——也许它的“心脏”,正跳动着你熟悉的代码呢?😉本文还有配套的精品资源,点击获取。

weixin_31176789的博客 911

ADS8344读写程序

基于LPC1768的spi接口读写ADS8344的C代码

S3C2440 Linux驱动移植——SPI

PC主机:Ubuntu 10.4 目标板:TQ2440开发板,linux内核2.6.32 本文将从原理上讲解如何进行SPI驱动移植。作者希望在移植SPI驱动之前,您已对SPI子系统有所了解。 本文的讲解将基于我所写的spi子系统分析: 基于S3C2440的嵌入式Linux驱动——SPI子系统解读(一) 基于S3C2440的嵌入式Linux驱动——SPI子系统解读(二)

嵌入式Linux 4810

UE5 使用Slate制作对话窗口

使用Slate制作对话框窗口并获取对话框结果,非UMG

qq_25521145的博客 3189

Linux SPI总线和设备驱动架构之三:SPI控制器驱动

通过第一篇文章,我们已经知道,整个SPI驱动架构可以分为协议驱动、通用接口层和控制器驱动三大部分。其中,控制器驱动负责最底层的数据收发工作,为了完成数据的收发工作,控制器驱动需要完成以下这些功能: 1.    申请必要的硬件资源,例如中断,DMA通道,DMA内存缓冲区等等; 2.    配置SPI控制器的工作模式和参数,使之可以和相应的设备进行正确的数据交换工作; 3.    利用通用接口层

DroidPhone的专栏 2万+

【开源~磁悬浮】零代码,纯硬件闭环:从霍尔到H桥的磁悬浮稳定术

本文详细介绍了如何不依赖任何代码,仅通过模拟和数字电路的组合,实现一个完整的磁悬浮闭环控制系统。从霍尔传感器检测位置,到运放电路进行信号调理与模拟PID控制,再到H桥驱动电磁铁执行纠偏,全程使用基础电子元器件搭建。文章深入剖析了系统原理、电路设计、调试技巧与实践经验,展现了纯硬件实现自动控制的独特魅力与挑战。

perl8的博客 622

告别黑窗口!用VSCode+Native Debug调试C/C++程序,比GDB命令行舒服多了

本文介绍了如何使用VSCode配合Native Debug扩展来调试C/C++程序,替代传统的GDB命令行方式。通过可视化调试环境,开发者可以更高效地管理断点、查看变量和调用栈,大幅提升调试效率。文章详细讲解了环境配置、核心调试功能及高级技巧,帮助开发者快速上手这一现代调试工具。

weixin_26833139的博客 251

大厂案例:快手AI人才管理系统的架构设计与效果

凌晨两点刷简历的HR、说不清“团队离职率高”原因的业务leader、不知道“该学什么”的员工——这些人力资源场景中的“痛点”,曾是快手高速增长期的真实写照。当员工规模从几千扩张到几万,传统HR系统的“经验驱动”模式彻底失效。2021年,快手启动AI人才管理系统建设,用“数据+算法”重构招聘、培养、绩效、留存全流程。本文将拆解这套系统的架构设计逻辑核心技术实现,以及真实业务效果AI如何让HR从“事务执行者”变成“战略伙伴”?

大模型应用工坊 1712

S3C6410硬件模块分析 -- SDIO WiFi模块分析

转载至:http://www.linuxidc.com/Linux/2011-06/37480.htm 手头的上课s3c6410开发板,带了SDIO接口的WiFi模块,但是没有Linux下的驱动,因此在上网络驱动时课参考s3c2440的实现试着分析和调试一下SDIO的WiFi驱动。    我手头使用模块是WM-G-MR-09模块,其主控实际采用了marvell8686的IC来作为主控芯片,是由

Gabby 1967

手把手教你搞定Pattern Recognition Letters的LaTeX投稿(附elsarticle.cls生成避坑指南)

本文详细指导如何在Pattern Recognition Letters(PRL)期刊上使用LaTeX进行投稿,特别针对elsarticle.cls文件的生成与常见问题提供避坑指南。从模板准备、文件上传到投稿后的验证,系统梳理全流程技术要点,帮助研究者高效完成学术论文投稿。

weixin_33824385的博客 430

HTML金色流星雨(完整代码)

HTML实现金色流星雨动态效果的完整代码。

AIGC 994

基于linux的OLED移植过程

作者:余黔江   硬件平台:S3C6410 软件环境:Linux2.3.6 文件系统:android2.3   一、移植前准备工作 1.      熟悉s3c6410的SPI驱动工作流程 2.      将s3c6410 SPI的TX与RX连接到一起,测试SPI是否正常 3.      在SPI正常的前提下,仔细阅读ssd1353芯片手册,尤其是上电时序部分   二、开始移植

yqj1123的专栏 2291

【四足机器人项目实战】四足机器人腿部机械结构设计

系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 TODO:写完再整理 文章目录系列文章目录前言 前言 认知有限,望大家多多包涵,有什么问题也希望能够与大家多交流,共同成长! 本文先对四足机器人–腿部机械结构设计做个简单的介绍,具体内容后续再更,其他模块可以参考去我其他文章 提示:以下是本篇文章正文内容 为了减轻腿部惯量,使用有限元分析着重进行轻量化设计,小腿采用工字梁方案,大腿采用内部镂方案,并使用1.5 mm的AL 6061硬质材料,轻量化的腿部设了腿部运动时摆动

qq_35635374的博客 7539

SDIO WiFi模块分析

S3C6410硬件模块分析 -- SDIO WiFi模块分析 (2011-05-04 17:42) 分类: 底层开发 Andrew Huang  转载请注明作者及网址.   手头的上课s3c6410开发板,带了SDIO接口的WiFi模块,但是没有Linux下的驱动,因此在上网络驱动时课参考s3c2440的实现试着分析和调试一下SDIO的WiFi驱动。

jidonghui的专栏 7958

【微服务】Spring Aop原理深入解析

spring原理深度解析

congge 1万+

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

SPI在linux3.14.78 FS_S5PC100(Cortex A8)和S3C2440上驱动移植(deep dive)

由于工作的原因,对SPI的理解最为深刻,也和SPI最有感情了,之前工作都是基于OSEK操作系统上进行实现,也在US/OS3上实现过SPI驱动的实现和测试,但是都是基于基本的寄存器操作,没有一个系统软件架构的思想,感觉linux SPI驱动很强大,水很深,废话少说,SPI总线上有两类设备:一类是主机端,通常作为SOC系统的一个子模块出现,比如很多嵌入式MPU中都常常包含SPI模块。一类是从机被控端,...

weixin_42005898的博客 292

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

嵌入式Linux应用程序访问物理地址的实例

嵌入式Linux应用程序访问物理地址的实例 2013-05-28 14:09:25   来源:EEWORLD    关键字: Linux  驱动  可移植  接口 前言   按照Linux分层驱动思想,外设驱动与主机控制器的驱动不相关,主机控制器的驱动不关心外设,而外设驱动也不关心主机,外设访问核心层的通用应用程序接口进行数据传输,主机和外设之间可以进行任意的组合。这样思想要求

zz的博客 3787

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

S3C6410 SPI 裸机驱动

刚刚写的SPI驱动,想移植到LINUX上面用来读写SD卡 只测试了发送,没有测试接收.   spi.c   /************************************************************************************************************* * 文件名: spi.c * 功能: S3C6410...

与其用泪水悔恨昨天,不如用汗水拼搏今天 7607

can2--tiny6410移植mcp2515驱动

根据te6410 移植mcp2515到tiny6410,将tiny按照te的连线如下 tiny6410,linux2.6.38移植mcp251x 使用spi1,eint8 1.修改板子文件mach-mini6410.c,加入plateform平台设备 先加入头文件 //for spi add by medconn #include <plat/s3c64xx-...

weixin_30505043的博客 251

OK6410 LCD驱动移植

今天完成了 OK6410 的LCD 驱动移植,那么直接进入正题,我的操作环境是: 主机: XP系统, VMware Ubuntu 10.10  虚拟机。   开发板:OK6410,A板,256M+2G 。   LCD :飞凌4.3 寸TFT ,WXCAT43, 480*272             Uboot: 飞凌体统的Uboot。        移植内核版本:Linux1.6.36.2。

ACanoe的专栏 6385

SPI在linux3.14.78 FS_S5PC100(Cortex A8)和S3C2440上驱动移植(deep dive)_0

由于工作的原因,对SPI的理解最为深刻,也和SPI最有感情了,之前工作都是基于OSEK操作系统上进行实现,也在US/OS3上实现过SPI驱动的实现和测试,但是都是基于基本的寄存器操作,没有一个系统软件架构的思想,感觉linux SPI驱动很强大,水很深,废话少说,SPI总线上有两类设备:一类是主机端,通常作为SOC系统的一个子模块出现,比如很多嵌入式MPU中都常常包含SPI模块。一类是从机被控端,

缠中说禅的博客 364
上一篇: [转帖]USB OTG学习笔记
下一篇: linux2.6驱动编程第一例:hello,world的实现步骤
willand1981
博客等级 码龄18年 136粉丝 31原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值