1. 学会写简单的makefile

2. 编一应用程序,可以用makefile跑起来

3. 学会写驱动的makefile

4. 写一简单char驱动,makefile编译通过,可以insmod, lsmod, rmmod. 在驱动的init函数里打印hello world, insmod后应该能够通过dmesg看到输出。

5. 写一完整驱动, 加上read, write, ioctl, polling等各种函数的驱动实现。 在ioctl里完成从用户空间向内核空间传递结构体的实现。

6. 写一block驱动, 加上read,write,ioctl,poll等各种函数实现。

7. 简单学习下内存管理, 这个是最难的,明白各种memory alloc的函数实现细节。这是Linux开发的基本功。

8. 学习锁机制的应用,这个不是最难的但是最容易犯错的,涉及到很多同步和并发的问题。

9. 看内核中实际应用的驱动代码。 你会发现最基本的你已经知道了, 大的框架都是一样的, 无非是read, write, ioctl等函数的实现, 但里面包含了很多很多细小的实现细节是之前不知道的。 这时候就要考虑到很多别的问题而不仅仅是基本功能的实现。 推荐您看2.6.20中integrated的一个驱动 kvm, 记得是在driver/lguest下,很好玩的, 就是Linux下的虚拟机驱动, 代码不长,但功能强大。有能力的可以自己写一操作系统按照要求做成磁盘镜像加载到虚拟机中, 然后客户机可以有自己的4G虚拟地址空间。

10. 看完驱动欢迎您进入Linux kernel学习中来。 最简单的方法,跟着ldd(Linux devive driver)做一遍。

学习linux驱动开发是一个很漫长的过程,有的人能迎风破浪,有的人却只能知难而退,我也不知道自己是哪一种人,只是知道我现在从事的工作就是linux驱动的工作,而且工作不是很轻松,而且不是向我以前想象的那么简单,而我的理想与目标,可能会向后延期。但是我也很庆幸,因为我还来得及,知道自己以后的路应该怎么走。
对于我个人能力,自认为还不是一个合格的工程师,就好像现在的人把工程师当作司机一样,满大街的都是工程师,没有几个能够和自己的称呼真正的对称,所以我也明白自己现在在做什么,应该做什么,我是一个一旦确定了目标,就会一直走下去,所以我现在唯一能做的就是努力,努力,再努力。好了,废话也不多说了。为了避免一些刚刚接触的人走弯路,我就把如何才能走入这样行业,而你应该具备什么知识,你应该怎样一步一步的走,等等介绍给大家,

首先学习linux驱动开发(2.4和2.6),真本身就是一个非常笼统的概念,那好我们应该怎样去学习呢。
1,首先你应该是一个计算机专业出身的学生,因为在上大学的时候,有好多基础课程(我们所说的垃圾课),都是驱动学习的非常重要的课程,所以我们要把那些基础学好,就是说我们在大学学习的每门课程都是有用的,想成为一个真正的高手,必须具备那些基础知识。比如说:C语言,汇编语言,数据结构,计算机系统结构,操作系统,微机原理,数点,模电,等等,总之要把这些学好,只有这样你才能迈进驱动的大门,而不是只是当一个修修补补的人(这句话只有做过驱动开发的人,能明白我说的意思)如果不是计算机专业的话,那你就慢慢补吧......

2 接下来,我们应该把C语言学习到精通在精通。那应该怎样才能把C学习到精通在精通呢,好,你只要把这五本书搞懂了,就没有问题了。  
  1 The.C.Programming.Language.2nd.Edition
  2 C语言接口与实现--创建可重用软件的技术
  3 C陷阱与缺陷
  4 C语言参考手册第五版
  5 C专家编程

3当你具备了以上内容,那你就可以学习linux了。好我也就把怎样去学习linux的过程介绍一下。首先你应该利用一段时间把基础学习一下,包括基本命令,服务的配置,文件系统的介绍。还有就是linux的操作,要达到熟练,简单的说就是把会用linux系统了。当然这只是一个开始,前段的学习不要超过两个月的时间,快的话一个月就够了。好了,重点学习的东西,vi,gcc,gdb,shell,makefile的学习和使用,编译一个简单的C程序。要知道C在不同环境下使用也是不一样的,所以我们不要在windows下练习,要一直在linux去做这些事情。这个学习的过程也得2个月的时间,我们要多学习一下makefile和shell,在这之前的学习要学的慢一点,打基础要牢靠一点。

4 以上的内容你都掌握了,接下来就是真正的进入应用层的开发了。由于本人是从事网络开发的,所以我也只能给大家介绍一个怎么才能进入网络开发的行列。首先你应该好好的学习一下网络基础的东西,这也是非常重要的哦。包括,计算机网络基础,tcp/ip的学习等等,接下来你应该去买两本书,就是有关linux进程开发的和socket开发的书籍。这些学习的过程就漫长了。至少也得个半年的时间吧。
好了,由于时间关系,今天先写在这里,下次会把驱动的真正学习介绍一下。不用急哦,因为这些也够你学一段时间咯。

