文章目录
个人简介
博主撰写这篇文章的时候乃一名大四抠脚学生,在一所联办职业学校上学,期间学过51,STM32,MSP430,也简单的学过FPGA,PLC(学校开的课程趁此期间学习的)也用这些单片机做了些小作品,不断的学习历程也让我接触到了更多的知识,于是乎单片机不再满足我对技术的追求,大三暑假决定入坑嵌入式,期间原地打转,摸爬滚打也总结出了自己的学习路线并坚持着,在此篇文章与大家分享一下。
闲侃学习路
入坑学习嵌入式的大概分两路人,一路是学计算机的本来搞得软件,却对嵌入式产生了浓厚的兴趣,所以入坑了;还有一路人就是像我一样,本来是搞单片机的,因不断追求,入坑了嵌入式。入坑了嵌入式不久就会卡住,为什么呢?无非是搞计算机的不懂硬件,搞硬件的无法理解计算机专业的东西,搞得上不去下不来的感觉。其实我个人觉得,嵌入式方向分的很细,比如说,搞计算机的完全可以不用理会内核驱动和BootLoader开发,只需要去搞顶层应用程序即可,搞硬件的也没必要纠结顶层软件怎么设计,学会BootLoader定制,内核环境部署,驱动开发即可,在自己的基础上去努力学习,如果还要学习更多的知识就需要慢慢积累,一点一点学习了。在学习路上,也许你会碰到有很多人说,搞什么BootLoader,厂商做好了,搞什么驱动,移植厂家做好的就行了。我不建议以这种思想去学习嵌入式,为什么呢?原因很简单,厂家提供的BootLoader是谁做的,厂家提供的驱动又是谁做的,肯定是人啊!既然是人做的,我们就有学习的必要,那些人为什么不能是我们呢?我们搞单片机的,本来就对底层代码有着浓厚的兴趣,学习BootLoader开发,驱动开发,与我们当初学的单片机和专业密切相关,所以如果你原来是搞单片机的,就不要听一些人说什么别人做好了之类的话,什么别人都做好了,要你干什么?相反的,如果你是学计算机的,不理解寄存器如何配置,不理解驱动如何开发,看不懂电路图,那自然而然的就顺应了厂商都给你做好了这句话。所以我还是觉得,当初搞单片机的应该继续搞底层开发,搞计算机的应该接着搞软件。当然自己能力大,也可以都学习,都是可以的,根据自己情况定为好自己的学习方向是很重要的。
学习嵌入式的建议
我这里讲的建议,是基于单片机的进阶之路,如果你是搞计算机的,那么请私信我,或者绕道。在Windows下开发单片机程序用的都是IDE集成开发环境像keil啦,IAR啦 emIDE啦,这些软件帮你做好了编译链接很多细节的部分,而把环境搬到Linux系统下,就要自己搭建GCC编译环境,GDB调试环境,还要自己搭建交叉编译环境等等!而linux系统下的软件还有程序对版本依赖很强,换个不同版本的linux可能又会有很多插件要装,中间会出现各种问题。所以我建议学习嵌入式linux系统时,尽量使用提供给你开发板的依赖系统版本。
基础知识打牢固,一点一点学习,Makefile基本语法,必须要会简单的项目管理,这里推荐查阅《GNU Make》或者《跟我一起学Makefile》,还有shell命令,也要掌握基本常用的, 会编写简单的shell脚本编程。
学习linux设备驱动的朋友,我推荐宋宝华的《linux设备驱动开发详解》,其余的用到什么就去网上找就行了。
嵌入式linux的学习框架
这里我的学习路线是这样的,如果学习顶层应用的朋友,学习完系统可以学习OpenCV或者openwrt之类的这些我在这里不讨论。关于底层的学习框架,我已经画的很明显了,所以基础打好,一点一点来,一定能攻破难关,加油吧!朋友
讨论群聊:群聊链接 群号:667039215