精华内容
下载资源
问答
  • linux 驱动开发

    千次阅读 2013-03-22 11:28:32
    linux驱动开发,听这个名词好像是很高深的东西!其实不然,对于开发人员来讲最总要的是理解几个概念!知道开发思路,下面将从概念,到应用做一个详细的阐述。  linux驱动:什么是linux驱动,其实很简单,就是基于...

        linux驱动开发,听这个名词好像是很高深的东西!其实不然,对于开发人员来讲最总要的是理解几个概念!知道开发思路,下面将从概念,到应用做一个详细的阐述。
        linux驱动:什么是linux驱动,其实很简单,就是基于linux操作系统,在系统下面想对外设进行操作。需要通过linux内核提供的驱动操作接口,对外设的寄存器进行设置,通过设置这些寄存器后能够方便linux系统对其进行操作。
    下面就提到了几个问题,我在哪里编程?通过什么方式编译?我能不能像操作一般无MMU的MCU一样进行操作linux下的寄存器呢?我对特定的CPU该怎样来确定(假设为AT91SAM9260)或是说我怎么知道我设计的驱动是这个平台的驱动?对于操作过程中的头文件在哪里寻找?带着这些问题开始下面的解释。
        首先是在哪里编程:对于开发linux驱动这项工作来讲,肯定是在linux系统下的环境里面,这里就包括fedora、redhat、ubuntu等等linux平台的开发环境,我用的环境就是fedora 16。在fedora官网下载linux系统,然后在pc上安装。开发位置没有限定,如果是开发模块驱动。不需要将驱动放到对于的文件夹然后修改内核配置文件。通过vim就可以开发驱动了。这里同时解释一个问题,就是头文件的问题,linux驱动开发过程中需要调用大量的头文件,其中的头文件放在什么里面?开始开发前,系统必须下载linux内核,然后将linux内核编译通过。我开发过程中linux内核用的是linux-2.6.30。其中对于开发过程中的linux内核中的头文件的调用主要是根据需要来确定,这和实际开发相关。如果要开发对对应CPU的驱动,必须对要打对应linux内核的补丁。解决linux内核配置问题和linux内核中某些驱动支持的问题。
        编译,在一般PC平台上开发的工程师,一般就认同为编译。其实打多编译都属于交叉编译过程。除非是编译当前PC机平台上的应用或驱动。很简单,用keil开发C51或是M3的程序。编译生成的hex文件。这个过程就属于交叉编译。但是linux下的交叉编译不同于window下下的IDE的是,linux下的交叉编译环境是需要自己搭建和通过环境变量的设置进行切换的。其中我使用的交叉编译器是在Sourcery CodeBench Lite Edition for ARM 其中提供两种交叉编译器,建议是使用arm-none-linux-gnueabi。安装完成可以通过export查看环境变量和设置。
        怎样操作linux下的CPU的寄存器呢?在ARM9以上的处理器都带有MMU单元。MMU单元屏蔽了应用程序对处理器外设的直接操作。将linux分为两层,即应用层和驱动层。对于linux驱动开发人员来讲,主要理解的是怎样进行对应的寄存器操作。个人觉得这是整个开发中的重点也是难点。这里将提到几个概念,4GB地址空间,内核空间,用户空间。对于这些概念网上有很多解释可以去问度娘。linux内核将4GB地址空间划分为1GB的内核空间和3GB的用户空间。实际CPU中没有这么大的空间,从这里将引入一个概念。那就是虚拟地址空间。在linux开发过程中,有物理地址和虚拟地址之分。这是两个很总要的概念,其中MMU的TBL实现物理地址到虚拟地址的转换。前面是在科普,下面进入正题。在linux内核中,CPU内核是只能识别虚拟地址的。虚拟地址必须通过linux内核中提供的文件进行转换,函数为:void * ioremap(unsigned long phys_addr, unsigned long size, unsigned long flags);其中相关的东西可以参考这篇优秀的博文《Linux内核中ioremap映射的透彻理解》。将物理地址转换成对应的虚拟地址或是虚拟地址块,提供给CPU内核操作。就能实现对linux系统下的带MMU处理器的寄存器进行操作。
        然后对于当前编写的驱动,我怎么知道我编写的是当前平台的驱动。刚刚开始的时候这个问题困扰了我很长时间。后来发现这是一个小问题。在linux内核里面有很多的平台支持。根据配置文件就能设置当前的CPU。如果是模块驱动,就只需要编译对应CPU的驱动。然后通过insmod命令加载到运行的系统中就行。

    展开全文
  • 嵌入式Linux驱动开发

    千人学习 2019-05-11 21:05:29
    说到Linux驱动,尤其是嵌入式Linux驱动,大家可能会望而却步,因为入门太难!很多书上或课程基本是这样的:一上来给我们...从最简单的入手,一步一步,手把手的编写代码,一步步引领你进入嵌入式Linux驱动开发的大门。
  • linux驱动开发

    2011-11-14 15:25:19
    最近看Linux驱动开发,自觉内容不是一般的复杂!需要的知识很多
    最近看Linux的驱动开发,自觉内容不是一般的复杂!需要的知识很多
    
    展开全文
  • 通过学习本系列教程,可以让初学者用较少的时间和较低的成本,掌握Linux驱动开发的基本技能。 课程特色: 1,在Ubuntu虚拟机上进行驱动开发,无需购买开发板,有一台电脑即可学习驱动开发。 2,由多年驱动开发经验的...
  • 本课程是linux驱动开发的第5个课程,主要内容是linux的设备驱动模型,包括总线、类、设备、驱动等概念,重点通过platform平台总线的工作来演示设备驱动模型的工作方法,实践环节对上个课程的LED驱动进行平台总线式...
  • 本课程是linux驱动开发的第7个课程,主要内容是linux的framebuffer驱动详解,本课程带大家分析fb驱动的框架、构成以及一些代码细节,目标是让大家彻底掌握fb驱动在内核中的配置和移植方法、掌握显示设备驱动的关键点...
  • Linux驱动开发

    2007-07-04 10:16:00
    应用程序是一个进程,从main()开始,main()结束,进程结束,驱动程序...当应用程序对某个设备文件进行系统调用时,Linux内核会根据该设备文件的设备类型和主设备号调用相应的驱动程序,并从用户态进入到核心态,再
    应用程序是一个进程,从main()开始,main()结束,进程结束,驱动程序是一系列内核函数,这些函数由内核在适当的时候调用。
    开发流程:
    1熟悉设备特性 。
    2确定设备驱动程序是哪一类。
    3编写测试用例。
    4搜集可重用的代码。
    5编写自己的驱动程序代码。
    6调试,编码,测试。

    当应用程序对某个设备文件进行系统调用时,Linux内核会根据该设备文件的设备类型和主设备号调用相应的驱动程序,并从用户态进入到核心态,再由驱动程序判断该设备的次设备号,最终完成对相应硬件的操作。
    展开全文
  • 本课程是linux驱动开发的第一个课程,主要介绍linux驱动的概念、模块化设计理念、分类、安全性要求,后讲解了linux驱动课程的整体学习方法。学习本课程主要是为后续正式学习linux驱动打个基础。
  • 字符设备驱动-linux驱动开发第3部分

    千人学习 2016-10-18 11:07:11
    本课程是linux驱动开发的第3个课程,接上部分继续讲解字符设备驱动的开发要点,重点是相关的内核源代码的解析和一些真正驱动惯用的编程手法的引入。本课程的目的是让大家开始逐渐习惯和熟悉真正内核驱动的特征,为...
  • linux驱动开发简介

    2018-05-18 14:06:27
    一、linux驱动开发简介 1、linux驱动和裸板驱动的异同 裸板驱动像写英语作文 linux驱动程序像做英语完形填空 2、linux下驱动程序开发需要具备的 硬件基础 能看懂电路原理图 阅读芯片的datasheet 软件...

    一、linux驱动开发简介

    1、linux驱动和裸板驱动的异同
    • 裸板驱动像写英语作文
    • linux驱动程序像做英语完形填空
    2、linux下驱动程序开发需要具备的
    • 硬件基础
      • 能看懂电路原理图
      • 阅读芯片的datasheet
    • 软件基础
      • 内核态编程的基础(linux驱动程序运行在内核态)
        • 内核模块框架
        • 如何动态申请内存
        • 如何解决竟态问题
        • 如何实现阻塞访问
    • 内核中关于驱动程序框架问题
    • linux中按照操作方式不同,将硬件分为三种类型
      • 字符设备
        • 读写以字节为单位,顺序访问
        • 按键,键盘,g-sensor
      • 块设备
        • 读写以块(多字节)为单位,访问顺序不固定
        • 硬盘,SD卡,flash
      • 网络设备
        • 读写以帧(多字节)为单位,访问顺序固定
        • 网卡
    3、驱动程序开发的学习方式
    • 内核态编程没有类似的man工具
      • 内核源码是最好的老师
        • 看函数的实现,了解如何使用
        • 看内核中其他位置如何使用该函数
    • 查看相关书籍
      • Linux内核设计与实现第三版中文版
      • LDD3:linux device driver 3(Linux设备驱动程序第三版)
      • 精通Linux 设备驱动程序开发》.(Sreekrishnan).[PDF]_jb51.net
    展开全文
  • 本课程是linux驱动开发的第11个课程,主要内容是linux的网络驱动的介绍,首先讲述了网络设备驱动接口和之前讲的2种的不同,然后以一个虚拟网卡驱动源码学习了网卡驱动的框架,后分析了一个实际网卡DM9000的驱动细节...
  • 本课程是linux驱动开发的第10个课程,主要内容是linux的块设备驱动的介绍,首先详细讲了块设备驱动和字符设备驱动的核心差异,然后以一个内存模拟的块设备驱动源码为案例演示了块设备驱动如何使用,后对源码进行了...
  • 本课程是linux驱动开发的第2个课程,从零开始带领大家逐渐熟悉内核模块,并且一步步写出一个字符设备驱动程序来控制LED等。本课程对驱动的学习非常重要,是驱动学习的入门阶段。
  • Linux驱动开发我已经酝酿很久了,有网友催我尽快有更新,博主今天就把以前的博文整理一下,另外我也会不断更新,希望对感兴趣的朋友有所帮助,在此感谢CSDN这个平台给出了这个一个交流的机会,也感谢大家的支持。...
  • 本课程是linux驱动开发的第4个课程,主要内容是驱动框架的引入。通过led驱动框架和gpiolib的这两个框架的详细解释,让大家学习内核中驱动框架的使用方法,这个对后续学习基于框架的复杂驱动非常有帮助。
  • Linux驱动开发概述

    千次阅读 2016-05-20 14:18:24
    第 1 章 Linux驱动开发概述 设备驱动程序是计算机硬件与应用程序的接口,是软件系统与硬件系统沟通的桥梁。如果没有设备驱动程序,那么硬件设备就只是一堆废铁,没有什么功能。本章将对Linux驱动开发进行简要的...
  • Linux驱动开发(一)——驱动开发基础

    千次阅读 多人点赞 2016-12-26 18:45:03
    从本篇博客开始,尝试给自己掌握的 Linux 设备驱动开发进行一个总结,这并不是一个很简单的工作,因为自己的确目前对 Linux 驱动开发也只是一知半解。尽自己所能吧。今天是第一天,先来谈谈 Linux 驱动开发的基础...
  • Linux 驱动开发研究

    2017-03-21 16:47:53
    Linux 驱动开发研究 初涉 linux 驱动开发,路漫漫其修远兮 实例:usbmouse.c下载 linux 源码包从 linux 内核源码中学习个人认为会是比较快入门的一种方法。 第一步就是获取源码包,有两个途径: 官网下载:...
  • 本课程是linux驱动开发的第6个课程,主要内容是linux的misc类设备驱动框架讲解,及蜂鸣器驱动源码的分析。在前面2个课程的铺垫下本部分内容显得很容易,目的是使大家进一步理解驱动框架的用法。
  • linux驱动开发 linux下驱动开发直接操作寄存器,不现实 根据Linux下的各种驱动框架,进行开发;一定要满足框架,也就是linux下各种驱动框架的掌握; 在linux下,驱动最终表现(对应的外设)是 /dev/xxx下的文件;...
  • 本课程是linux驱动开发的第9个课程,主要内容是linux的I2C子系统以及电容触摸屏驱动的移植。学习本课程的核心点在于I2C子系统,目标是对I2C驱动框架的彻底理解和熟练运用。本课程承袭前面platform平台总线的讲解思路...
  • Linux 驱动开发索引

    2015-06-17 23:39:48
    Linux 驱动开发索引 http://blog.csdn.net/xy010902100449/article/details/46508319?ref=myread 1、嵌入开发环境搭建 Telnet 在 mini2440 上的移植 Opencv-2.4.9 在 mini2440 上的移植 ...
  • Linux 驱动开发前奏---驱动开发概述、硬件访问技术
  • linux 驱动开发之 中断注册

    千次阅读 2018-06-18 23:50:36
    之前一直学习的是Linux系统下面的字符驱动开发,但是那仅仅是Linux驱动下面的冰山一角,Linux驱动开发还包括什么网络设备开发、原子锁、块设备开发、网络设备开发等等部分,本篇文章将介绍linux架构下面中断注册。...
  • 如何学习LINUX驱动开发? Post By:2014-4-24 17:15:00  很多朋友认为Linux驱动开发学起来很难,如何学习linux驱动开发?下面笔者就说说我的学习经验吧。 1. 学会写简单的makefile 2. 编一...
  • linux驱动开发之开篇

    2017-03-16 20:52:08
    本文将会记录自己在学习linux驱动开发中的相关内容。没有沉淀就没有积累,厚积薄发。
  • 基于Ubuntu虚拟机的Linux驱动开发入门 即将出一套视频教程。该教程面向Linux驱动开发的初学者,基于Ubuntu虚拟机学习驱动开发,无需开发板 一,Linux概述及课程特色 二,搭建开发环境, 安装VMware。 安装...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 21,174
精华内容 8,469
关键字:

linux驱动开发

linux 订阅