嵌入式概括一下就是写程序,用软件控制硬件。嵌入式的学习应该是自上而下的。
1.语言先行
首先是写代码,写用户的应用程序。每种语言的使用目的是不同的,我们嵌入式选择的语言是C语言。
所以首先要学习C语言的基本语法,C库提供了大量的函数,我们可以调用以实现一些功能。所以还要熟悉C库的常用函数。
C语言一定要学好,它是基础。Linux内核大部分也是用C语言实现的。
2.系统认知
在学习C语言的过程中,可以适当学会Linux系统的基本使用。你可能没有听说过Linux,但你肯定听说过windows,系统有很多共通之处。可以在学习过程中对比理解。
而且Linux系统提供了C语言的编辑器gcc,你可以在系统上写完代码之后,在系统上编译并运行,这样,在学习C语言的阶段你也熟悉了Linux系统的使用。
3.数据结构
当你学完了C语言的基本语法,此时你的c语言水平只是入门阶段。你还要学习一门没有新知识的课程----数据结构。这门课程就是大量的使用指针、数组、结构体、函数。经过这个阶段你才能算是掌握了C语言。
而且后面学习内核的过程中,内核中也是有大量的链表之类的数据结构的。
4.内核
Linux的内核包括以下几个部分:进程管理、内存管理、网络堆栈、虚拟文件系统、设备驱动等。
内核是一个系统最重要的部件。想要真正的认识它需要你一步一步的积累。这个阶段推荐大家先依次学习文件IO、进程线程、网络编程。
你要学习这些功能实现的相关函数,即上图中的系统调用接口。我们要用系统提供的函数,写代码实现对应的功能。可以先不深究这些功能是如何实现的。先学会应用。
5.设备驱动
驱动是硬件和应用程序之间的桥梁,如果一个应用程序要操作硬件,必须要有驱动。
一句话总结:驱动就是根据相应的硬件,写出驱动程序作为调用接口提供给用户,用户使用该接口就可实现控制硬件的目的。
其次,在驱动的学习中,我们会慢慢学习内核。内核的各种模块,内核源码等等。
6.硬件
对于一个嵌入式工程师来说,能够看懂电路图即可。即只需要掌握基本的电路知识,看懂电路图。至于开发板的画图、布线、腐蚀、焊接等步骤,可以不必深入研究。这些技能是属于硬件工程师们的要求。
7.关于其他
首先,一个程序员双语很重要,你学习了面向过程的C语言,推荐大家掌握一门面向对象的语言,可以是c++、java或者python都可。
其次,你要单独实现一个完整的项目,UI界面部分必不可少。做页面可以用qt、可以用网页、也可以用手机端。这可以使你自己做的项目更加完善。
最后,前面我们说到嵌入式硬件是很多种类的,建议大家也学习一下不需要系统的裸机开发STM32.也是属于嵌入式的范畴。