linux 驱动入门3】的更多相关文章

世事艰难,人生不易. 夜深人静时候,回顾过去,往事历历在目.创南京,混苏州,下上海.都付出了巨大的努力.多少个不眠的夜晚,在冥思苦想.天生愚钝.又不是学计算机的.一直没较为深刻的理解 编程什么东西,一直没有入门. 感谢Qisda, 让我在08年就开始接触android. 都不容易. 编程是什么? 编程是数据处理.如何处理? cpu通过指令指针的跳转,实现了读下一条指令,cpu实现了读指令,编译指令. 感谢marvell. 哎marvell技术 不可谓不强.认识一大批牛人.jialin, jiag…
不吃苦中苦,难为人上人.努力,给老婆孩子提供个良好的生活居住环境.http://www.cnblogs.com/nan-jing/articles/5806399.html上文提到了如何创建proc节点.但是我经常看到有操作/sys节点的情况. 莫非应用可以操作sys节点? 问问了别人可以了.哎.别人只能给你说个大概.甚至只能和你说可以操作.为什么,如何操作.别人只能让你看代码.没别的招,想挣钱不? 想.想就看代码吧.老规矩,贴上全部代码.看看如何创建sys节点#include<linux/mo…
不吃苦中苦,难为人上人.努力,给老婆孩子提供个良好的生活居住环境. http://www.cnblogs.com/nan-jing/articles/5806399.html 上文提到.可以自动创建了设备节点.这次我们研究下.如何创建/proc文件系统下的节点呢? 有如何实现/proc节点的读写呢? 老规矩,为了方便大家复制粘贴.我直接贴全部源码,复制下来,可以直接编译运行的. #include<linux/module.h>#include <linux/fs.h>#includ…
不吃苦中苦,难为人上人.努力,给老婆孩子提供个良好的生活居住环境. http://www.cnblogs.com/nan-jing/articles/5775038.html 这里提到.有这么多牛人.如果比得上人家.自古华山一条路,没别的招,不断的理解,不断的读,不断的写.哎.白了头.阳痿早泄性无能,尿频尿急尿不净.钱不没挣多少.一身病. 上文可以完整的通过mknod创了设备节点.哪我如何知道设备号呢.通过cat /proc/devices可以看到你创建设备的主设备号.好,没问题,可以读写了,哪…
看/sys目录经常看到bus device driver class. 这也是网上大量说的驱动驱动模型.这些的关系得熟悉得明白吧.是的.今天我先不整他们的关系.先逐个击破,然后再统一来理清楚他们之间的关系.那今天我们来看看class.c这个文件.class刚接触的时候好迷糊,class是关键字,是类型,不是,是一类事物,以一种归类.是把相同类型的device归到一起的一个对象.那我们来看看class是如何注册的.不管怎么说.class也是形成一个环. 一个双向闭环链表.同样,class之间也是通…
慢慢的开始转驱动,目前比较有时间,一定要把驱动学会.哎.人生慢慢路,一回头.已经工作了八九年了.努力.在买套房.改退休了.学驱动.个人认为首先要熟悉驱动框架.慢慢来.心急吃不了热豆腐. 看网上都说的设备是挂在总线的.当然硬件布线是这样的.软件也是模拟了这个过程.那总线是如何组织的呢.其实可以看到.闭环.闭环.双向闭环链表. 对.所有的设备是个闭环链表.所有的总线也是闭环链表.那这些总线是如何形成这个闭环链表的呢? 这就是以党中央为中心,紧紧的团结围绕在党中央周围.换句话就是,以bus.c为中心.…
Hello world模块 本文介绍如何向内核中添加一个hello模块.该模块的功能是在模块加载时,向系统日志输出"hello world\n" 在模块卸载时输出"Good bye,cruel world!". 一个模块源代码一般有含有一个init函数(加载时调用)和一个exit函数(卸载时调用).这两个函数由分别由宏module_init和module_exit调用.因而一个简单的Hello world模块源代码如下: #include <linux/ini…
Linux FC/iSCSI存储设备管理系列(一):Linux系统设备驱动入门 转载请在文首保留原文出处:EMC中文支持论坛 - https://community.emc.com/go/chinese 介绍 Linux FC/iSCSI存储设备管理系列,主要介绍Linux系统管理FC/iSCSI磁盘设备的相关概念与技术细节,内容包括: Linux磁盘设备驱动介绍 磁盘设备管理(一):FC磁盘管理 磁盘设备管理(二):iSCSI磁盘管理 HBA管理与配置 文件系统结构 磁盘在线调整 SCSI驱动…
IT技术学习指导之Linux系统入门的4个阶段(纯干货带图) 全世界60%的人都在使用Linux.几乎没有人没有受到Linux系统的"恩惠",我们享受的大量服务(包括网页服务.聊天服务等)背后几乎都是由Linux系统支撑的服务器,超过20亿人每天都随身携带基于Linux内核开发的 Android手机出门,Linux也广泛应用在嵌入式系统上.因此学习Linux系统变得尤为重要,对于普通用户而言,平面式的学习Linux系统的基本使用已经足够,但对于开发者或者运维人员而言,深入学习Linux…
这节我们就开始开始进行实战啦!这里顺便说一下啊,出来做开发的基础很重要啊,基础不好,迟早是要恶补的.个人深刻觉得像这种嵌入式的开发对C语言和微机接口与原理是非常依赖的,必须要有深厚的基础才能hold的住,不然真像一些人说的,学了一年嵌入式感觉还没找到门. 不能再扯了,涉及到linux的驱动开发知识面灰常广,再扯文章就会变得灰常长.首先还是回到led驱动的本身上,自从linux被移植到arm上后,做驱动开发的硬件知识要求有所降低,很多都回归到了软件上,这是系统编程的一大特点,当然 ,也不排除有很多…
原文网址:http://www.cnblogs.com/xmphoenix/archive/2012/03/27/2420044.html Linux驱动学习的最大困惑在于书籍的缺乏,市面上最常见的书为<linux_device_driver 3rd Edition>,这是一本很经典的书,无奈Linux的东东还是过于庞大,这本侧重于实战的书籍也只能停留在基本的接口介绍上,更深入的东东只能靠我们自己摸索了.但万事总有一个开头,没有对Linux驱动整体框架的把握是很难做一个优秀的驱动开发者的.除了…
这节我们就开始开始进行实战啦!这里顺便说一下啊,出来做开发的基础很重要啊,基础不好,迟早是要恶补的.个人深刻觉得像这种嵌入式的开发对C语言和微机接口与原理是非常依赖的,必须要有深厚的基础才能hold的住,不然真像一些人说的,学了一年嵌入式感觉还没找到门. 不能再扯了,涉及到linux的驱动开发知识面灰常广,再扯文章就会变得灰常长.首先还是回到led驱动的本身上,自从linux被移植到arm上后,做驱动开发的硬件知识要求有所降低,很多都回归到了软件上,这是系统编程的一大特点,当然 ,也不排除有很多…
最近想学习一下linux驱动,看了一些书和教学视频,大概了解了一下,不过要想深入,肯定需要实践.手上有几块linux的板子,最终选择了树莓派作为我的实验平台,资料比较丰富,接口也比较简单. 程序员的入门经典当然就是hello world程序了,我的第一个实验就是要搭建实验环境和工具链,通过交叉编译的方式,在上位机完成hello world驱动程序的编写,最终在板子上运行. 一.安装树莓派系统         首先要在树莓派上安装系统,这个网上的资料比较多,就不细说了,我使用的是2013-09-2…
[驱动]USB驱动·入门 Preface USB是目前最流行的系统总线之一.随着计算机周围硬件的不断扩展,各种设备使用不同的总线接口,导致计算机外部总线种类繁多,管理困难.USB总线正是因此而诞生的. USB总线提供了所有外部设备的统一连接方式,并且支持热插拔,方便了厂商开发设备和用户使用设备. USB遵循原则 USB的设计目标是对现有的PC机体系进行扩充,但是目前不仅是PC机,许多的嵌入式系统都开始支持USB总线和接口标准.USB设计主要遵循下面几个原则: 易于扩充外部设备:USB支持一个接口…
linux驱动开发总结(一) 基础性总结 1, linux驱动一般分为3大类: * 字符设备 * 块设备 * 网络设备 2, 开发环境构建: * 交叉工具链构建 * NFS和tftp服务器安装 3, 驱动开发中设计到的硬件: * 数字电路知识 * ARM硬件知识 * 熟练使用万用表和示波器 * 看懂芯片手册和原理图 4, linux内核源代码目录结构: * arch/: arch子目录包括了所有和体系结构相关的核心代码.它的每一个子目录都代表一种支持的体系结构,例如i386就是关于intel c…
用了差不多45天的时间把Linux操作系统入门的资料学习了下.主要阅读了以下几本书: 鸟哥的私房菜:Linux基础学习篇(第三版) "Running Linux" <LINUX权威指南> "The Definitive Guide to CentOS" <CentOS权威指南> <Linux入门很简单> <Linux从入门到精通(第2版)> 在VirtualBox下安装Linux不下10次,安装好了CentOS 6.C…
ARM Linux驱动篇 学习温度传感器ds18b20的驱动编写过程 原文地址:http://www.cnblogs.com/NickQ/p/9026545.html 一.开发板与ds18b20的入门 ds18B20是常用的数字温度传感器,具有体积小,硬件开销低,抗干扰能力强,精度高的特点.但楼主在使用过程中发现,ds18b20测量的温度还是需要进行一定的软件校准的.后面我们会谈论到. 除了上面提到的,ds18b20还有很多可圈可点的有点.下面说楼主所关注到的几个. 单总线协议,称为总线,必然可…
Linux基础入门之网络属性配置 摘要 Linux网络属性配置,最根本的就是ip和子网掩码(netmask),子网掩码是用来让本地主机来判断通信目标是否是本地网络内主机的,从而采取不同的通信机制. Linux网络属性配置,最根本的就是ip和子网掩码(netmask),子网掩码是用来让本地主机来判断通信目标是否是本地网络内主机的,如果在同一网络内,那么可以通过ARP广播机制得到对方mac地址后就可以进行通信的,如果不是本地网络内就必须将数据报文封装后一层一层的经由网关路由进行转发.无论目标是哪的一…
转载于:http://www.cnblogs.com/xmphoenix/archive/2012/03/27/2420044.html 参加实习也近一个月了,严重感觉知识不够,真是后悔学校里浪费那么多时间做那些无聊的事情,无聊的课程.看到这个博文,心里有种冲动,立下愿望,把以下几本大作一一拜读,希望大家有机会也好好看看,再此和大家分享!! Linux驱动学习的最大困惑在于书籍的缺乏,市面上最常见的书为<linux_device_driver 3rd Edition>,这是一本很经典的书,无奈…
Linux驱动学习的最大困惑在于书籍的缺乏,市面上最常见的书为<linux_device_driver 3rd Edition>,这是一本很经典的书,无奈Linux的东东还是过于庞大,这本侧重于实战的书籍也只能停留在基本的接口介绍上,更深入的东东只能靠我们自己摸索了.但万事总有一个开头,没有对Linux驱动整体框架的把握是很难做一个优秀的驱动开发者的.除了这本Jonathan Corbet, Greg Kroah-Hartman, Alessandro Rubini合著的经典大作外,另一本理论…
操作系统1.简介OS: Operating System,通用目的的软件程序操作系统的内核(kernel):  操作系统其实也是一组程序.这组程序的重点在于管理计算机的所有活动及驱动系统中的所有硬件:  总之硬件的所有操作都必须要通过这个操作系统来完成:  内核主要在于管理硬件与提供相关的能力.因此,内核程序放置到内存当中的区块是受保护的,并且开机后就一直常驻在内存当中. 内核的功能:系统调用接口.程序管理.内存管理.文件系统管理.设备驱动 操作系统(OS)分类:  服务器OS:RHEL.Cen…
一.继续在vmware中安装centos6.9 本次安装是进行最小化安装,即没有图形化界面的安装,如果是新手,建议安装带图形化界面的centos, 具体参考Linux从入门到放弃.零基础入门Linux(第四篇):在虚拟机vmware中安装centos7.7 1.创建空白的虚拟机后界面 2.双击进入设置,点击CD/DVD设置,选择要安装的centos6.9的镜像文件位置 3.打开虚拟机电源,进行安装,进入虚拟机系统安装界面. 界面共有5个选项 Install or upgrade an exist…
Linux 新手入门教程 1991年10月5日,Linus Torvalds 在互联网上发布消息,宣布他自己开发的内核系统诞生了.他将内核源代码保存在芬兰最大的 FTP 网站上,命名为 Linux,取义 Linus's Minix,并向全世界所有人公布.这也使得10月5日成为一个特殊的日子,以致之后的许多 Linux 版本都选择在这个日子发布.当然,如今的 Linux 一词被递归定义为 Linux is not Unix. 简介 Linux 是一套免费使用和自由传播的类 Unix 操作系统,严格…
源地址:http://www.cnblogs.com/xmphoenix/archive/2012/03/27/2420044.html Linux驱动学习的最大困惑在于书籍的缺乏,市面上最常见的书为<linux_device_driver 3rd Edition>,这是一本很经典的书,无奈Linux的东东还是过于庞大,这本侧重于实战的书籍也只能停留在基本的接口介绍上,更深入的东东只能靠我们自己摸索了.但万事总有一个开头,没有对Linux驱动整体框架的把握是很难做一个优秀的驱动开发者的.除了这…
(一)Linux代码的重用 重用=静态重用(将要重用的代码放到其他的文件的头文件中声明)+动态重用(使用另外一个Linux驱动中的资源,例如函数.变量.宏等) 1.编译是由多个文件组成的Linux驱动(静态重用) 对于复杂的Linux驱动,需要使用多个源代码文件存放不同的功能代码,这样做有利于代码分类和管理,那么就不得不编译多个源代码文件,最终生成.ko文件或编译进Linux内核 下面,就介绍将3个.c文件分别编译为3个.o文件,并将这3个.o文件链接(link)成一个.ko文件——静态重用 假…
1.常用的模块操作命令 (1)lsmod(list module,将模块列表显示),功能是打印出当前内核中已经安装的模块列表 (2)insmod(install module,安装模块),功能是向当前内核中去安装一个模块,用法是insmod xxx.ko (3)modinfo(module information,模块信息),功能是打印出一个内核模块的自带信息.,用法是modinfo xxx.ko,注意要加.ko,也就是说是一个静态的文件形式. (4)rmmod(remove module,卸载…
一.开启驱动开发之路 1.驱动开发的准备工作 (1)正常运行linux系统的开发板.要求开发板中的linux的zImage必须是自己编译的,不能是别人编译的.原因在于在安装模块的时候会进行安全性校验 (2)内核源码树,其实就是一个经过了配置编译之后的内核源码.我们需要内核源码编译自己的模块 (3)nfs挂载的rootfs,主机ubuntu中必须搭建一个nfs服务器.这对于驱动开发前期是不可或缺的,能够提高我们的开发效率. 2.驱动开发的步骤 (1)驱动源码编写.Makefile编写.编译 (2)…
一.什么是驱动? 1: 驱动一词的字面意思 2: 物理上的驱动 3: 硬件中的驱动 4: linux内核驱动.软件层面上的驱动广义上是指:这一段代码操作了硬件去动,所以这一段代码就叫硬件的驱动程序. 狭义上驱动程序就是专指操作系统中用来操控硬件的逻辑方法的部分代码.而我们这里讲的驱动就指的是这个狭义上的驱动. 二.Linux驱动的体系架构 1: 分离.分层思想 2: 驱动的上面是系统调用API 3: 驱动的下面是硬件 4: 驱动本身的实现也是基于分离.分层的思想 三.模块化设计的思想 1.微内核…
嵌入式Linux驱动开发日记 主机硬件环境 开发机:虚拟机Ubuntu12.04 内存: 1G 硬盘:80GB 目标板硬件环境 CPU: SP5V210 (开发板:QT210) SDRAM: 512M  (4片K4T1G164Q ) Nand flash: 512M (K9F4G08) 以太网芯片: SMSC LAN9220 工具介绍 仿真器: 暂无 电缆: 串口线,USB线 Windows 操作系统软件环境 ADS编译工具: 暂无 仿真器软件:暂无 调试软件: 终端(ADB).eclipse…
linux驱动程序设计的硬件基础(一) 本章讲总结学习linux设备程序设计的硬件基础. 一.处理器 1.1通用处理器 通用处理器(GPP)并不针对特定的应用领域进行体系结构和指令集的优化,它们具有一般化的通用体系结构和指令集,以支持复杂的运算并易于新开发功能的添加.一般而言,在嵌入式微控制器(MCU)和微处理器(MPU)中会包含一个通用处理器核.  MPU 通常代表一个 CPU(中央处理器) ,而 MCU 则强调把中央处理器.存储器和外围电路集成在一个芯片中.嵌入式微控制器一般由一个 CPU…