刚工作两年,推荐的学习路线只做一家之言,如果有那里有人觉得不合适,可以根据自身的需求寻找更合适的路线,大学的时候学习过单片机,对于单片机也算是入门级,能做一些毕业设计级别的东西,能够应付大学所需。工作后我接触到的是工业级的产品,说到底有点傻大硬的那种,不是很轻巧,华丽的那种产品。我会将我做的一部分笔记链接放在最下面,希望我推荐的路线对于大学未毕业想学习嵌入式或者想要找嵌入式工作的同学有所帮助。
嵌入式体系框架
我更愿意用数据的流通方式去划分体系框架,我想用这幅图来划分:
我希望大家都对嵌入式的体系有一定的了解,这样能让你分清楚你将来想要从事什么部分的工作,
嵌入式是个很庞大的体系,首先我们从最底层开始说起,对于结构完成的事情,我们选择不纳入这个体系,
因为结构是做产品的外观设计,相当于是做了产品的壳子。往里面一层,也就是嵌入式的一部分—-硬件,硬件工程师要完成的事情是设计PCB版,如果PCB板坏掉的话还需要去维修板卡,感觉硬件是个水磨功夫,肯花时间就能越做越好,入门的话可以抄板子,B站上有很多视频,随便找一个学学软件怎么使用,然后找个单片机开发版的图,去抄下来,然后找嘉立创去打免费的板子。硬件能够自行搭建系统便能入门,可能我说的比较笼统,我也没很深入学习硬件,这方面路线可能并不是很清楚,当然你也要学会焊接,以及示波器的使用等等。
硬件往上有嵌入式驱动开发,驱动开发的这部分,当然搭建bootrom的平台也是驱动这部分做的事情,
相当于有一个底层软件的系统,然后在把设备添加到这个系统之中,能够进行读写操作,
其实相当于把硬件采集到的模拟信号能够转化为数字信号,一般来说只要能够读写器件,便算成功,
在嵌入式系统里面,所有的设备都会转换成文件的形式,如果你要获取数据那就是读,如果要发送数据那就是写
。驱动将硬件的设备添加到系统之中并且能够操作,并将数据接口发给应用部分。
底层还有一部分就是逻辑,是FPGA的部分,这部分挺难的,FPGA的工作便是将数据做一些简单的处理,
发送或者接受信号,比如某个中断来的时侯把某个寄存器里面的值读取出来发送给驱动,驱动再发送给应用,
或者是应用接收到信号之后,发送某些值到驱动,驱动再给FPGA,FPGA处理后再把值填入某个寄存器。
关系类似于:
如果数据一定要经过FPGA的话,那就是硬件—->FPGA—->驱动——>应用。
但是也有可能不经过FPGA,直接就是硬件—->驱动——>应用。
希望这里能理清楚。
这样就来到了应用层,应用层分为下位机应用层、上位机应用,下位机应用就是这块板卡中CPU要跑的应用,
是板卡要实现的功能,这部分是应用的核心部分,板卡的功能都是下位机完成。上位机应用就是在本地电脑中将下位机实现的功能显示出来的应用,安装在电脑本地,我希望大家都会对这个体系有一个笼统的了解。这样方便你分清你的职责。
C语言的入门学习
编程语言的学习:因为单片机、linux、或是Vxworks这几种嵌入式系统都是以C语言或者是C++为开发语言,
所以C语言要学扎实,有可能大多数大学生的C语言的水平是计算机二级的水平,有的人或许还没有考过,
这不重要,只要对C有基本的了解就可以,如果你的时间充足,那么我推荐你看课,在B站上可以去搜索比特鹏哥的
C语言课,我觉得这个课是B站里C语言讲的最好的课,唯一的缺点是课时比较长,但是确实是精华,
学习C++还是要在C语言之后,至于C++那么我推荐B站里黑马程序员的C++课,清晰明了,C++和C不同,
C是面向过程,C++是面向对象,这样说你可能理解不了,那么我说的更加好理解一点就是,
C语言用来写好一个个函数,C++给你封装好了很多库函数,并且C++具有封装(同一个类里面有很多类函数集成到一
块)、继承(子类可以用父类的函数)、多态(同一个函数名可以完成不同的函数功能)的特性。这两门课在B站上都有资
料,可以下载文档到淘宝的打印店里面打印出来,这样学习起来更快,而且方便以后复习。
C语言的进阶学习
学习完这个视频课后你的C语言水平可以到入门的阶段,要多加练习如果不练习会忘得很快。C语言的进阶我推荐
一边在工作中实战一边去看书。在此我推荐C语言三剑客:《C和指针》、《C陷阱与缺陷》、《C专家编程》。
不知道大家大学本科的C语言书是什么,《C和指针》是我最推荐的一本C语言书,这本书内容详尽,例子丰富,
比教科书不知道好多少,作为C语言进阶的第一本书,《C陷阱与缺陷》作为第二本书,里面会提示你平时编码应该
注意的问题和要改正的错误。《C专家编程》是我推荐的第三本。
后期我会将这三本的学习笔记全部做好,供参考,能够为复习省些时间。能看完这三本书,你的C语言的水平
已经足够应对工作所需,以后只需要在工作中多加打磨即可。
单片机的入门学习
对于单片机的学习我可能也只是停留在入门阶段,只是能做毕设的水平,但是对于单片机的理解能够帮助我
们学习嵌入式的东西,单片机我推荐在淘宝上买一套野火的开发板去调试,当应用库里面的所有例程你都能
正常使用的时候,那么你就达到了入门的阶段,而且野火官网对于这些资料和视频都是免费的,推荐直接下载观看。
linux的入门学习
有关linux的学习我推荐将鸟哥的私房菜作为我们入门学习的第一本书,首先安装好虚拟机,安装的教程网上
都有,B站里都能找到资源,书里面也有安装步骤。安装好主流的linux虚拟机之后,便能开始虚拟机的摸索,
将鸟哥的私房菜里的代码该写的都写一遍,之后便将这本书作为字典使用,随查随用。这本书作为linux的基础书,
让你学会linux系统的基本操作。
在此基础上,如果你想要学习嵌入式驱动开发,我推荐你的书是《Linux设备驱动开发详解》——宋宝华
,最主要的是你要有一块板子供你去调试,这部分必须边调边学,这样才能理解学习的更多。
如果你走的路线是嵌入式下位机应用开发,那么我推荐你看《嵌入式应用程序设计综合教程》华清远见嵌入式学院 人
民邮电出版社出版的一本书。这本书里面会告诉你linux系统应用如何开发,Linux应用程序怎么写?这本书简单的例子,让你对嵌入式应用开发有一个基本的了解。
至于嵌入式的进阶,我推荐的学习方法是按需学习,需要用到什么的时候就去学习这方面的资料,B站上有很多这
方面的视频可供学习。
VxWorks的入门学习
当你学习完linux、之后再来看Vxworks你会轻松一点,至少你是对于系统有一个基本的认识,系统的内容大
致都是相同的,Vxworks的入门我推荐你去看我上传的PPT与文档,这部分我之前查了很多资料和课件,整
理出来的两套PPT与一篇系统启动的文档。
Vxworks进阶我建议你学习《Vxworks内核、设备驱动和BSP开发详解》这本书,学习方法依旧是按需学习,
这样不仅学的快吗,而且理解的更加深刻。
上位机的入门学习
对于上位机,有很多种编程语言,我所接触的是用C++编程,使用Qt编程软件进行开发,B站上有6天学
会Qt这个系列的视频我觉得6天略显夸张,但是作为入门视频是蛮好的,如果需要更加深入,推荐看的书
有《QtC++开发指南》。
————————————————
版权声明:本文为CSDN博主「嵌入式小师兄」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_44531547/article/details/128613696