|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
闲侃学习路
8 _$ C+ f- G! [2 H7 y8 O 入坑学习嵌入式的大概分两路人,一路是学计算机的本来搞得软件,却对嵌入式产生了浓厚的兴趣,所以入坑了;还有一路人就是像我一样,本来是搞单片机的,因不断追求,入坑了嵌入式。入坑了嵌入式不久就会卡住,为什么呢?无非是搞计算机的不懂硬件,搞硬件的无法理解计算机专业的东西,搞得上不去下不来的感觉。其实我个人觉得,嵌入式方向分的很细,比如说,搞计算机的完全可以不用理会内核驱动和BootLoader开发,只需要去搞顶层应用程序即可,搞硬件的也没必要纠结顶层软件怎么设计,学会BootLoader定制,内核环境部署,驱动开发即可,在自己的基础上去努力学习,如果还要学习更多的知识就需要慢慢积累,一点一点学习了。在学习路上,也许你会碰到有很多人说,搞什么BootLoader,厂商做好了,搞什么驱动,移植厂家做好的就行了。我不建议以这种思想去学习嵌入式,为什么呢?原因很简单,厂家提供的BootLoader是谁做的,厂家提供的驱动又是谁做的,肯定是人啊!既然是人做的,我们就有学习的必要,那些人为什么不能是我们呢?我们搞单片机的,本来就对底层代码有着浓厚的兴趣,学习BootLoader开发,驱动开发,与我们当初学的单片机和专业密切相关,所以如果你原来是搞单片机的,就不要听一些人说什么别人做好了之类的话,什么别人都做好了,要你干什么?相反的,如果你是学计算机的,不理解寄存器如何配置,不理解驱动如何开发,看不懂电路图,那自然而然的就顺应了厂商都给你做好了这句话。所以我还是觉得,当初搞单片机的应该继续搞底层开发,搞计算机的应该接着搞软件。当然自己能力大,也可以都学习,都是可以的,根据自己情况定为好自己的学习方向是很重要的。0 q- k* D }0 N& k' o' S" p, x8 K
4 W6 Y& b( y& t/ z3 h
学习嵌入式的建议: A# e- W, h# t0 }- @8 @7 ]/ \
我这里讲的建议,是基于单片机的进阶之路,如果你是搞计算机的,那么请私信我,或者绕道。在Windows下开发单片机程序用的都是IDE集成开发环境像keil啦,IAR啦 emIDE啦,这些软件帮你做好了编译链接很多细节的部分,而把环境搬到Linux系统下,就要自己搭建GCC编译环境,GDB调试环境,还要自己搭建交叉编译环境等等!而linux系统下的软件还有程序对版本依赖很强,换个不同版本的linux可能又会有很多插件要装,中间会出现各种问题。所以我建议学习嵌入式linux系统时,尽量使用提供给你开发板的依赖系统版本。+ D3 n5 Z+ O" {: g( S
基础知识打牢固,一点一点学习,Makefile基本语法,必须要会简单的项目管理,这里推荐查阅《GNU Make》或者《跟我一起学Makefile》,还有shell命令,也要掌握基本常用的, 会编写简单的shell脚本编程。
* ~; y/ }5 ^. F, u5 [ 学习linux设备驱动的朋友,我推荐宋宝华的《linux设备驱动开发详解》,其余的用到什么就去网上找就行了。
/ J6 O# K+ N) w" J5 ]8 S9 L
; x3 Q- F3 {/ z, X& `/ K [2 d嵌入式linux的学习框架
! v; w* A/ M$ p' L( r( I9 q; j4 R* V6 H9 m+ w2 `1 e
& p! N; I, \7 R5 m3 ]
7 E- T# R5 H% v$ w n9 x9 O. Z" l( p/ `
这里我的学习路线是这样的,如果学习顶层应用的朋友,学习完系统可以学习OpenCV或者openwrt之类的这些我在这里不讨论。关于底层的学习框架,我已经画的很明显了,所以基础打好,一点一点来,一定能攻破难关,加油吧!朋友 |
|