Chinaunix首页 | 论坛 | 博客
  • 博客访问: 10507049
  • 博文数量: 2905
  • 博客积分: 20098
  • 博客等级: 上将
  • 技术积分: 36298
  • 用 户 组: 普通用户
  • 注册时间: 2009-03-23 05:00
文章存档

2012年(1)

2011年(3)

2009年(2901)

分类: LINUX

2009-03-23 11:08:35

深入浅出Linux设备驱动编程--引言
宋宝华  yesky

引言

ARM的嵌入式Linux移植体验》发表以来,笔者收到许多读者来信,他们对嵌入式Linux开发表现出了浓厚的兴趣。我们摘取其中的两封:
   你好,不知道怎么称呼你。就叫你技术大侠吧。
   我是一个在学校里教一些基础课的老师,一直没有在那方面做出点成绩。现在本人下决心想在嵌入式这块努点力,但一直不知道怎么下手。本来没有硬件基础,LINUX也才接触。希望大侠给条出路,指点一下从零开始应该走什么路比较好。
多谢!
                              xxx
 
   你好!
   首先,请原谅我的冒昧打扰!
   我是通过一个网站知道你的邮件地址的,我看过你的一篇关于LINUX的文章,很深入浅出的,由于以前我的相关知识比较薄弱,现在又从事这方面的工作(嵌入式系统的的硬件研发工作),所以时常感到力不从心,如果你有空,请给我介绍一点相关的书籍,或者给我E-MAIL一点您的相关资料或者您的学习心得好吗?
   我想知道如何写驱动,以及对LINUX内核有一个了解。。。
   向您的无私奉献表示感谢!
                           xxx
首先对读者的学习热情和强烈的求知欲表示敬意,基于读者对Linux设备驱动程序编写知识的需求和目前该类参考资料缺乏的现状,创作本系列文章。
目前,Linux软件工程师大致可分为两个层次:
1Linux应用软件工程师(Application Software Engineer):主要利用C库函数和Linux API进行应用软件的编写;
2Linux固件工程师(Firmware Engineer):主要进行BootloaderLinux的移植及Linux设备驱动程序的设计。
一般而言,固件工程师的要求要高于应用软件工程师的层次,而其中的Linux设备驱动编程又是Linux程序设计中比较复杂的部分,究其原因,主要包括如下几个方面:
1)设备驱动属于Linux内核的部分,编写Linux设备驱动需要有一定的Linux操作系统内核基础;
2)编写Linux设备驱动需要对硬件的原理有相当的了解,大多数情况下我们是针对一个特定的嵌入式硬件平台编写驱动的;
3Linux设备驱动中广泛涉及到多进程并发的同步、互斥等控制,容易出现bug
4)由于属于内核的一部分,Linux设备驱动的调试也相当复杂。
阅读(733) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~