arm嵌入式、linux驱动开发应该怎么学?

我现在是软件开发,平时是用的C,不过没怎么用linux开发,
现在想做arm嵌入式或linux驱动开发,但是这两种都和硬件有点关系,我对硬件不怎么了解,
请大家指点一下要怎么学好这两种开发,具体要学哪些内容;还有和硬件哪部分使用比较多,比如数电、模电,需要会哪些内容,不要说会看懂电路原理图这种话,我现在就是不知道会看哪些内容才能看懂。
求高手解答,最好是有实际经验的,有兴趣的也可交流下,先谢谢了

嵌入式零基础学习路线:
1)学习 Linux系统安装、常用命令、应用程序安装。
2) 学习 Linux 下的 C 编程、这本书必学《UNIX 环境高级编程》、《UNIX 网络编程》,Rechard Stevens 写的,C 高手大都学习过《C 和指针》、《C 缺陷与陷阱》、《高质量C/C++编程指南》、《C 专家编程》、《The C programming Language》
3)程序员大都要学:数据结构,嵌入式程序员数据结构必学!
4)底层开发人员大都要学:微机原理、计算机体系结构,嵌入式开发人员必学!
5)单片机可以让一个从事软件开发的人了解和如何操作硬件,有必要学,因为一开始就从 ARM 入手,不太现实!
6)ARM 体系结构,其中有汇编。
7)数字电路有必要学习,不然你在做底层开发时真的会不知道怎么看原理图,起码也得懂与或门吧。
8)ARM + Linux 应用程序开发。(前提是要有开发板)
到此,你勉强算是在嵌入式Linux 这个行业有了初步入门了吧, 但遗憾的是这还远远不够!
9)要做底层开发,就必须知道软硬件之间是如何衔接和配合工作的,那么电子技术应该要好好学习了,很多时候会用到模拟电路知识,这是区别好手与菜鸟的不同之处之一。
10)Linux 下的汇编要学,这样你才能真正了解你写的程序是如何在一个特定的硬件上跑的。这是区别好手与菜鸟的不同之处之二。
11)TCP/IP 协议栈要学,所有的嵌入式高手都得掌握的东西,这是区别好手与菜鸟的不同之处之三。
12)有了这些东西,拿下 Linux 驱动已经不再话下,需要你去学习 Linux 内核源代码和Linux驱动程序设计,这是一个技术升华。
13)音频、视频的解码译码技术你得学。
14)各种 IC ,各种 bootloader 你能够参与其开发设计。
15)自行设计开发新产品,新技术。
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-08-14
准备工作:1买一块ARM9的板子,推荐mini2440,先根据实际的板子对板子有一个熟悉,搞嵌入式的,就是要掌握好可裁剪性,对硬件的理解才能在这行混的好,不然只学习软件编程,什么时候才能做到项目经理啊!所以熟悉板子,学习硬件很重要,也是你比那些只会编程的人的优势,这优势关系到你以后升职,扯远了。。。。
2 学习好linux,推荐《鸟哥的私房菜》入门用,我入门也是用它的,很好用
学习过程:1准备工作做好了以后,下一个嵌入式的学习视频,根据视频上的程序先跑跑,从hello world跑起,不要因为简单就不跑,先跑书本上的给你的程序,先不要想着编程,跑完每个程序,然后自己再小改改程序,看能不能实现你自己的想法,这些都做好了,一个视频系列基本看完,进入下一步
2开始看一方面你感兴趣的编程方面,你喜欢驱动开发,那你可以先做一个方面的驱动开发,网卡驱动啊,tcp/ip啊,nfs文件共享啊,各种学,那时候你已经进入合格的进入了嵌入式工程师的队伍了
第2个回答  2022-08-24

第一、学习基本的裸机编程

对于学硬件的人而言,必须先对硬件的基本使用方法有感性的认识,更必须深刻认识该硬件的控制方式,如果一开始就学linux系统、学移植那么只会马上就陷入一个很深的漩涡。


第二、使用linux系统进行一些基本的实验

