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