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