- 博客(44)
- 资源 (11)
- 收藏
- 关注
转载 学习ARM+Linux的很好的资料
<br />前段时间做了一个关于ARM9 2440资料的汇总帖,很高兴看到***和CSDN等论坛朋友们的支持和鼓励。当年学单片机的时候datasheet和学习资料基本都是在论坛上找到的,也遇到很多好心的高手朋友,耐心的回答我提出的问题。感激、图报,很简单的想法。希望这次整理的资料帖能对更多的嵌入式爱好者朋友带来帮助! <br /><br />PS: <br /> 在此特别感谢 古道热肠 版主把我的帖子加精,给小弟极大鼓舞! <br /><br />嵌入式入门篇: <br /><br />什么是嵌入式系统
2010-07-31 17:11:00 3347 1
转载 Linux Input Device
Linux 的 Input Device 是重要的一個 subsystem,在進行實例介紹前,先大略了解一下相關的 API。Linux Input Deviceinput.c是Linux的”input”驅動程式,主要支援鍵盤與滑鼠的輸入;input.c介面有趣的地方是採用了事件(event)的方式來處理輸入,以下是input.c介面重要的資料結構與函數:* struct input_dev* void input_event(struct input_dev *dev, unsigned int type
2010-07-28 20:31:00 1595
转载 linux 2.6 输入子系统 键盘驱动的实现
好久没来了!写点东西.关于linux 2.6下面的键盘驱动的实现. 2.6内核采用"input sub system" 的概念.将输入驱动分成三块: driver,input core和Event handler. "一个输入事件,如鼠标移动,键盘按键按下,joystick的移动等等通过 Driver -> InputCore -> Eventhandler -> userspace 的顺序到达用户空间传给应用程序。" 关于输入子系统详细的文章有一个老兄写了一篇: http://blog.
2010-07-28 20:09:00 1716
转载 Android 架构解析及驱动 键盘篇
-- 作者:老树-- 发布时间:2010-6-2 15:01:19-- Android 架构解析及驱动 键盘篇一、用户空间 ADROID 2.1 架构解析 7 键盘 以上链接,详细介绍了Android用户空间按键的操作,最终通过不断轮询所有设备,直到读取有POLLIN事件产生的设备状态:if(mFDs[i].revents & POLLIN) {res = read(mFDs[i].fd, &iev, sizeof(iev));......二、底层驱动1.设备注册stati
2010-07-28 19:23:00 1936
转载 set_bit()
<br />将addr的第nr位置为1 <br />假设*addr = 0, nr = 3;则执行结果为1000(二进制数)<br />extern __inline__ int set_bit(int nr,long * addr)<br />...{ <br /> int mask, retval;<br /> addr += nr >> 5; //(1)<br /> mask = 1 << (nr & 0x1f); //(2)<br /> cl
2010-07-28 18:57:00 3433
转载 Linux Input Device 介绍: APIs
Linux 的 Input Device 是重要的一个 subsystem,在进行实例介绍前,先大略了解一下相关的 API。 Linux Input Device input.c是Linux的"input"驱动程式,主要支援键盘与滑鼠的输入;input.c介面有趣的地方是采用了事件(event)的方式来处理输入,以下是input.c介面重要的资料结构与函数: * struct input_dev * void input_event(struct input_dev *dev, unsig
2010-07-28 18:12:00 1359
转载 Linux-2.6.20的LCD驱动分析
一、让LCD显示可爱的小企鹅还是先说说环境吧,处理器为S3C2410,linux的版本当然是2.6.20的。下面先说说怎样让LCD上显示出可爱的小企鹅。最直接的步骤如下(记住不要问为什么哈~_~,一步一步跟着走就行了):1. 添加s3c2410处理器的LCD控制寄存器的初始值,具体做法为在文件arch/arm/mach-s3c2410/mach-smdk2410.c中添加struct s3c2410fb_mach_info类型的寄存器描述讯息,如下所示:static struct s3c2410
2010-07-28 18:00:00 1326
转载 memcpy() -- 拷贝内存内容
memcpy() -- 拷贝内存内容2007年07月06日 星期五 09:07相关函数: bcopy(), memccpy(), memmove(), strcpy(), strncpy()<br />表头文件: #include <string.h><br />定义函数: void *memcpy(void *dest, const void *src, size_t n)<br />函数说明: memcpy()用来拷贝src所指的内存内容前n个字节到dest所指的内存地址上。与strcpy()不同的是,
2010-07-28 17:34:00 688
转载 浅析linux下键盘设备工作和注册流程
浅析linux下键盘设备工作和注册流程【浅析linux下鼠标驱动的实现】 input_init()=>=>class_register(&input_class);注册input类input_proc_init();创建proc下的目录和文件register_chrdev(INPUT_MAJOR, "input", &input_fops);注册驱动程序到cdev_map上,以待驱动设备.drivers/input/keyboard/pxa3xx_keypad.c为我们的keyboard设备,pxa3xx_
2010-07-28 17:31:00 1367
转载 linux内核input子系统解析
<br />Android、X windows、qt等众多应用对于linux系统中键盘、鼠标、触摸屏等输入设备的支持都通过、或越来越倾向于标准的input输入子系统。<br />因为input子系统已经完成了字符驱动的文件操作接口,所以编写驱动的核心工作是完成input系统留出的接口,工作量不大。但如果你想更灵活的应用它,就需要好好的分析下input子系统了。<br />一、input输入子系统框架<br />下图是input输入子系统框架,输入子系统由输入子系统核心层( Input Core ),驱动层和
2010-07-28 17:22:00 807
转载 Linux输入子系统input_dev概述
<br />Linux 系统提供了input子系统,按键、触摸屏、键盘、鼠标等输入都可以利用input接口函数来实现设备驱动,因此,12.1~12.2节的按键和触摸屏设备驱动都可以作为input设备驱动而实现。<br />在Linux 内核中,input设备用input_dev 结构 体描述,使用input子系统实现输入设备驱动的时候,驱动的核心工作是向系统报告按键、触摸屏、键盘、鼠标等输入事件(event,通过input_event结构 体描述),不再需要关心文件操作接口,因为input子系统已经完成了文
2010-07-28 17:17:00 1258
转载 Platform_device和platform_driver
<br />通过Platform机制开发发底层驱动的大致流程为: 定义 platform_device---注册 platform_device ---定义 platform_driver-----注册 platform_driver。 <br />1. Platform_device 定义于 kernel/include/linux/platform_device.h中,<br />struct platform_device {<br /> const char * name;<br /> u32 id
2010-07-28 16:05:00 2938
转载 platform_device和platform_driver
首先介绍一下注册一个驱动的步骤:1、定义一个platform_driver结构2、初始化这个结构,指定其probe、remove等函数,并初始化其中的driver变量3、实现其probe、remove等函数看platform_driver结构,定义于include/linux/platform_device.h文件中:struct platform_driver { int (*probe)(struct platform_device *); int (*remove)(struct plat
2010-07-28 14:53:00 908
原创 linux resouce,platform_device和platform_driver驱动的关系
<br /><br />Author: taoyuetao<br />Email: tao_yuetao@yahoo.com.cn<br />Blog: http://www.eetop.cn/blog/?11145<br />2006-11-21<br />================================<br />从2.6版本开始引入了platform这个概念,在开发底层驱动程序时,首先要确认的就是设备的资源信息,例如设备的地址,<br />在2.6内核中将每个设备的资源用结构platf
2010-07-28 14:46:00 841
转载 谈谈Unicode编码,简要解释UCS、UTF、BMP、BOM等名词
<br />这是一篇程序员写给程序员的趣味读物。所谓趣味是指可以比较轻松地了解一些原来不清楚的概念,增进知识,类似于打RPG游戏的升级。整理这篇文章的动机是两个问题:<br />问题一: <br />使用Windows记事本的“另存为”,可以在GBK、Unicode、Unicode big endian和UTF-8这几种编码方式间相互转换。同样是txt文件,Windows是怎样识别编码方式的呢?<br />我很早前就发现Unicode、Unicode big endian和UTF-8编码的txt文件的开头会
2010-07-27 10:31:00 687
转载 SecureCRT连接Linux--Ubuntu
SSH看做是telnet的加强版,telnet的密码和信息都是不加密的,而ssh则加密。想用SecureCRT连接Linux--Ubuntu,需要SSH服务的支持,很多Linux系统在安装的时候是不安装SSH服务的,所以需要自己手动安装,才能用SecureCRT连接Linux。场景描述:主机 Windows2003,虚拟机VMware,虚拟机系统Ubuntu 9.10首先安装SSH服务输入:sudo apt-get install openssh-server启动SSH服务输入:sudo /etc/init
2010-07-24 21:53:00 3866
转载 linux内核学习笔记之——list_for_each_entry
<br />在Linux内核源码中,经常要对链表进行操作,其中一个很重要的宏是list_for_each_entry:<br />意思大体如下:<br />假设只有两个结点,则第一个member代表head,<br />list_for_each_entry的作用就是循环遍历每一个pos中的member子项。<br /><br />图1:<br />pos: pos:<br />_______
2010-07-24 12:24:00 22854
转载 真正的程序员,请你站出来
<br />在CSDN论坛上,曾有一篇主题为“这里90%的程序员根本就不算程序员”的热帖,谈到并不是每个操作代码的人就是程序员,那些不热爱开发行业的人根本不算程序员。并列举了许多“伪程序员”的行为特征。<br />无独有偶,国外一家技术公司RethinkDB在其官方博客上也谈到这个问题,抱怨了找到一个真正符合要求的程序员是多么艰难。外刊IT评论编译了这篇博文,全文如下:<br />我们积极的对外招聘已经有四个多月了,如果要问从这次经历中有哪些收获,我只能说,我终于明白,Jeff Atwood在FizzBuz
2010-07-20 12:16:00 1729 1
转载 工程师淘金:开发Android主攻四大方向
<br />“苹果(Apple)公司的应用程序商店(app store)和谷歌(google) Android都为大家提供了更加容易赚钱的机会,但是我认为,为苹果应用程序商店开发软件的公司和个人赚的都只是小钱,利用Android的特性进行软硬件整合设计、再加上适当的艺术和工业设计才能赚到大钱。比较起来,苹果为大家提供的机会就像是芝麻,Android却能为大家带来一个汉堡。”在日前由创意时代主办的Android工作坊上,亚太地区Android促进会主席、台湾著名架构设计师高焕堂与参与工作坊的上百名嘉宾分享了他
2010-07-17 20:12:00 1230
转载 内核中的TCP的追踪分析-9-TCP(IPV4)的socket的地址绑定--续2
<br />接着昨天的继续分析,我们接着从上一节最后部分继续开始今天的内容 :<br />我是无名小卒,转载的朋友请注明出处,请不要抄袭做为它用,谢谢!<br /><br /> 在内核中CONFIG_NET_NS配置选项是为了让用户自定义自己的网络空间结构,即上面的net结构,可以看出2.6.26内核的灵活性,但是我们一般在内核中不会配置该项,所以这里应该是取得init_net,这个结构是在前一节分析的那样在do_one_initcall()机制中调用了从pure_initcall(net_ns_
2010-07-16 17:34:00 2933
转载 内核网络设备的注册与初始化
首先来看如何分配内存给一个网络设备。 <br /><br />内核通过alloc_netdev来分配内存给一个指定的网络设备: <br /><br />Java代码 #define alloc_netdev(sizeof_priv, name, setup) / alloc_netdev_mq(sizeof_priv, name, setup, 1) struct net_device *alloc_netdev_mq(int sizeof_priv, const char *name,
2010-07-15 11:37:00 4612
转载 linux2.6内核 list_head结构分析
<br />一、 链表数据结构简介<br />链表是一种常用的组织有序数据的数据结构,它通过指针将一系列数据节点连接成一条数据链,是线性表的一种重要实现方式。相对于数组,链表具有更好的动态性,建立链表时无需预先知道数据总量,可以随机分配空间,可以高效地在链表中的任意位置实时插入或删除数据。链表的开销主要是访问的顺序性和组织链的空间损失。<br />通常链表数据结构至少应包含两个域:数据域和指针域,数据域用于存储数据,指针域用于建立与下一个节点的联系。按照指针域的组织以及各个节点之间的联系形式,链表又可以分为
2010-07-15 10:28:00 701
转载 Linux2.6内核驱动移植参考
<br />随着Linux2.6的发布,由于2.6内核做了教的改动,各个设备的驱动程序在不同程度上要 <br />进行改写。为了方便各位Linux爱好者我把自己整理的这分文档share出来。该文当列举 <br />了2.6内核同以前版本的绝大多数变化,可惜的是由于时间和精力有限没有详细列出各个 <br />函数的用法。 <br />特别声明:该文档中的内容来自http:/lwn.net,该网也上也有各个函数的较为详细的 <br />说明可供各位参考。如果需要该文档的word版的朋友, 请mail到weiri
2010-07-15 10:26:00 504
转载 网络设备支持函数
<br />7.网络设备支持<br /> <br />驱动程序的支持<br />函数名<br />功能<br />函数形成<br />参数<br />描述<br />init_etherdev<br />注册以太网设备<br />truct net_device * init_etherdev (struct net_device * dev, int sizeof_priv)<br />dev为要填充的以太网设备结构,或者要分配一个新的结构时为NULL,sizeof_priv是为这个以太网设备要分配的额外
2010-07-14 21:14:00 1220
转载 Linux网络协议栈之网络设备管理
<br />成都的天气好像越来越好了,前几天还穿着穿着外套直打哆嗦,到今天已经“拨开阴云见太阳”,暖洋洋的,心情也暖洋洋的。暖和的正好想睡觉。打个呵欠,把网络设备管理这部份总结下吧。 <br /> Linux素以优秀的网络管理能力而著称,linux为何具有这么高的效率?我们从网络设备的管理说起。<br /> Linux为何要对网络设备单独管理呢?这是因为。协议栈很多地方都会涉及到网络设备。小至IP地址的设置。大至IP路由的更新。都离不开高效的网络设备管理。将网络设备单独管理可以提高效率
2010-07-14 20:59:00 1072
转载 使用 /proc 文件系统来访问 Linux 内核的内容
<br />/proc 文件系统是一个虚拟文件系统,通过它可以使用一种新的方法在 Linux® 内核空间和用户空间之间进行通信。在 /proc 文件系统中,我们可以将对虚拟文件的读写作为与内核中实体进行通信的一种手段,但是与普通文件不同的是,这些虚拟文件的内容都是动态创建的。本文对 /proc 虚拟文件系统进行了介绍,并展示了它的用法。 <br /> 最初开发 /proc 文件系统是为了提供有关系统中进程的信息。但是由于这个文件系统非常有用,因此内核中的很多元素也开始使用它来报告信息,或启用动态运行时
2010-07-14 19:37:00 766 1
转载 在linux内核程序中支持proc文件系统
<br />以前老大老是教我说proc文件其实就是内存中的文件。其实是linux提供的一个内核借口,可以方便的让用户和linux内核进行通讯的一种方式。 很多内核程序也都使用了这个功能,想你运行 cat /proc/cpuinfo查看cpu信息或者cat /proc/version查看系统版本的时候,都是用到了这个功能。<br />widebright@widebright-desktop:~$ cat /proc/cpuinfo<br />widebright@widebright-desktop:~$
2010-07-14 13:15:00 881
转载 使用 /proc 文件系统来访问 Linux 内核的内容
/proc 文件系统是一个虚拟文件系统,通过它可以使用一种新的方法在 Linux® 内核空间和用户空间之间进行通信。在 /proc 文件系统中,我们可以将对虚拟文件的读写作为与内核中实体进行通信的一种手段,但是与普通文件不同的是,这些虚拟文件的内容都是动态创建的。本文对 /proc 虚拟文件系统进行了介绍,并展示了它的用法。<br />最初开发 /proc 文件系统是为了提供有关系统中进程的信息。但是由于这个文件系统非常有用,因此内核中的很多元素也开始使用它来报告信息,或启用动态运行时配置。<br />/p
2010-07-14 13:03:00 818
转载 Ifconfig 如何获得流量统计信息
<br /> <br />本文旨在讲解 Ifconfig 流量信息的获得。将通过 Ifconfig 代码阅读来跟踪流量统计的来 源,这将贯通网络模块,proc文件系统,到硬件设备驱动来探寻这些信息的来源和流向。Ifconfig<br />Ifconfig是 net-tools的一个组件。 net-tools 为 GNU/Linux 提供控制网络子系统的很多 重要工具(arp, ifconfig, netstat...),他几乎成为所有发行版必备的软件。<br />来看他的输出情况。包含了基本的网卡信息,
2010-07-14 09:25:00 14870 1
原创 ifconfig 源码分析
<br />int main(int argc, char **argv)<br />{ <br /> ……<br /> argc--;<br /> argv++;<br /> <br /> while (argc && *argv[0] == '-')<br /> {<br /> ……<br /> }<br /><br /> 打开内核支持的所有协议的套接字,主要是一个循环调用socket的过程<br /> if ((skfd = socket
2010-07-09 20:02:00 2618
转载 ifconfig 的简单实现
<br />一般,用户在shell中使用ifconfig命令对网络接口进行参数配置,及接口的打开,关闭等操作。ifconfig实现网络接口配置的原理在于代表网络接口的结构体struct net_device的成员ip_ptr。前文已经讲过,ip_ptr实际指向的是一个结构体struct in_device,in_device有一个成员struct in_ifaddr *ifa_list,它指向一个链表,链表的每一项代表一个IP地址。对这个链表操作即可实现对网络接口的配置。<br /> 网络接口的操作命
2010-07-09 17:45:00 4054 1
转载 Linux网络协议栈之网络设备管理
<br />Linux为何要对网络设备单独管理呢?这是因为。协议栈很多地方都会涉及到网络设备。小至IP地址的设置。大至IP路由的更新。都离不开高效的网络设备管理。将网络设备单独管理可以提高效率! 每个网络设备,在linux中都会对应一个数据结构,net_device。 就从这个结构说起Linux 2。6。21中,对net_device定义如下:struct net_device<br />{<br /> //设备的名称,例如常见的“eth0”等<br /> char name[IFNAM
2010-07-09 16:22:00 1163
转载 net_device 分析
<br />本文档的Copyleft归popy所有,使用GPL发布,可以自由拷贝,转载,转载时请保持文档的完整性,<br />严禁用于任何商业用途。<br />gtalk: mypopy at gmail.com <br />来源:barrypopy.cublog.cn<br />1.不算短的一个引子<br />很早之前,就说要分析Linux网络部分的代码,可惜话是放出去了,却迟迟不能兑现,没什么信<br />用,今天没什么事情,看看Netlink的用法和实现,看看Linux下的QoS的实现,又看到了net
2010-07-09 16:11:00 1704
转载 net_device分析
<br />本文档的Copyleft归popy所有,使用GPL发布,可以自由拷贝,转载,转载时请保持文档的完整性,<br />严禁用于任何商业用途。<br />gtalk: mypopy at gmail.com <br />来源:barrypopy.cublog.cn<br />1.不算短的一个引子<br />很早之前,就说要分析Linux网络部分的代码,可惜话是放出去了,却迟迟不能兑现,没什么信<br />用,今天没什么事情,看看Netlink的用法和实现,看看Linux下的QoS的实现,又看到了net
2010-07-09 10:28:00 3444
转载 net_device结构体
<br /> net_device结构保存与网络设备相关的所有信息。每一个网络设备都对应一个这样的结构,包括真实设备(例如以太网卡)和虚拟设备(比如bonding或VLAN)。<br />Bonding,也被称作EtherChannel(Cisco的术语)和trunking(Sun的术语),允许把一定数量的接口组合起来当作一个新的设备。这个特性在系统需要把多个点对点设备组合起来以获取更高带宽时有用。新设备的速度可以成倍增加,一般来说, 新设备的吞吐量是单个设备吞吐量的总和。<br />VLAN代表虚拟
2010-07-09 10:00:00 8833
转载 struct net_device 详解3
<br />/*<br /> * The DEVICE structure.<br /> * Actually, this whole structure is a big mistake. It mixes I/O<br /> * data with strictly "high-level" data, and it has to know about<br /> * almost every data structure used in the INET module.<br /> *<br />
2010-07-09 09:55:00 2801
转载 struct net_device 详解2
<br />相关文件:<br />linux/include/linux/netdevice.h<br />linux/drivers/net/Space.c<br />linux/include/net/iw_handler.h<br /><br />char name[IFNAMSIZ];<br />在space.c文件中初始化。<br /><br />unsigned long mem_end;<br />unsigned long mem_start;<br />设备相关的共享内存区<br /><b
2010-07-09 09:54:00 1889
转载 struct net_device 详解1
<br /> 结构体net_device代表了一个网络设备接口,它是我们理解网络设备驱动程序的关键。这里,我们选择其中的一些重要成员,一一作详细分析,并结合以太网设备,看看Linux内核是如何为以太网设备提供结构体中某些成员的缺省值的。<br /> 在Linux内核源代码中是这样为这个结构体作注释的:实际上,这个结构体是一个很大的错误,它把I/O数据和更高层的数据混合在一起,而且它几乎必须知道INET模块中的每个数据结构。<br /> 毫无疑问,这是一个巨型结构体。但我们为编写网络设备驱动
2010-07-09 09:43:00 4177
原创 Linux下检测网卡与网线连通状态
<br />Linux_stat.c<br />view plaincopy to clipboardprint?<br />#include <stdio.h> <br />#include <stdlib.h> <br />#include <string.h> <br />#include <fcntl.h> <br />#include <errno.h> <br />#include <sys/ioctl.h> <br />#include <sys/types.h>
2010-07-08 16:22:00 1794 1
转载 Linux网络协议栈(三)——网络设备(2)
<br />2.1、网络设备的注册与注销<br />注册网络设备发生在下列情形: <br />(1)加载网卡驱动程序 <br /> 网卡驱动程序如果被编译进内核,则它在启动时被初始化,在运行时被作为模块加载。无论初始化是否发生,所以由驱动程序控制的网卡都被注册。 <br />(2)插入可热拔插网络设备 <br /> 当用户插入一块热拔插网卡,内核通知其对应的驱动程序以注册设备。(为了简单化,我们假定设备驱动程序已经被加载)。<br /><br />两个主要的情形会导致设备注销:<br />(1)卸载网卡
2010-07-08 15:52:00 1117
linux2.6在s3c2410上全线移植
2010-01-22
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人