想学习Linux 驱动,需要什么知识
我的目的是能做出一些东西,不需要太复杂的东西。本人大三,电子专业的,刚开学到现在把APUE等关于系统编程的求看了,也动手写了好多。想学习关于驱动方面的知识,一是本身就喜欢...
我的目的是能做出一些东西,不需要太复杂的东西。本人大三,电子专业的,刚开学到现在把APUE 等关于系统编程的求看了,也动手写了好多。想学习关于驱动方面的知识,一是本身就喜欢编程,大一就开始玩python 和c#了,但是和电子专业的不太相关(二是大四开学时有baoyan 考试和面试,增加自己的筹码,学点和电子相关的编程)。当然不得不找工作的话,也会往这方面,喜欢嘛。现在想请教怎么入门到驱动,参考书籍,或者要不要先学学USB,PCI 协议等(网上找了资料PCI 的少之又少 要不要先看微机接口 计算机组成原理等书)
展开
6个回答
展开全部
首先,接触linux操作系统,在你的电脑上装一个linxu操作系统(建议ubuntu,比较友好),熟悉经常要用的命令,熟悉环境(建议看“鸟哥的linux私房菜”)。
其次,阅读经典书籍是不可少的,建议先看ldd前四章,大概了解linux驱动的框架,驱动是做什么的,该如何写驱动,那本书上有一些例子,可以在你的电脑上编译,执行看看。后面的章节在结合自己的情况而定。
第三,建议阅读ulk(understanding the linux kernel)所有的内容,了解linux内核的一些基本知识,在心中建立一个框架,不必完全懂,深入了解就好,以后经常翻翻,受益无穷!
第四,别着急,这才是你真的进入linux驱动的第一步,花点钱买个开发板吧,然后了解代码的编译,下载,看看板子的datasheet,针对自己感兴趣的深入研究。建议学习流程,led灯控制---tp---i2c总线-----lcd-----camera----flash----wifi/bt等。因为这个里面牵涉了甚多内核的子系统(input,v4l2,fb等
),所以可能要多话时间看代码,了解代码的框架,设计的思想等,只要一步一个脚印,一定会有所成。
第五,因为现在的移动设备大多数都是android的了,所以你就要看看linux kernel在android的作用,然后往上看看,看看hal层的代码,这些在调试中都是需要的,如果有兴趣,更加可以看看framework的代码了,学习android一些工作机制,类似于surfaceflinger,audioflinger等等。。
其次,阅读经典书籍是不可少的,建议先看ldd前四章,大概了解linux驱动的框架,驱动是做什么的,该如何写驱动,那本书上有一些例子,可以在你的电脑上编译,执行看看。后面的章节在结合自己的情况而定。
第三,建议阅读ulk(understanding the linux kernel)所有的内容,了解linux内核的一些基本知识,在心中建立一个框架,不必完全懂,深入了解就好,以后经常翻翻,受益无穷!
第四,别着急,这才是你真的进入linux驱动的第一步,花点钱买个开发板吧,然后了解代码的编译,下载,看看板子的datasheet,针对自己感兴趣的深入研究。建议学习流程,led灯控制---tp---i2c总线-----lcd-----camera----flash----wifi/bt等。因为这个里面牵涉了甚多内核的子系统(input,v4l2,fb等
),所以可能要多话时间看代码,了解代码的框架,设计的思想等,只要一步一个脚印,一定会有所成。
第五,因为现在的移动设备大多数都是android的了,所以你就要看看linux kernel在android的作用,然后往上看看,看看hal层的代码,这些在调试中都是需要的,如果有兴趣,更加可以看看framework的代码了,学习android一些工作机制,类似于surfaceflinger,audioflinger等等。。
展开全部
学习Linux驱动你会发现你的python和C#方面的知识基本用不上,因为Linux内核是C的。
首先建议先学习C语言,你有面向对象的基础面向过程理解的肯定更透彻,
其次学习计算机组成原理和操作系统两门计算机专业课程,如果能看看数据结构就更好了,
有了以上的基础,再学习一下Linux内核,推荐一部《深入理解Linux内核》,
在学习上书的过程中对Linux下驱动的编程就会有比较深的理解,这时候再来经典的驱动书籍《linux设备驱动程序 第三版》然后就是《unix环境高级编程》《unix网络编程》,
学完这些估计您就是大牛了,这时候再自己做一两个项目,找工作肯定是不愁的,考研之路也会更加轻松,对自身也是一种很好地提高。
希望对您有帮助。
首先建议先学习C语言,你有面向对象的基础面向过程理解的肯定更透彻,
其次学习计算机组成原理和操作系统两门计算机专业课程,如果能看看数据结构就更好了,
有了以上的基础,再学习一下Linux内核,推荐一部《深入理解Linux内核》,
在学习上书的过程中对Linux下驱动的编程就会有比较深的理解,这时候再来经典的驱动书籍《linux设备驱动程序 第三版》然后就是《unix环境高级编程》《unix网络编程》,
学完这些估计您就是大牛了,这时候再自己做一两个项目,找工作肯定是不愁的,考研之路也会更加轻松,对自身也是一种很好地提高。
希望对您有帮助。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2019-11-28
展开全部
给你推荐一本书籍,O'Reilly:LINUX设备驱动程序(第3版),业内比较出名的书籍,可以看一下。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
那个知友说的都是软件方面。
硬件方面,建议你看看电子学基础等数据。
开发方面,建议先从简单的入手,比如串口/并口/LED/矩阵键盘/IIC等,难一点再做PCI/USB的。
硬件方面,建议你看看电子学基础等数据。
开发方面,建议先从简单的入手,比如串口/并口/LED/矩阵键盘/IIC等,难一点再做PCI/USB的。
追问
写这些基本的驱动,需要买板子之类的吗?
追答
你先写linux上面的驱动,用这些驱动和标准设备(现有的设备)进行通信看看是否成功。如果这些都没有问题了,可以进入嵌入式领域,自己买板子吧。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询