片内驱动开发(I2C、NAND Flash、LINUX内核)
文章平均质量分 61
专注嵌入式
喜欢LINUX、嵌入式、driver、kernel,寻找志同道合的朋友
展开
-
SDB USBIP introduction
(Redirected from USBIP)SDB:USBIPContents [hide] 1 Introduction2 Architecture3 Data structure3.1 usbip-core layer3.1.1 USB/IP request headers3.1.2 usbi转载 2014-05-28 14:14:01 · 1887 阅读 · 0 评论 -
编译内核出错cc1: error: invalid option `abi=aapcs-linux'
出错信息:CC kernel/bounds.scc1: error: invalid option `abi=aapcs-linux'make[1]: *** [kernel/bounds.s] Error 1make: *** [prepare0] Err转载 2011-08-17 17:17:14 · 1946 阅读 · 0 评论 -
##(两个井号)和#(一个井号)都是什么意思
连接符 ##(两个井号)不知道什么符 #(一个井号)## 连接符号由两个井号组成,其功能是在带参数的宏定义中将两个子串(token)联接起来,从而形成一个新的子串。但它不可以是第一个或者最后一个子串。所谓的子串(token)就是指编译器能够识别的最小语法单元。具体的定义在转载 2011-08-16 10:05:48 · 3703 阅读 · 0 评论 -
Linux虚拟总线platform设备和驱动
Linux Platform Device and Driver作者:Dongas日期:08-06-27 从Linux 2.6起引入了一套新的驱动管理和注册机制:Platform_device和Platform_driver。Linux中大部分的设备驱动,都可转载 2011-08-08 10:15:58 · 2211 阅读 · 0 评论 -
Linux 2.6.XX无法rmmod 问题
使用rmmod会出现 rmmod : chdir(/lib/modules): No such file or directory ? 现在的内核模块在插入卸载时都会要转到/lib/modules/内核版本号/ 这个目录里。所以只要建立这个目录并且把要使用的模块.k转载 2011-08-08 14:02:53 · 1232 阅读 · 0 评论 -
platform_driver与file_operations两种方法开发led驱动
下面是两个LED灯的驱动程序 一个用platform_driver 另一个用file_operations#include #include #include #include #include #include #include /* our cont原创 2011-08-08 13:14:39 · 4040 阅读 · 0 评论 -
i2c_add_driver函数用法
I2C的设备驱动是通过i2c_add_driver(&my_driver)向i2c-core注册的,my_driver中的核心是detach和attach函数,在attach中通过probe探测到总线上的设备并把设备和驱动建立连接以完成设备的初始化。如何探测总线上的设备、Li转载 2011-09-02 16:14:49 · 5451 阅读 · 0 评论 -
Linux I2C核心、总线与设备驱动
转 Linux I2C核心、总线与设备驱动(一)2009-07-06 10:30:04| 分类:linux driver |字号 订阅本章导读I2C总线仅仅使用SCL、SDA两根信号线就实现了设备之间的数据交互,极大地简化对硬件资源和PC转载 2011-08-02 13:52:02 · 1424 阅读 · 0 评论 -
LDD3 第五章 并发与竞争 学习笔记
Linux Device Drivers学习笔记-Chapter.5--------------------------------本章主要涉及并发管理,我觉得这部分的理解需要建立在大量实践的基础之上,光是像本科操作系统课上那样讲道理是很难体会的。我记录了一些关键的函数和转载 2011-08-02 10:11:56 · 779 阅读 · 0 评论 -
Kernel panic - not syncing: No init found. Try passing init= option to kernel.
内核启动时,出现错误:……Kernel panic - not syncing: No init found. Try passing init= option to kernel.即内核找不到系统初始化文件linuxrc这时候应该检查命令行:Kernel command li原创 2011-07-20 09:50:14 · 12710 阅读 · 4 评论 -
micro2440利用LEDS与BUTTONS驱动实现按键控制led灯【开发总结】
最近玩友善之臂的micro2440,实现了按键控制led灯亮灭的功能。在这里总结一下,有什么错误希望高手们能指点一下,同时也希望能够帮到刚学驱动的新手。首先贴出leds驱动程序:#include #include #include #include #include #原创 2011-07-14 10:06:15 · 1574 阅读 · 1 评论 -
开发板nfs挂虚拟机
1.在虚拟机中,vim /etc/exports添加/mnt/nfs 192.168.1.*(rw,sync,no_root_squash) //注意不要输入成中文格式,不然很难找到这个错误!2.在开发板中mount -t nfs 192.168.1.100:/mnt/nf原创 2011-07-15 15:57:41 · 905 阅读 · 0 评论 -
开发板驱动程序makefile模板
CC=arm-linux-gccARCH=armKERNEL_DIR = /opt/linux-2.6.29obj-m := my_bus.oall: $(MAKE) -C $(KERNEL_DIR) M=$(PWD) modulesc原创 2011-08-16 16:39:19 · 1110 阅读 · 0 评论 -
内核中的函数指针三要素
内核中包含众多的函数指针,在大多数结构体中都会用到它,所以掌握函数指针显得极为重要。内核中的函数指针需要注意的有三个要素:1.函数指针的参数由于内核中的函数指针的参数都是不允许改动的,所以要明白参数的来龙去脉。有的参数是内核构造好的,而有的参数是需要你向里面传值的原创 2011-08-17 09:25:12 · 1808 阅读 · 0 评论 -
Linux设备模型之platform总线
从Linux 2.6起引入了一套新的驱动管理和注册机制latform_device和Platform_driver。 Linux中大部分的设备驱动,都可以使用这套机制, 设备用Platform_device表示,驱动用Platform_driver进行注册。 Linu转载 2011-08-19 10:46:54 · 1020 阅读 · 0 评论 -
linux内核模块编译
linux内核模块编译引言为了清晰的编译Linux内核,内核编译系统使用Kbuild规则对编译的过程以及依赖进行规约。在内核模块的编译中,为了保持与内核源码的兼容以及传递编译链接选项给GCC,也使用Kbuild规则。内核模块的源代码可以在内核源码树中,也可以在内核源码树外,当使用Kbuild时,两种情况的编译方式也大致相似。一般的内核模块在开发时,都是放在源码树外的。本文主转载 2014-05-14 09:47:44 · 4914 阅读 · 0 评论 -
linux驱动中的write函数
Linux下我们在使用设备的时候,都会用到write这个函数,通过这个函数我们可以象使 用文件那样向设备传送数据。可是为什么用户使用write函数就可以把数据写到设备里面 去,这个过程到底是怎么实现的呢? 这个奥秘就在于设备驱动程序的write实现中,这里我结合一些源代码来解释如何使得一 个简简单单的writ转载 2014-04-30 12:56:17 · 2045 阅读 · 0 评论 -
关于内核模块挂载出现“no symbol version for”问题的研究
http://blog.chinaunix.net/uid-20543672-id-3023148.html前几天一个同事问我:如果一个模块要调用另一个模块的函数,要不要做什么特别的处理?我当时只是知道需要将被调用的函数EXPORT_SYMBOL();。但是由于具体的模块实验自己还没有做过,我就立马做了一个给他看,自己也验证一下。这实验一做,问题就来了:虽然在编译通过了(有转载 2014-04-30 09:40:53 · 2215 阅读 · 0 评论 -
ECC软件算法的详细说明
ECC算法的详细说明今天本来是想写NAND的读写来着,可是这个东东要用到ECC的算法,就深入进来了,从网上找了些资料,不是很好,直到找到这个,郑重感谢Linux时代网站的wwxbei (旺旺) ,在黑暗中点亮了指明方向的路灯。http://linux.chinaunix.net/bbs/viewthread.php?tid=1116253&extra=page%3D1转载 2012-05-31 16:45:16 · 4555 阅读 · 1 评论 -
UBIFS文件系统介绍
Big red note在了解UBIFS之前一定要注意UBIFS和任何传统的文件系统是不一样的:UBIFS不是运行在block device之上的(比如hard disk, MMC/SD卡,USB flash驱动等等)。UBIFS是运行于raw flash之上。请在开始UBIFS之旅前确保理解raw flash和MMC flash的区别OverviewUBIFS是nokia工程师在转载 2012-05-30 14:21:58 · 6145 阅读 · 0 评论 -
使用USB无线网卡和USB摄像头打造mini2440无线监控系统
一、 我的mini2440开发板上使用的网卡设备为水星MERCURY54M无线USB网卡 MW54U ver:7.0,其内部芯片型号为ATHEROS的ar9271。mini2440的自带linux系统里面是没有这个驱动程序的,但是在官网上usb-wifi-kits-for-mi转载 2011-10-09 09:30:29 · 4116 阅读 · 1 评论 -
DVB机顶盒工作原理
一、DVB-STB的概念与分类 机顶盒(STB,Set Top Box),是指利用网络(电视网络或信息网络)作为传输平台,以电视机作为用户终端,用来增强或扩展电视机功能的一种信息设备。由于人们通常将它放置在电视机的上面,所以又被成为机顶盒或顶置盒。目前机顶盒有模拟和数字之分转载 2011-08-29 15:01:49 · 13053 阅读 · 0 评论 -
内核分析:驱动程序在register时,如何调用probe?
大多数驱动程序都要实现一个probe函数,该函数在register时被调用,具体内核是如何实现的呢?下面我们以LINUX内核中Hamachi.c为例子来分析一下:static struct pci_driver hamachi_driver = { .name = D原创 2011-08-24 17:29:49 · 6658 阅读 · 1 评论 -
最简单的驱动:LED驱动程序与应用程序解析
led驱动程序: 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #inclu原创 2011-08-23 15:14:53 · 2090 阅读 · 0 评论 -
区分:内存空间、物理内存、IO空间、IO端口、IO内存
内存空间:内存地址寻址范围,32位操作系统内存空间为2的32次幂,即4G。物理内存:实实在在的物理设备,一般IO空间:X86特有的一个空间,与内存空间彼此独立的地址空间,32位X86有64K的IO空间。IO端口:当一个寄存器或内存位于IO空间时,称原创 2011-08-22 09:00:44 · 3030 阅读 · 2 评论 -
Linux内核platform_get_resource函数如何得到设备的基地址
以I2c-s3c2410.c驱动为例:…… /* map the registers */ res = platform_get_resource(pdev, IORESOURCE_MEM, 0); if (res == NULL) { dev_err(&p原创 2011-09-16 17:20:42 · 23457 阅读 · 2 评论 -
Linux设备模型之platform总线
Linux设备模型之platform总线- 一:前言Platform总线是kernel中最近加入的一种虚拟总线.在近版的2.6kernel中,很多驱动都用platform改写了.只有在分析完platform总线之后,才能继续深入下去分析.在分析完sysfs和设备驱动模型之后,这转载 2011-07-23 15:07:20 · 1001 阅读 · 0 评论 -
深入理解ioctl
一、 什么是ioctlioctl是设备驱动程序中对设备的I/O通道进行管理的函数。所谓对I/O通道进行管理,就是对设备的一些特性进行控制,例如串口的传输波特率、马达的转速等等。它的调用个数如下:int ioctl(int fd, ind cmd, …);其中fd就是用户程序打开设转载 2011-07-15 14:40:17 · 4134 阅读 · 0 评论 -
检测单个位状态的技巧
static RET_CODE huaya_h2_nand_check_wp(void){ UINT32 status;#ifdef NAND_H2_SIMULATE return 0;#endif /* read ready/busy register */ status = NAND_H2_RD_UINT32(reg_base, NAND_H2_R原创 2011-06-09 14:55:00 · 908 阅读 · 0 评论 -
Linux NAND FLASH驱动程序框架分析
1.Linux-MTD Subsystem FLASH在嵌入式系统中是必不可少的,它是bootloader、linux内核和文件系统的最佳载体。在Linux内核中引入了MTD子系统为NOR FLASH和NAND FLASH设备提供统一的接口,从而使得FLASH驱动的设计大为简化。在引入MTD后Linux系统中FLASH设备驱动可分为四层,如图:转载 2011-06-11 09:06:00 · 1805 阅读 · 2 评论 -
一个底层驱动函数的解读
<br />/**************************************************************************<br /> * Description<br /> * Write a byte into some one byte register.<br /> *<br /> * Parameters<br /> * addr : The register's address.<br /> * data原创 2011-05-27 17:02:00 · 1812 阅读 · 9 评论 -
[经典]Linux内核中ioremap映射的透彻理解
<br />几乎每一种外设都是通过读写设备上的寄存器来进行的,通常包括控制寄存器、状态寄存器和数据寄存器三大类,外设的寄存器通常被连续地编址。根据CPU体系结构的不同,CPU对IO端口的编址方式有两种:<br /><br /> (1)I/O映射方式(I/O-mapped)<br /><br /> 典型地,如X86处理器为外设专门实现了一个单独的地址空间,称为"I/O地址空间"或者"I/O端口空间",CPU通过专门的I/O指令(如X86的IN和OUT指令)来访问这一空间中的地址单元。 <br转载 2011-05-25 13:03:00 · 1348 阅读 · 1 评论 -
NAND Flash硬件原理
<br /> 一、存储数据的原理<br /><br />两种闪存都是用三端器件作为存储单元,分别为源极、漏极和栅极,与场效应管的工作原理相同,主要是利用电场的效应来控制源极与漏极之间的通断,栅极的电流消耗极小,不同的是场效应管为单栅极结构,而FLASH为双栅极结构,在栅极与硅衬底之间增加了一个浮置栅极。<br /> <br /> 浮置栅极是由氮化物夹在两层二氧化硅材料之间构成的,中间的氮化物就是可以存储电荷的电荷势阱。上下两层氧化物的厚度大于50埃,以避免发生击穿。<br /><br />二转载 2011-05-24 08:23:00 · 2557 阅读 · 0 评论 -
NAND Flash ECC 校验原理与实现
NAND FLASH ECC校验原理与实现 收藏<br />参考文档: http://blogimg.chinaunix.net/blog/upfile2/080702112233.pdf<br /><br />NAND FLASH ECC校验原理与实现<br /><br /><br />ECC简介<br /> 由于NAND Flash的工艺不能保证NAND的Memory Array在其生命周期中保持性能的可靠,因此,在NAND的生产中及使用过程中会产生坏块。为了检测数据的可转载 2011-05-24 09:25:00 · 1243 阅读 · 0 评论 -
nand flash 原理简介
<br />Fisrt part :<br />NAND flash和NOR flash的不同<br />NOR flash采用位读写,因为它具有sram的接口,有足够的引脚来寻址,可以很容易的存取其内部的每一个字节。NANDflash使用复杂的I/O口来穿行地存取数据。8个引脚用来传送控制、地址和数据信息。NAND的读和写单位为512Byte的页,擦写单位为32页的块。<br />● NOR的读速度比NAND稍快一些。<br /> ● NAND的写入速度比NOR快很多。<br />转载 2011-05-23 17:26:00 · 1050 阅读 · 0 评论 -
信号量与自旋锁
<br /> 信号量与自旋锁<br />内核同步措施<br /> 为了避免并发,防止竞争。内核提供了一组同步方法来提供对共享数据的保护。 我们的重点不是介绍这些方法的详细用法,而是强调为什么使用这些方法和它们之间的差别。<br /> Linux 使用的同步机制可以说从2.0到2.6以来不断发展完善。从最初的原子操作,到后来的信号量,从大内核锁到今天的自旋锁。这些同步机制的发展伴随 Linux从单处理器到对称多处理器的过度;伴随着从非抢占内核到抢占内核的过度。锁机制越来越有效,也越转载 2011-05-19 13:52:00 · 469 阅读 · 0 评论 -
MTD原始设备与FLASH硬件驱动的对话
MTD原始设备与FLASH硬件驱动的对话 看了>后对以MTD的分层结构以及各层的分工情况有了大致的了解,然而各层之间是如何进行对话的呢,对于这个问题,>上没有详细的去说明。小弟抽空研究了一下,打算从下到上,在从上到下,分两条主线来研究一下MTD原始设备与FLASH硬件驱动的对话(MTD原始设备与更上层的对话留待以后再研究)。以下是第一部分,从下到上的介绍FLASH硬件驱动与MTD原始设备是如何建立联系的。1、首先从入口函数开始:static int s3c24xx_nand_probe转载 2011-05-17 09:04:00 · 1279 阅读 · 0 评论 -
MTD源码分析(2)
<br />mtdchar.c<br /><br />MTD字符设备的文件<br />notifier<br />MTD字符设备的notifier<br />static struct mtd_notifier notifier = { <br /> add:mtd_notify_add,<br /> remove: mtd_notify_remove,<br />};<br /> <br />mtd_lseek<br />格式:<br /转载 2011-05-17 08:10:00 · 929 阅读 · 0 评论 -
MTD源码分析(1)
<br />Linux MTD源代码分析<br />by jim zeus<br />vision 0.1If you got any Problem, Suggestion, Advice or Question ,<br />Please mail to: jimzeus@sina.com.cn<br />Any correction will be appreciated.<br /><br />专有名词:<br /> <br />1.MTD:Memory Technology Dev转载 2011-05-17 08:08:00 · 1329 阅读 · 0 评论 -
NandFlash驱动分析
NandFlash驱动分析(一)2010-03-16 19:05内核启动信息,NAND部分:S3C24XX NAND Driver, (c) 2004 Simtec Electronicss3c2440-nand s3c2440-nand: Tacls=2, 20ns Twrph0=3 30ns, Twrph1=2 20nsNAND device:转载 2011-06-14 16:06:00 · 906 阅读 · 0 评论