第三步:了解数据结构
通过C语言的学习,这个阶段需要对代码进行进一步的提升。
不能仅满足于能写代码实现功能,而是需要继续考虑数据怎样存储能更合理的利用空间,算法怎么写才能更高效的实现该功能。
数据结构在代码优化中起到不可或缺的作用。好的数据结构与算法能够提升运行效率,同样不好的数据结构与算法也会造成空间的浪费。
对于嵌入式开发来说,掌握一些比较基础的数据结构还是非常有必要的。
比如线性结构如链表、栈、队列、树、图等。可以通过这些逻辑结构来表达数据之间的关系,当然也可以通过顺序存储、链式存储等不同的存储方式来将该关系体现在计算机中,而且通过这门课的学习也能大大提高学生代码逻辑的能力。
第四步:应用层编程
应用层主要包括I/O进程、网络编程等内容。如果以后考虑从事嵌入式软件方面的工程师,那么这部分内容是必须要熟练掌握的。
Linux中一切皆文件,大家要掌握对于文件的一些操作,比如文件IO、标准IO的函数调用、以及二者的特点等,以及对于静态库、动态库的创建、特点等。
进程、线程这边重点掌握进程、线程的区别、特点;进程的创建过程;线程函数、进程函数的调用等;掌握线程如何实现互斥、线程如何实现同步等;进程间通信方式是哪7种?怎么使用的?它们各自特点及区别是什么?
掌握好这些内容那IO进程就差不多啦。
网络编程这部分还是重点在网络上,网络协议要了解一些,服务器、客户端的创建(socket套接字通信)也是必须要会的内容,以及抓包工具、分析包、三次握手四次挥手、IO多路复用等等,这部分也是在面试、笔试中必问问题之一。
当然这个阶段完成就可以做一些项目来检验自己啦,比如:ftp聊天室、
电子词典等。
第五步:C++、QT
C++是C语言的继承, 它保留了C语言原有的所有优点 ,并增加了面向对象的机制。
考虑到后续就业阶段C++也可以单独作为一个就业方向,比如游戏行业,几乎所有的3A游戏都是使用C++编写的,可见它的需求量之广。
C++还是偏向理论一些,比如它的三大特性:封装、继承、多态,相对来说比较抽象,所以学完C++可以结合QT进行一些项目的编写,理论结合实践。
有一些显示在终端的命令无法直接给普通用户使用,所以可以用QT将这些命令可视化,以界面的形式呈现出来更加直观,也对于C++所学的内容能进行应用。这部分也可以做一些项目,比如:网络调试助手、计算机、记事本、聊天室等。
了解过的同学可能知道,单片机是一种集成了处理器、内存、输入输出接口等功能的微型
电路板,它是嵌入式开发的基础硬件设备。
学习单片机可以让你了解硬件的基本原理和操作方法,比如如何连接
电源、如何配置引脚、如何编写驱动程序等。
目前应用最多的还是32单片机,大家可以在
开发板上进行实验,可从GPIO点灯实验入手逐步递进掌握定时器、串口、ADC、DAC等。
如先看板子白色丝印,再看原理图,如果有底板有核心板就先看底板原理图、再看核心板原理图,通过看网络编号等找到最终需要配置的引脚,可通过CubeMX等软件进行配置生成对应的KEIL工程,然后编写代码烧录即可。
就业时可能会问是否会
PCB,如果你能够自己设计PCB板,那就更完美了。这部分写代码就需要大家之前的C语言功底啦,所以前面的基础打好还是很有必要的。
第七步:底层开发
这部分内容普遍会觉得有点难,前面学的内容都是基于已经有板子、有操作系统的,那这部分回到操作系统层面上进行编程。
移植操作系统是嵌入式开发必须掌握的技能,需要了解U-BOOT、内核、根文件系统,以及它们的裁剪、编译、烧写过程。在这一块,驱动是比较复杂的部分,需要同时懂得底层硬件和内核。
这部分掌握好了就可以去嵌入式底层岗位方向比如:嵌入式硬件工程师、驱动开发工程师等岗位投简历啦!
当然,这只是一个大致的路线,并不涵盖所有的细节和知识点。如果你想深入学习,还需要仔细研究一些书籍和资料,也可以参考多做一些实践项目。