买一套板子的话,一般会提供一些linux的试验例程,好好做一段时间这个吧,这个过程也是很有意义的,也是为进一步的学习积累感性认识,你能想象一个从没有使用过linux系统的人能学好linux的编程吗?好好按照手册上的例程做一做里面的实验。


第三、研究完整的linux系统的的运行过程

三部分:bootloader、linux kernel(linux内核)、rootfile(根文件系统)。


第四、开始做系统移植

上面说到完整的linux有3部分,而且你也知道了他们之间的关系和作用,那么现在你要做的便是自己动手学会制作这些东西。当然不可能叫你直接编写这些代码,这也不实现。事实上这3者都能在网上下载到相应的源代码,但是这个源代码不可能下载编译后就能在你的系统上运行,需要很多的修改,直到他能运行在你的板子上,这个修改的过程就叫移植。在进行移植的过程中你要学的东西很多,要懂的相关知识也很多,等你完成了这个过程你会发现你已经算是一个初出茅庐的高手了。


第五、研究linux驱动程序的编写

移植系统并不是最终的目的,最终的目的是开发产品,做项目,这些都要进行驱动程序的开发。

Linux的驱动程序可以说是五花八门,linux2.4和linux2.6的编写有相当大的区别,就是同为linux2.6但是不同版本间的驱动程序也有区别,因此编写linux的驱动程序变都不是那么容易的事情,对于最新版本的驱动程序的编写甚至还没有足够的参考资料。那么我的建议就是使用、移植一个不算很新的版本内核,这样到时学驱动的编程就有足够的资料了。


第六、研究应用程序的编写

做作品做项目除了编写驱动程序,最后还要编写应用程序。现在的趋势是图形应用程序的开发,而图形应用程序中用得最多的还是qt/e函数库。不过我希望你能使用国产的MiniGUI函数库。支持MiniGUI”。MiniGUI的编程比较相似Windows下的VC编程,比较容易上手,效果应该说是相当不错的。

第3个回答  2012-08-26
arm是嵌入式开发应用的硬件,linux是嵌入式开发应用的软件。
我们所谓的嵌入式开发,说白了就是硬件和软件相结合嵌入到整机里使整机实现智能化的过程。
嵌入式系统知识体系结构如下:
基础课主要包括:电路、模拟电子学、数字电子学、C语言;
专业基础课程主要包括:汇编语言、微机原理/单片机原理、计算机接口技术、操作系统、计算机网络;
专业课程课程包括:嵌入式ARM系统设计与应用、嵌入式Linux系统应用与驱动开发、基于DSP系系统设计与应用。

参考资料:西 嵌 教 育

第4个回答  2012-08-13
不用模电,懂点皮毛就行,忘了也行。。。数电懂一点就行
总的来说,自学的话,不走弯路是不可能,每个人有自己的学习方法
作为一个自学ARM+LINUX的人,告诉你我的经验
1.具体要学哪些内容-->
:linux
以你现在的情况,假设C有一定基础,那么你现在要熟悉linux平台,具备一些linux开发经验后,学习字符设备,块设备,网络设备的基本开发方式,注册中断和函数等
2.ARM
自己静下心,看看ARM体系,ARM汇编,ARM中断等
3.开发板使用方法
学嵌入式,没块开发板,那你算了吧,我手上有一块TQ2440,一开始我就照着使用手册搞。。

如果你有兴趣,群27896931,注明来意追问

不过我在看嵌入式的时候都会有电路图,如果不怎么会电子方面的话基本上看不懂。能不能推荐本书?

追答

ARM嵌入式linux系统开发从入门到精通

本回答被提问者和网友采纳

ARM9开发板的嵌入式linux与ARM开发板的入门建议
第一,学习基本的单片机编程。对于学硬件的人而言,必须先对硬件的基本使用方法有感性的认识,更必须深刻认识该硬件的控制方式,如果一开始就学linux系统、学移植那么只会马上就陷入一个很深的漩涡。我在刚刚开始学ARM的时候是选择ARM7(主要是当时ARM9还很贵),学ARM7的时候还是保持着学51单片机的思维...