Linux驱动学习步骤(转载)的更多相关文章

  1. linux驱动学习(二) Makefile高级【转】

    转自:http://blog.csdn.net/ghostyu/article/details/6866863 版权声明:本文为博主原创文章,未经博主允许不得转载. 在我前一篇写的[ linux驱动学 ...

  2. linux 驱动学习笔记01--Linux 内核的编译

    由于用的学习材料是<linux设备驱动开发详解(第二版)>,所以linux驱动学习笔记大部分文字描述来自于这本书,学习笔记系列用于自己学习理解的一种查阅和复习方式. #make confi ...

  3. 【Linux驱动学习】SD卡规范学习

    摘要: 学习SD卡的相关规范,包括定义,硬件特性,数据传输,命令系统等.不涉及代码. 文章针对Linux驱动开发而写,以助于理解SD卡驱动,不会涉及过多硬件内容. 纲要: 1. SD卡介绍 2. SD ...

  4. 树莓派linux驱动学习之hello world

    最近想学习一下linux驱动,看了一些书和教学视频,大概了解了一下,不过要想深入,肯定需要实践.手上有几块linux的板子,最终选择了树莓派作为我的实验平台,资料比较丰富,接口也比较简单. 程序员的入 ...

  5. Linux驱动学习之驱动开发准备工作

    一.开启驱动开发之路 1.驱动开发的准备工作 (1)正常运行linux系统的开发板.要求开发板中的linux的zImage必须是自己编译的,不能是别人编译的.原因在于在安装模块的时候会进行安全性校验 ...

  6. linux驱动学习之Input输入子系统

    以前,看过国嵌关于input子系统的视频课程,说实话,我看完后脑子里很乱,给我的印象好像是input子系统驱动是一个全新的驱动架构,疑惑相当多.前几天在网上,看到有很多人介绍韦东山老师的linux驱动 ...

  7. Linux驱动学习1.hello world;

    最近项目需要使用Linux系统开发,借此机会学习一下Linux驱动开发 hello word代码hello.c #include <linux/module.h> #include < ...

  8. linux驱动学习(八) i2c驱动架构(史上最全) davinc dm368 i2c驱动分析【转】

    转自:http://blog.csdn.net/ghostyu/article/details/8094049 版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[-] 预备知识 lin ...

  9. linux驱动学习_1

    目前项目需要,需要做linux驱动了,记录一下 学习驱动,大家一定都会写一个hello world代码,网上也有很多范例,但是记录一下遇到的问题. 1.make之后,使用insmod加载,终端没有打印 ...

随机推荐

  1. Android_getSystemService (demo_testNet)

    今天主要通过一个案例来看下我们的Android 获取系统服务的问题. 我们通常能够看见登录QQ后如果没有网络的状态的时候,它会告诉你一句话:您进入了没有网络的异次元或者是什么网络连接错误等等.Andr ...

  2. Notepad++ HTML格式化

    [Notepad++ HTML格式化] Tidy2.

  3. UI组件之Group

    当Group旋转或缩放时,它的孩子们正常绘制,并且Batch变换后正确的旋转或缩放. 绘制Group前,Batch flush使得变换可以设置.有很多Group时这将可能成为性能瓶颈.如果在一组演员不 ...

  4. udp-->socket通信原理

    UDP数据通讯原理     UDP数据通讯分服务端(软件)和客户端端:     服务端(软件)(服务器)先运行,服务端,不需要事先知道客户端IP和port     客户端(软件)(客户端机器)后运行, ...

  5. linux 下部署 redis

    Redis是一种高级key-value数据库.它跟memcached类似,不过数据 可以持久化,而且支持的数据类型很丰富.有字符串,链表,集 合和有序集合.支持在服务器端计算集合的并,交和补集(dif ...

  6. C# 从excel里面复制的1万6千多条记录粘贴到FCKeditor里面,点保存的时候,保存不了,页面没有反应

    客户那边添加公告,是直接从excel里面复制的,有1万6千多条记录,excel文件有6M多. 编辑器用的FCKeditor,也能粘贴上,就是点保存的时候,执行了一段时间就没有反映了,保存不了. 想着可 ...

  7. OA项目之弹出层中再弹出层

    弹出层中再弹出一层如图: <asp:TextBox runat="server" ID="txtUName" CssClass="span2&q ...

  8. 自定义安装php开发环境(1)--apache和php整合

    第一步:安装apache 第二步:下载php核心包php-5.3.3-Win32-VC6-x86.zip.并放入开发环境文件夹C:/phpenv/文件夹下 第三步: 将apache 和php 整合 也 ...

  9. c#开发Mongo笔记第四篇

    今天是个伟大的日子,不得不说小苹果的歌词真是深入人心啊. 不过今天伟大并不是因为我种下一颗种子,而是我从今天不再写demo,而是进入项目的正式开发当中,毕竟项目时间有限(想必各位码农也都深有体会吧), ...

  10. 0729am空控制器