- 博客(114)
- 收藏
- 关注
原创 博客寻址
http://blog.chinaunix.net/uid/26820608/frmd/-1.html Linux驱动http://blog.csdn.net/intrepyd?viewmode=contents APUE笔记 http://blog.csdn.net/sailor_8318?viewmode=contentshttp://blog.csdn.net/goo
2012-06-04 14:22:24 668
转载 file_operation
[cpp] view plaincopystruct file_operations{ struct module *owner; // 指向拥有该结构的模块的指针,避免正在操作时被卸载,一般为初始化为THIS_MODULES loff_t (*llseek) (struct
2012-11-01 09:30:39 702
转载 常见的单链表题目
一些常见的单链表题目,总结思路和实现代码。1.单链表的反序2.给单链表建环3.检测单链表是否有环4.给单链表解环5.检测两条链表是否相交6.不输入头节点,删除单链表的指定节点(只给定待删除节点指针) 1.单链表的反序[cpp] view plaincopy//逆转链表,并返回逆转
2012-10-28 14:50:42 647
转载 堆和栈
堆(heap)和栈(stack)是非常重要的概念,当我们进行程序开发时理解它们非常重要,尤其是对于嵌入式系统开发。比如在嵌入式系统中,任务的栈通常都很小,可能也就几K字节。在这种情况下,我们就应当尽可能不要将占用内存大的变量分配在栈上,而是应当分配在堆上;此外,也尽量不要采用递归的方式来设计程序,否则很容易造成栈溢出。从本质上说,堆和栈都是内存,那么我们只能从概念上对其进行区分了。为了方便
2012-10-22 08:56:33 555
转载 C语言指针5分钟教程
指针、引用和取值什么是指针?什么是内存地址?什么叫做指针的取值?指针是一个存储计算机内存地址的变量。在这份教程里“引用”表示计算机内存地址。从指针指向的内存读取数据称作指针的取值。指针可以指向某些具体类型的变量地址,例如int、long和double。指针也可以是void类型、NULL指针和未初始化指针。本文会对上述所有指针类型进行探讨。根据出现的位置不同,操作符 * 既可以用来声
2012-09-24 22:46:04 603
转载 大端模式 小端模式
大端模式,是指数据的低位(就是权值较小的后面那几位)保存在内存的高地址中,而数据的高位保存在内存的低地址中,这样的存储模式有点儿类似于把数据当作字符串顺序处理:地址由小向大增加,而数据从高位往低位放; 小端模式,是指数据的低位保存在内存的低地址中,而数据的高位保存在内存的高地址中,这种存储模式将地址的高低和数据位权有效地结合起来,高地址部分权值高,低地址部分权值低,和我们的逻辑方法一致。
2012-09-08 14:27:01 744
转载 局部变量、全局变量、堆、堆栈、静态和全局
预备知识—程序的内存分配 一个由C/C++编译的程序占用的内存分为以下几个部分 栈区(stack)— 由编译器自动分配释放,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 堆区(heap) — 一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表。 全局区(静态区)(static)—,全局变量和静态
2012-09-08 14:26:13 1304
转载 strcpy,strcat和strcmp的实现源代码
char* strcpy(char * dst, const char * src){char * cp = dst;while( *cp++ = *src++ ); /* Copy src over dst */return( dst );}Char* strcat ( char * dst , const char * src )
2012-08-31 20:10:06 556
转载 触摸屏驱动分析(s3c-ts.c)(Linux)(分析)
/* linux/drivers/input/touchscreen/s3c-ts.c * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as publish
2012-08-30 15:36:34 1304
原创 C语言 笔\面试
do{ }while (0); 通过do-while(0)宏定义将代码打包起来,成为一个独立的语法单元,从而不会引起上下文混淆,同时因为绝大多数的编译器都能够识别do{…}while(0)这种无用的循环并进行优化,所以使用这种方法也不会导致程序的性能降低。下面是两个例子。Imagine a macro of several lines of code like:#define
2012-08-24 10:32:49 1736
转载 Android从驱动层到应用程序层的通信
研究一下Android从驱动层到应用层的通信机制是很有必要的,如新增加一个硬件并在应用层去控制硬件都需要用到,目的是知道需要增加哪些东西删改哪些东西而让系统依然工作正常。总共需要增改的有四个东西,驱动、服务(jni、java)、应用apk采用的方式是在驱动层写个字符型设备驱动其中内含一个定时器,每隔2秒发送一个uevent事件并改变sys下相关文件的内容,然后建立一个服务去读取文件并通过i
2012-08-17 14:44:36 2068
转载 linux设备驱动之USB主机控制器驱动分析
----------------------------------------- 本文系本站原创,欢迎转载!转载请注明出处:http://ericxiao.cublog.cn/------------------------------------------一:前言Usb是一个很复杂的系统.在usb2.0规范中,将其定义成了一个分层模型.linux中的代码也是按照这个分层模
2012-08-16 09:34:40 5979
转载 Usb Hub代码分析
如需引用请注明出处:http://blog.csdn.net/zkami 作者:ZhengKui在host controller初始化的时候一定会调用hub_probe进行初始化,至少对root hub初始化hub_probe(struct usb_interface *intf, const struct usb_device_id *id) (hub.c)此时struct us
2012-08-15 15:46:50 1918
转载 Linux USB驱动程序基础
Linux USB Driver BasicsIntroductionDrivers are software components that operating systems use to provide hardware specific services to applications. This webpage attempts to document the basic
2012-08-14 09:32:20 992
转载 uevent分析
1.kobject, ktype, ksetkobject代表sysfs中的目录。ktype代表kobject的类型,主要包含release函数和attr的读写函数。比如,所有的bus都有同一个bus_type;所有的class都有同一个class_type。kset包含了subsystem概念,kset本身也是一个kobject,所以里面包含了一个kobject对象。另外
2012-08-07 09:53:56 627
转载 年终工作总结:给新手程序员的几个建议
马上到年末了,自己也对今年做了一下总结,自己有哪些优点,有哪些还需要加强。每当我想到今年比较满意的地方,对比之前,就会有这样一个思考:如果以前的我要是知道这些该多。在这里给大家分享一下经验,让新人少走一些弯路。做事要积极主动,态度决定一切说这些,可能有人会觉得,这些都明白,都是大道理,只是怎么样执行的问题,下面我举一个真实的例子。我曾经带过的两位新人,A君上班,交代给他负责
2012-08-06 11:15:02 904
转载 个人对kobject的一点研究
kobject,kset,子系统层次结构内核通常用kobject 结构将各个对象连接起来组成一个分层的结构体系。 parent 是指向另外一个kobject 结构(分层结构中上一层的节点)的指针,主要用途是在 sysfs 层次中定位对象. 一个 kset 是嵌入到相同类型结构的 kobject 的集合。但 struct kobj_type 关注的是对象的类型,而stru
2012-08-06 10:36:05 500
转载 sysfs文件系统学习
为了更好地了解kobject的层次关系,有必要了解一下这种层次关系的表现机制:sysfs。本文简单地学习了一下sysfs,大部分内容来自内核文档sysfs.txt。好了,开始我们的学习之旅,呵呵。 何为sysfs sysfs是一种基于ram的文件系统,它提供了一种用于向用户空间展现内核空间里的对象、属性和链接。sysfs与kobject层次紧密相连,它将kobject
2012-08-06 10:35:19 643
转载 linux设备模型--代码分析
上面分析了kobject.kset,ktype.这三个结构联合起来一起构成了整个设备模型的基石.而bus.device.device_driver.则是基于kobject.kset.ktype之上的架构.在这里,总线,设备,驱动被有序的组和在一起.Bus.device.device_driver三者之间的关系如下图所示: 如上图所示.struct bus_type
2012-08-02 15:12:22 534
转载 如何下载ANDROID源代码
看完了前面说的几本书之后,对Linux Kernel和Android有一定的认识了,是不是心里蠢蠢欲动,想小试牛刀自己编译一把Android源代码了呢?一直习惯使用Windows系统,而Android源代码是不支持在Windows上编译上,于是决定使用虚拟机安装Ubuntu,然后下载、编译和安装Android源代码。 一. 环境准备。 1. 磁盘空间预留20G左右,
2012-08-02 10:42:25 662
转载 USB系统设备模型建立流程
USB设备模型建立流程概览S3c2440处理器中集成有USB控制器,该主控制器作为平台设备s3c_device_usb添加到内核,该设备与驱动ohci_hcd_s3c2410_driver匹配后调用函数usb_hcd_s3c2410_probe。在函数usb_hcd_s3c2410_probe中获取硬件资源,为USB主控制器结构体usb_hcd分配内存,调用函数usb_add_hc
2012-07-25 15:46:27 1609
转载 Usb设备驱动1:root hub 设备驱动安装
Usb设备驱动1:root hub 设备驱动安装按照设备模型的总线,设备,驱动模式,一条总线会把所有这条总线上的设备和驱动都挂载到总线的设备链表和驱动链表上,具体到usb总线上,就是usb主控制器,hub等设备,都需要按照设备模型的要求,作为设备挂载到usb总线的设备链表上,同时也需要把usb主控制器,hub的驱动也挂载到驱动链表上,并且使得设备和设备驱动能够相互关联起来,才能使得设备能够使用
2012-07-25 15:12:47 2984
转载 android 中的make命令
如果android的source在android21文件夹(即Makefile文件的目录)下,先执行cd android21,然后可以执行下面的命令;1、make Settings生成Settings.apk的文件2、 make snod等同于make droid该命令生成一个新的系统映像system.img,速度比make快很多,但不稳定(有的时候不好用)将这
2012-07-19 09:36:30 667
转载 udev class_create() device_create()
在刚开始写Linux设备驱动程序的时候,很多时候都是利用mknod命令手动创建设备节点,实际上Linux内核为我们提供了一组函数,可以用来在模块加载的时候自动在/dev目录下创建相应设备节点,并在卸载模块时删除该节点,当然前提条件是用户空间移植了udev。内核中定义了struct class结构体,顾名思义,一个struct class结构体类型变量对应一个类,内核同时提供了class_c
2012-07-19 08:39:05 893
转载 Linux USB驱动框架分析
Linux USB驱动框架分析(一)初次接触和OS相关的设备驱动编写,感觉还挺有意思的,为了不至于忘掉看过的东西,笔记跟总结当然不可缺,更何况我决定为嵌入式卖命了。好,言归正传,我说一说这段时间的收获,跟大家分享一下Linux的驱动研发。但这次只先针对Linux的USB子系统作分析,因为周五研讨老板催货。当然,还会顺带提一下其他的驱动程式写法。 事实上,Linux的设备驱动都遵循一个惯
2012-06-29 09:46:20 1122
转载 usb驱动的基本结构和函数简介
几个重要的结构struct--接口[plain] view plaincopystruct usb_interface { /* array of alternate settings for this interface, * stored in no particular
2012-06-28 10:09:16 2855
转载 Linux驱动程序中比较重要的宏
MODULE_DEVICE_TABLE (usb, skel_table); 该宏生成一个名为__mod_pci_device_table的局部变量,该变量指向第二个参数内核构建时,depmod程序会在所有模块中搜索符号__mod_pci_device_table,把数据(设备列表)从模块中抽出,添加到映射文件/lib/modules/KERNEL_VERSION/module
2012-06-28 10:08:39 1197
转载 Linux下的硬件驱动——USB设备
前言USB是英文"Universal Serial Bus"的缩写,意为"通用串行总线"。是由Compaq(康柏)、DEC、IBM、Intel、NEC、微软以及Northern Telecom(北方电讯)等公司于1994年11月共同提出的,主要目的就是为了解决接口标准太多的弊端。USB使用一个4针插头作为标准插头,并通过这个标准接头,采用菊花瓣形式把所有外设连接起来,它采用串行方式传输数据
2012-06-28 09:52:41 1943
转载 Linux环境下USB的原理、驱动和配置
本文由CSDN 特别约稿,作者为北京中科红旗软件技术有限公司 嵌入式工程师 梁国军 随着生活水平的提高,人们对USB设备的使用也越来越多,鉴于Linux在硬件配置上尚不能全部即插即用,因此关于Linux如何配置和使用,成为困扰我们的一大问题。 什么是USB?USB是英文Universal Serial Bus的缩写,意为通用串行总线。USB最初是为了替代许多不
2012-06-28 09:50:15 798
转载 usb skel 详解
注册USB驱动程序:所有的USB驱动程序都必须创建的结构体是struct usb_driver。这个结构体必须由USB驱动程序来填写,包括许多回调函数和变量,它们向USB核心代码描述USB驱动程序。创建一个有效的struct usb_driver结构体,只须要初始化五个字段就可以了,在框架程序中是这样的:static struct usb_driver skel_driver = {
2012-06-27 15:10:38 861
转载 Android通过JNI调用驱动程序(完全解析实例)
要达到的目的:android系统中,用JAVA写界面程序,调用jni中间库提供的接口,去操作某个驱动节点,实现read,writer ioctl等操作!这对底层驱动开发人员是很重要的一个调试通道,也是android 系统下提供一些特殊功能接口的方法!本文前提:我们假设已经写了一个驱动程序,它是控制LED的亮灭的,并且创建了一个节点:/dev/vib,也就是通过open这个vib节点,可以r
2012-06-20 21:49:23 6251
转载 Android驱动例子(LED灯控制)
本例子,讲述在android2.1上完全自已开发一个驱动去控制硬件口并写应用测试该驱动,通过这样一个例子,解析android下的驱动开发流程的应用调用流程,可以说是很好的入门引导。要达到的效果:通过android的应用,调用驱动程序,在开发板上控制4个LED的亮灭。 一、硬件原理 如上图,通过4个IO口控制这LED,低电平L
2012-06-20 21:14:22 2810
转载 Android JNI知识简介
Java Native Interface (JNI)标准是java平台的一部分,它允许Java代码和其他语言写的代码进行交互。JNI 是本地编程接口,它使得在 Java 虚拟机 (VM) 内部运行的 Java 代码能够与用其它编程语言(如 C、C++ 和汇编语言)编写的应用程序和库进行交互操作。1.从如何载入.so档案谈起 由于Android的应用层的类都是以Java写的,这些Ja
2012-06-20 19:05:16 456
转载 Android HAL
1 HAL产生的原因Android HAL(Hardware Abstraction Libraries)是处于user space的最下层,是Android定义的要求Linux内核空间来具体实现的驱动接口。根据Google的说法,使用user-space HAL的原因为:1 Not all components have standardizedkernel driver interfa
2012-06-15 11:26:30 577
转载 Android HAL(硬件抽象层)介绍以及调用
1 HAL简介 Android 的 HAL(Hardware Abstract Layer硬件抽象层)是Google因应厂商「希望不公开源码」的要求下,所推出的新观念,其架构如下图。虽然 HAL 现在的「抽象程度」还不足,现阶段实作还不是全面符合 HAL的架构规划,不过也确实给了我们很好的思考空间。ce - 许兴旺的博客" border="0" alt="Android HAL 分析
2012-06-15 11:25:35 704
转载 Android.mk的解析
Android中增加本地程序或是库,这些程序和库与其所在的路径是没有关系的,只和他们的Android.mk文件有关。Android.mk和普通的Makefile略有不同,Android.mk具有统一的写法主要是包含一些系统的宏在Android.mk中编译一个可执行程序的模板如下所示:#Test ExeLOCAL_PATH:= $ (call my-dir)include $(C
2012-06-13 19:44:35 527
转载 设备文件系统剖析与使用 udev mdev devfs
一、什么是Linux设备文件系统 首先我们不看定义,定义总是太抽象很难理解,我们先看现象。当我们往开发板上移植了一个新的文件系统之后(假如各种设备驱动也移植好了),启动开发板,我们用串口工具进入开发板,查看系统/dev目录,往往里面没有或者就只有null、console等几个系统必须的设备文件在这儿外,没有任何设备文件了。那我们移植好的各种设备驱动的设备文件怎么没有啊?如果要使用这些
2012-06-13 19:40:23 1214
转载 Linux 内核调试器 调试指南
简介:调试内核问题时,能够跟踪内核执行情况并查看其内存和数据结构是非常有用的。Linux 中的内置内核调试器 KDB 提供了这种功能。在本文中您将了解如何使用 KDB 所提供的功能,以及如何在 Linux 机器上安装和设置 KDB。您还将熟悉 KDB 中可以使用的命令以及设置和显示选项。Linux 内核调试器(KDB)允许您调试 Linux 内核,四川旅游。这个恰如其名的工具实质上是内核代码的
2012-06-12 18:39:32 1512
转载 linux设备模型详解
Linux 2.6内核的一个重要特色是提供了统一的内核设备模型。随着技术的不断进步,系统的拓扑结构越来越复杂,对智能电源管理、热插拔以及plug and play的支持要求也越来越高,2.4内核已经难以满足这些需求。为适应这种形势的需要,2.6内核开发了全新的设备模型。1. Sysfs文件系统Sysfs文件系统是一个类似于proc文件系统的特殊文件系统,用于将系统中的设备组织成层次结构,并
2012-06-12 14:25:38 525
转载 想成为嵌入式程序员应知道的0x10个基本问题
C语言测试是招聘嵌入式系统程序员过程中必须而且有效的方法。这些年,我既参加也组织了许多这种测试,在这过程中我意识到这些测试能为面试者和被面试者提供许多有用信息,此外,撇开面试的压力不谈,这种测试也是相当有趣的。从被面试者的角度来讲,你能了解许多关于出题者或监考者的情况。这个测试只是出题者为显示其对ANSI标准细节的知识而不是技术技巧而设计吗?这 是个愚蠢的问题吗?如要你答出某个字符的ASCII
2012-06-12 14:22:38 506
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人