linux 设备驱动第三版 linux字符设备驱动开发
大家好,感谢邀请,今天来为大家分享一下linux 设备驱动第三版的问题,以及和linux字符设备驱动开发的一些困惑,大家要是还不太明白的话,也没有关系,因为接下来将为大家分享,希望可以帮助到大家,解决大家的问题,下面就开始吧!
GitHub 上有哪些值得推荐的开源电子书
语言无关类
操作系统
鸟哥的Linux私房菜(简体)
Linux系统高级编程
The Linux Command Line(中英文版)
Linux设备驱动(第三版)
深入分析Linux内核源码
UNIX TOOLBOX
Docker中文指南
Docker——从入门到实践
FreeRADIUS新手入门
Mac开发配置手册
FreeBSD使用手册
Linux命令行(中文版)
智能系统
一步步搭建物联网系统
web服务器
Nginx开发从入门到精通(淘宝团队出品)
版本控制
Git教程(本文由@廖雪峰创作,如果觉得本教程对您有帮助,可以去 iTunes购买)
git–简易指南
猴子都能懂的GIT入门
Git参考手册
Pro Git
Git Magic
GotGitHub
Git Community Book中文版
Mercurial使用教程
HgInit(中文版)
沉浸式学 Git
Git-Cheat-Sheet(感谢@flyhigher139翻译了中文版)
GitHub秘籍
NoSQL
NoSQL数据库笔谈(PDF)
Redis设计与实现
Redis命令参考
带有详细注释的 Redis 3.0代码
带有详细注释的 Redis 2.6代码
The Little MongoDB Book
The Little Redis Book
Neo4j简体中文手册 v1.8
Neo4j.rb中文资源
MySQL
MySQL索引背后的数据结构及算法原理
项目相关
持续集成(第二版)(译言网)
让开发自动化系列专栏
追求代码质量
selenium中文文档
Joel谈软件
约耳谈软体(Joel on Software)
Web
关于浏览器和网络的 20项须知
前端知识体系
浏览器开发工具的秘密
Chrome开发者工具中文手册
Chrome扩展开发文档
Grunt中文文档
移动Web前端知识库
正则表达式30分钟入门教程
前端开发体系建设日记
移动前端开发收藏夹
JSON风格指南
HTTP接口设计指北
前端资源分享(一)
前端资源分享(二)
前端代码规范及最佳实践
w3school教程整理
大数据
大数据/数据挖掘/推荐系统/机器学习相关资源
编程艺术
程序员编程艺术
每个程序员都应该了解的内存知识(译)【第一部分】
取悦的工序:如何理解游戏(豆瓣阅读,免费书籍)
其他
OpenWrt智能、自动、透明翻墙路由器教程
语言相关类 AWK
awk程序设计语言
C/C++
C++并发编程指南(@傅海平ICT)
Linux C编程一站式学习(宋劲杉,北京亚嵌教育研究中心)
CGDB中文手册
100个gdb小技巧
100个gcc小技巧
ZMQ指南
How to Think Like a Computer Scientist(中英文版)
跟我一起写Makefile(PDF)
GNU make中文手册
GNU make指南
Google C++风格指南
C/C++ Primer(by@andycai)
简单易懂的C魔法
Cmake实践(PDF版)
C++ FAQ LITE(中文版)
C++ Primer 5th Answers
CSS/HTML
学习CSS布局
通用 CSS笔记、建议与指导
CSS参考手册
Emmet文档
前端代码规范(腾讯alloyteam团队)
Dart
Dart语言导览
Fortran
Fortran77和90/95编程入门
Java
实时 Java系列
Apache Shiro用户指南
使用 Eclipse和 Java SE 6创建独立 Web Services应用程序
第 1部分: Web Services服务端应用程序
第 2部分: Web服务客户端应用程序
JavaServer Faces 1.2入门
第 1部分:构建基本应用程序
第 2部分: JSF生命周期、转换、检验和阶段监听器
用 Eclipse Europa进行 Web开发
第 1部分: Eclipse Java EE
第 2部分: PHP开发工具
第 3部分: Ruby Development Toolkit和 RadRails
使用 JavaServer Faces构建 Apache Geronimo应用程序
第 1部分:使用 Eclipse和 Apache MyFaces Core构建基本的应用程序
第 2部分:在 JavaServer Faces中使用 Tomahawk
第 3部分:使用 ajax4jsf添加 Ajax功能
第 4部分:使用 Apache Trinidad组件扩展 JSF
第 5部分:将 JSF应用程序与 Spring集成
Apache Geronimo和 Spring框架
第 1部分:开发方法学
第 2部分:构建第一个应用程序
第 3部分:集成 DAO与 ORM
第 4部分:混合使用 Spring AOP和 Spring Web Flow
第 5部分: Spring MVC
第 6部分: Spring MVC:使用 Web视图技术
终极 mashup—— Web服务和语义 Web
第 1部分:使用与组合 Web服务
第 2部分:管理 Mashup数据缓存
第 3部分:理解 RDF和 RDFs
第 4部分:创建本体
第 5部分:切换 Web服务
Jersey 2.x用户指南
MyBatis中文文档
JavaScript
Google JavaScript代码风格指南
Airbnb JavaScript规范
JavaScript标准参考教程(alpha)
Javascript编程指南(源码)
javascript的 12个怪癖
JavaScript秘密花园
JavaScript核心概念及实践(PDF)(此书已由人民邮电出版社出版发行,但作者依然免费提供PDF版本,希望开发者们去购买,支持作者)
《JavaScript模式》翻译,此书中文版有售,但是纸质书翻译的还没有这个版本翻译的好
命名函数表达式探秘(注:原文由为之漫笔翻译,原始地址无法打开,所以此处地址为我博客上的备份)
学用 JavaScript设计模式(开源中国)
深入理解JavaScript系列
ECMAScript 6入门(作者:阮一峰)
jQuery
jQuery解构
简单易懂的JQuery魔法
How to write jQuery plugin
Node.js
Node入门
七天学会NodeJS
Nodejs Wiki Book(繁体中文)
express.js中文文档
koa中文文档
使用 Express+ MongoDB搭建多人博客
Express框架
nodejs文档
Node.js包教不包会
Learn You The Node.js For Much Win!(中文版)
Node debug三法三例
underscore.js
Underscore.js中文文档
backbone.js
backbone.js入门教程(PDF)
Backbone.js入门教程第二版
Developing Backbone.js Applications(中文版)
AngularJS
AngularJS最佳实践和风格指南
AngularJS中译本
AngularJS入门教程
构建自己的AngularJS
在Windows环境下用Yeoman构建AngularJS项目
zepto简明中文手册
Sea.js
Hello Sea.js
CoffeeScript
CoffeeScript Cookbook
The Little Book on CoffeeScript中文版
ExtJS
Ext4.1.0中文文档
Chrome扩展及应用开发
JavaScript入门教程
PHP
PHP调试技术手册(PDF)
XDebug 2中文手册(译)(CHM)
PHP之道
PHP最佳实践
PHP安全最佳实践
深入理解PHP内核
PHP扩展开发及内核应用
CodeIgniter用户指南
Laravel4中文文档
Laravel入门
Symfony2中文文档(未译完)
Phalcon中文文档(翻译进行中)
YiiBook几本Yii框架的在线教程
简单易懂的PHP魔法
swoole文档及入门教程
iOS
iOS开发60分钟入门
iOS7人机界面指南
Google Objective-C Style Guide中文版
iPhone 6屏幕揭秘
Apple Watch开发初探
马上着手开发 iOS应用程序
网易斯坦福大学公开课:iOS 7应用开发字幕文件
Android
Android Design(中文版)
Google Android官方培训课程中文版
Android学习之路
Python
小白的Python教程
简明Python教程
零基础学Python
Python 2.7官方教程中文版
Python 3.3官方教程中文版
深入 Python 3
PEP8 Python代码风格规范
Google Python风格指南中文版
Python入门教程(PDF)
Python的神奇方法指南
笨办法学 Python(PDF版下载)
Django文档中文版
Django最佳实践
The Django Book中文版
web.py 0.3新手指南
Web.py Cookbook简体中文版
Dive Into Python中文版
Bottle文档中文版(需翻墙)
Flask文档中文版
Jinja2文档中文版
Werkzeug文档中文版
Flask之旅
Introduction to Tornado中文翻译
Python自然语言处理中文版(感谢陈涛同学的翻译,也谢谢@shwley联系了作者)
Python绘图库 matplotlib官方指南中文翻译
Scrapy 0.25文档
ThinkPython
Ruby
Ruby风格指南
Rails风格指南
笨方法学 Ruby
Ruby on Rails指南
Ruby on Rails实战圣经
Ruby on Rails Tutorial原书第 2版(本书网页版免费提供,电子版以 PDF、EPub和 Mobi格式提供购买,仅售 9.9美元)
编写Ruby的C拓展
Ruby源码解读
Shell
Shell脚本编程30分钟入门
Go
Go编程基础
Go入门指南
学习Go语言(PDF)
Go Web编程(此书已经出版,希望开发者们去购买,支持作者的创作)
Go实战开发(当我收录此项目时,作者已经写完第三章,如果读完前面章节觉得有帮助,可以给作者捐赠,以鼓励作者的继续创作)
Network programming with Go中文翻译版本
Groovy
实战 Groovy系列
LaTeX
一份其实很短的 LaTeX入门文档
一份不太简短的 LATEX 2ε介绍(PDF版)
LISP
ANSI Common Lisp中文翻译版
Lua
Lua编程入门
Haskell
Real World Haskell中文版
R
R语言忍者秘笈
Scala
Scala课堂(Twitter的Scala中文教程)
Effective Scala(Twitter的Scala最佳实践的中文翻译)
Scala指南
Swift
The Swift Programming Language中文版
Perl
Modern Perl中文版
Perl程序员应该知道的事
Prolog
笨办法学Prolog
Vim中文文档
Vimscript
笨方法学Vimscript中译本
Vim中文文档
读书笔记及其它读书笔记
编译原理(紫龙书)中文第2版习题答案
把《编程珠玑》读薄
Effective C++读书笔记
Golang学习笔记、Python学习笔记、C学习笔记(PDF)
Jsoup学习笔记
学习笔记: Vim、Python、memcached
图灵开放书翻译计划–C++、Python、Java等
蒂姆·奥莱利随笔(由译言网翻译,电子版免费)
Octave入门(PDF版)
SICP解题集
精彩博客集合
正则表达式简明参考
学习嵌入式驱动前需要掌握哪些知识
嵌入式门槛虽然较高,但也跟其他事物一样,并不是牢不可破。只要我们用心去对待,冬雪终将化去,春风定会吹来。
具体步骤如下:
1、《C语言》第二版谭浩强;《C程序设计语言》第二版徐宝文译机械工业出版社
你能区分开指针数组和数组指针吗?你知道函数指针吗?
你能区分开定义一个变量时系统给它分配的空间与用malloc()函数给一个变量分配的空间有什么不一样吗?
2、《数据结构》C语言版黄国愉、叶乃青编清华大学出版社
你能合上书本,用C语言实现书中的单链表、双链表数据结构吗?
3、《实用C++程序设计》第二板中国电力出版社 Steve_Oualline著
此阶段主要是学习其面向对象的编程思想,加深对C语言和数据结构的理解。
4、学习单片机,最好能找个前辈带一带。
你能用51单片机做出一样实际的东西吗?即使它再简单!
要注意加深对中断的理解。
5、学习ARM单片机。
(1)、细读《ARM微控制器基础与实战》周立工编写(注:即使你不用书中的开发板)
(2)、细读相关芯片的原版英文文档。如:arm920TE.pdf S3C2410_1.2.pdf
6、学习uCOS!!操作系统。
(1)、细读《嵌入式实时操作系统uC/OS-!!》第二版召贝贝译
你能把uCOS!!移植到自己的平台上吗?
(2)、能编写在uCOS!!操作系统环境下运行的针对具体硬件的驱动程序
7、熟悉Linux环境,学习Linux环境编程,学习交叉编程
(1)、细读《linux命令大全.pdf》
(2)、细读《GNU Make使用手册(中译版).pdf》
(3)、学习创建交叉编程环境.
8、学习Linux操作系统。
(1)、《UNIX环境高级编程》
(2)、细读“joyfire笔记”,可在“www.qianrushi.com”网站的好书下载栏目获取
(3)、细读《linux内核完全注释》
(4)、细读《understanding the linux kernel 2》
(5)、利用源代码阅读利器工具”Source Insight”进行真正的linux内核原码刨析
(6)、最后进行内核移植,并能编写在linux操作系统环境下运行的针对具体硬件的驱动程序
9、学习Linux设备驱动编写。可参考《Linux设备驱动程序》
学习linux底层驱动开发有什么经典的参考书
结构、操作系统、体系结构、编译原理、计算机网络你全修过
我想大概可以分为4个阶段,水平从低到高
从安装使用=>linux常用命令=>linux系统编程=>内核开发阅读内核源码
其中学习linux常用命令时就要学会自己编译内核,优化系统,调整参数
安装和常用命令书太多了,找本稍微详细点的就ok,其间需要学会正则表达式
系统编程推荐《高级unix环境编程》,黑话叫APUE
还有《unix网络编程》
这时候大概还需要看资料理解elf文件格式,连接器和加载器,cmu的一本教材中文名为《深入理解计算机系统》比较好
内核开发阅读内核源码阶段,从写驱动入手逐渐深入linux内核开发
参考书如下《linux device drivers》,黑话叫ldd
《linux kernel development》,黑话叫lkd
《understading the linux kernel》,黑话叫utlk
《linux源码情景分析》
这四本书为搞内核的必读书籍
最后,第三阶段和第四阶段最重动手,空言无益,光看书也不罩,不动手那些东西理解不了
学习linux/unix编程方法的建议
建议学习路径:
首先先学学编辑器,vim, emacs什么的都行。
然后学make file文件,只要知道一点就行,这样就可以准备编程序了。
然后看看《C程序设计语言》K&R,这样呢,基本上就可以进行一般的编程了,顺便找本数据结构的书来看。
如果想学习UNIX/LINUX的编程,《APUE》绝对经典的教材,加深一下功底,学习《UNP》的第二卷。这样基本上系统方面的就可以掌握了。
然后再看Douglus E. Comer的《用TCP/IP进行网际互连》第一卷,学习一下网络的知识,再看《UNP》的第一卷,不仅学习网络编程,而且对系统编程的一些常用的技巧就很熟悉了,如果继续网络编程,建议看《TCP/IP进行网际互连》的第三卷,里面有很多关于应用协议telnet、ftp等协议的编程。
如果想写设备驱动程序,首先您的系统编程的接口比如文件、IPC等必须要熟知了,再学习《LDD》2。
对于几本经典教材的评价:
《The C Programing Language》K&R经典的C语言程序设计教材,作者是C语言的发明者,教材内容深入浅出。虽然有点老,但是必备的一本手册,现在有时候我还常翻翻。篇幅比较小,但是每看一遍,就有一遍的收获。另外也可用谭浩强的《C语言程序设计》代替。
《Advanced Programing in Unix Envirement》 W.Richard Stevens:也是非常经典的书(废话,Stevens的书哪有不经典的!),虽然初学者就可以看,但是事实上它是《Unix Network Programing》的一本辅助资料。国内的翻译的《UNIX环境高级编程》的水平不怎么样,现在有影印版,直接读英文比读中文来得容易。
《Unix Network Programing》W.Richard Stevens:第一卷讲BSD Socket网络编程接口和另外一种网络编程接口的,不过现在一般都用BSD Socket,所以这本书只要看大约一半多就可以了。第二卷没有设计到网络的东西,主要讲进程间通讯和Posix线程。所以看了《APUE》以后,就可以看它了,基本上系统的东西就由《APUE》和《UNP》vol2概括了。看过《UNP》以后,您就会知道系统编程的绝大部分编程技巧,即使卷一是讲网络编程的。国内是清华翻译得《Unix网络编程》,翻译者得功底也比较高,翻译地比较好。所以建议还是看中文版。
《TCP/IP祥解》一共三卷,卷一讲协议,卷二讲实现,卷三讲编程应用。我没有怎么看过。,但是据说也很经典的,因为我没有时间看卷二,所以不便评价。
《用TCP/IP进行网际互连》Douglus.E.Comer一共三卷,卷一讲原理,卷二讲实现,卷三讲高级协议。感觉上这一套要比Stevens的那一套要好,就连Stevens也不得不承认它的第一卷非常经典。事实上,第一卷即使你没有一点网络的知识,看完以后也会对网络的来龙去脉了如指掌。第一卷中还有很多习题也设计得经典和实用,因为作者本身就是一位教师,并且卷一是国外研究生的教材。习题并没有答案,留给读者思考,因为问题得答案可以让你成为一个中级的Hacker,这些问题的答案可以象Douglus索取,不过只有他只给教师卷二我没有怎么看,卷三可以作为参考手册,其中地例子也很经典。如果您看过Qterm的源代码,就会知道Qterm的telnet实现部分大多数就是从这本书的源代码过来的。对于网络原理的书,我推荐它,而不是Stevens的《TCP/IP祥解》。
《Operating System- Design and Implement》这个是讲操作系统的书,用Minix做的例子。作者母语不是英文,所以英文看起来比较晦涩。国内翻译的是《操作系统设计与实现》,我没看过中文版,因为翻译者是尤晋元,他翻译的《APUE》已经让我失望头顶了。读了这本书,对操作系统的底层怎么工作的就会
有一个清晰的认识。
《Linux Device Driver》2e,为数不多的关于Linux设备驱动程序的好书。不过内容有些杂乱,如果您没有一些写驱动的经验,初次看会有些摸不着南北。国内翻译的是《Linux设备驱动程序》第二版,第一版,第二版的译者我都有很深的接触,不过总体上来说,虽然第二版翻译的有些不尽人意,但是相比第一版来说已经超出了一大截。要读这一本书,至少应该先找一些《计算机原理》《计算机体系结构》的书来马马虎虎读读,至少应该对硬件和计算机的工作过程有一些了解。