如何学习嵌入式Linux驱动
学习嵌入式Linux驱动,首先我们需要的是去了解整个嵌入式开发的整个流程分为四个层次:底层硬件设计、嵌入式驱动开发、内核开发、应用层开发。其中底层硬件设计必须要有一定的硬件功底,我建议你若不是科班出身(数电、模电、高频学的比较好)的人不要去考虑。内核开发需要你有很好的软件功底(C语言、C++学...

怎么样学习ARM嵌入式_嵌入式arm培训
1、嵌入式linux上层应用,包括QT的GUI开发 2、嵌入式linux系统开发 3、嵌入式linux驱动开发 嵌入式目前主要面向的几个操作系统是,LINUX,WINCE、VxWorks等等 Linux是开源免费的,而且其源代码是开放的,更加适合我们学习嵌入式。 所以你可以尝试以下路线: (1)C语言是所有编程语言中的强者,单片机、DSP、类似ARM的种种芯片...

如何学习嵌入式Linux驱动程序开发求解
7. 简单学习下内存管理, 这个是最难的,明白各种memory alloc的函数实现细节。这是linux开发的基本功。8. 学习锁机制的应用,这个不是最难的但是最容易犯错的,涉及到很多同步和并发的问题。9. 看内核中实际应用的驱动代码。 你会发现最基本的你已经知道了, 大的框架都是一样的, 无非是read, wr...

我想学习ARM嵌入式,从哪入手?应该学习哪些知识点?
您可以参照青岛双硕程序员培训学校的ARM嵌入式课程大纲,他们的大纲还是比较专业和到位,我的具体联系方式到我空间查找:一、 嵌入式开发基础 1、 Linux基础知识和系统安装 2、 交叉环境的搭建;开发板的初步认识和环境建立;3、 Linux常用命令,文本编辑器vi,简单shell脚本编程;4、Linux开发环境基础:...

嵌入式linux怎么学?学习嵌入式linux有什么方法?
嵌入式数据库开发;嵌入式 Linux应用综合项目;ARM处理器编程;ARM硬件接口开发;3.:底层 嵌入式底层一般会涉及到,如何把你写的程序移植到开发板上运行,那么就会接触到系统移植、内核驱动开发等等,这是嵌入式工程师最高境界。主要要学以下这些:嵌入式Linux系统开发;嵌入式Linux内核开发;嵌入式Linux驱动开发...

嵌入式应该学习什么如何学习
三、学习的步骤 第一步:C语言、计算机组成原理、模拟电路&数字电路 第二步:汇编语言、单片机、操作系统、C++ 第三步:硬件编程语言、arm 四、嵌入式方向分类 嵌入式开发大抵分四个方向: 1、硬件 2、驱动 3、内核 4、应用 总结: 循序渐进,一步步扎实做好。在完成了你学习的科目后,就可以对自己的就业方向分类了...

请问学习ARM嵌入式开发应该准备些什么开发工具和要求?
嵌入式Linux+ARM方向,关于这个方向,大概分3个阶段:1、嵌入式linux上层应用,包括QT的GUI开发 2、嵌入式linux系统开发 3、嵌入式linux驱动开发嵌入式目前主要面向的几个操作系统是,LINUX,WINCE、VxWorks等等Linux是开源免费的,而且其源代码是开放的,更加适合我们学习嵌入式。自学的话你可以尝试以下路线...

学习ARM如何入门,他和嵌入式Linux有什么区别,怎么学习他们?
学习ARM侧重于了解ARM CPU的特性,接口资源的了解,有点像学习单片机,需要了解一些硬件知识。而学习嵌入式Linux,侧重于对操作系统的理解,需要掌握c语言,linux操作命令,linux操作系统特性,系统移植等方面的知识。 学习方法的话,建议关注一下像华清远见这类的专业培训机构的公开免费视频和文档资料,...

linux学习路线参考(嵌入式篇)
学习进程、线程、信号等关键概念。理解socket编程,精通TCP\/IP协议。通过实践,开发应用,如shell命令解析器、聊天软件、视频多播等。五、ARM体系结构 ARM处理器市场占比高,适合嵌入式开发。学习ARM指令集,理解汇编语言。使用开发板,下载对应处理器的资料,编写代码,实现功能。六、Linux内核与驱动 掌握内核...

相似回答