发布时间:2023-11-06 13:02:58
来源:微商品牌网 作者:佚名
简介 什么是嵌入式 什么是交叉编译 嵌入式入门和改进 1. 什么是嵌入式
嵌入式可以说是目前最广泛、最热门的职业之一。 那么,什么是嵌入呢?
这个问题我实在无法用三言两语解释清楚。
嵌入,在英文中的意思是“嵌入的、植入的、包含的”。
因为首先,嵌入式有很多组合术语,比如嵌入式系统、嵌入式软件、嵌入式Linux、嵌入式、嵌入式Web等等。
通常嵌入式的定义实际上就是“嵌入式系统”的定义。
网上对于嵌入式系统的中文定义确实很难理解。 更官方的中文定义是:
嵌入式系统是一种以应用为中心、以计算机技术为基础、软硬件可定制以满足应用系统对功能、可靠性、成本、体积、功耗等严格要求的特殊计算机系统。
我个人的感受:如果你是一个从来没有接触过嵌入式的朋友,看完上面的定义,很可能就像没看过一样,还是一头雾水。 我刚开始学习嵌入式的时候看到这个解释也有同样的感觉。
当然,这个定义是正确的,但有点学术化,不够生动,也不够“接地气”。
那么如何给嵌入式系统一个接地气的定义呢?
我可以先列出目前使用嵌入式系统的IT领域:
我想不用再列举了,我已经感受到了:是的,嵌入式正在渗透到我们生活的方方面面,并且会被越来越多地使用。
但比如iOS的纯app开发一般不能认为是嵌入式,而只能认为是软件开发。
未来,也许我们可以拥有一款轻便的可穿戴设备,吃穿住行无所不包。 未来你甚至可以穿着轻便的“飞行服”,去任何你想去的地方。
虽然嵌入式编程的入门门槛比较高,但是如果你能啃穿嵌入式这个“硬柿子”,学到很多知识,那么你也许能更轻松地掌握一些其他的编程领域。 就像如果你精通C语言和C++,那么其他编程语言一般都能轻松驾驭。
我觉得英文原文的定义应该更容易理解,所以我从维基百科翻译了嵌入式系统的定义如下(抱歉,如果翻译有误,请指正):
An 是 a 与 aa 或,通常与 real-time 一起。 它是经常和零件的一部分。 许多今天仍在使用。 - 其中八个截至 。
嵌入式系统首先是具有特定功能的计算机系统,包含在较大的机械或电子系统中,通常具有实时计算的限制。 嵌入式系统作为组件嵌入到完整的设备中(注意:这也是“嵌入式”名称的由来)。 该设备通常具有硬件和机械部件。 在当今时代,嵌入式系统控制着许多常见设备。 98% 的微处理器是作为嵌入式系统的组件生产的。
具有低功耗、小尺寸和低单位成本的特点。 这是以 为代价的,这使他们更加亲近。
嵌入式系统不同于普通系统,主要体现在以下特点:能耗低、体积小、计算范围有限、单位成本低。 这些功能是以有限的处理资源为代价的,使得嵌入式系统更难以编程和交互。
通常基于(即带有 或 的 CPU),但是(使用 和 的芯片)也更多- 。 在这种情况下,使用的 (s) 类型可能是从 到 类中的类型,甚至是手头的类型。 一类是(DSP)。
现代嵌入式系统通常基于微控制器(即具有集成存储器或外围接口的CPU(中央处理单元)),但普通微处理器(使用外部芯片作为存储器和外围接口电路)也很常见,特别是在更复杂的系统中。 在任何一种情况下,所使用的处理器的范围可以从通用到专门用于某些计算类别的处理器,甚至是为当前应用程序定制的类型。 数字信号处理器(DSP)是专用处理器的通用标准类别。
由于它与任务有关,因此它可以与任务的大小和成本有关。
由于嵌入式系统专门用于特定任务,因此设计工程师可以对其进行优化,以减小产品尺寸和成本,并提高可靠性和性能。
范围从诸如、MP3,到大的诸如、、、、、等。 从低(带芯片)到非常高(带单位)和大 .
如今,嵌入式系统存在于许多设备中,从数字手表和 MP3 播放器到交通灯、工业控制器、混合动力汽车和航空航天设备。 嵌入式系统的复杂性也有很大差异。 一个简单的嵌入式系统可能只有一颗微控制器芯片; 一个复杂的系统可能有许多计算单元、外围设备和网络,所有这些都被“焊接”在一块大“基板”上。
2.什么是交叉编译?
嵌入式编程中还有一个交叉编译的概念。
那么,什么是交叉编译呢?
交叉编译,英文是cross-。 cross 的意思是“交叉”,是动词的现在分词(意思是“编译”)。
简单来说,就是“在一个平台上在另一个平台上生成可执行代码”。
在普通的软件开发过程中,如果是编译型编程语言,比如C语言、C++、Java等,想要运行自己编写的程序,就需要使用编译器将代码编译成可执行程序(当然,中间还有预处理、组装、链接等几个步骤,这里不再赘述)。
然而嵌入式系统的计算能力有限、内存有限、存储空间有限,无法完成对资源和速度要求较高的编译过程。
比如嵌入式开发,你不能直接让它在你的手机上编译你自己的系统或者软件(我做不到)。
因此,我们首先会在普通计算机(比手机计算能力更强,内存更大,存储空间更大)中编译程序(它需要与我们编译普通软件不同的编译器,称为“交叉编译器”)。编译器/软件”)。 ”,比较常见的包括arm-linux-gcc家族)编译成适合手机的特定可执行文件(通常打包成镜像文件),然后通过专门的工具“烧录”到手机中。
相信经过这些讲解,大家应该对嵌入式有了初步的了解。
但光看这些解释是无法理解的,还必须学习。 在实践中,您将对什么是嵌入式编程有更深入的了解。
3. 嵌入式入门和改进
在这个匆忙的现代时代,如果你不利用互联网上众多优秀资源(其中大部分是免费的)来进行自我教育,你就会不知所措。
如果花很多钱去参加培训班,甚至可能会赔钱(如果没有自控能力,去培训机构基本上就是“浪费”)。
对于嵌入式软件来说,你不一定需要学习很多硬件知识(如果学的话,当然是越多越好)。 你只需要知道如何使用一些编程工具、编译、调试工具(如JTAG)即可。 到时候你需要学习如何使用它们。 没有固定的开发工具。 通常,您不必使用 IDE。 您可以使用文本编辑器(例如 Vim、Emacs、Nano、VS Code 等)编写代码。 编译一般使用GCC的一个变体。
嵌入式人一般需要学习C语言(可以看我的C语言探索之旅系列教程。以及《C语言深入剖析》和《C程序设计语言》两本书。也可以继续阅读《C语言专家编程》)》等)。C++也是常用的语言之一。
Linux是必须要学习的。 由于交叉编译经常使用Linux系统,所以即使在Linux下也有使用。
大家可以在慕课网学习我的实践课程《Linux核心技能与应用》和专栏《Linux命令行与Shell脚本编程百科全书》。 还可以看看鸟哥来自台湾的Linux私房菜。 您可以访问中文Linux公社。 阅读《Unix环境下的高级编程》一书。 朱哥的嵌入式Linux公馆还可以。 我还没读完。 感觉有点乱(当然作者比我好多了),不像鸟哥写的那么流畅清晰。
最好花点时间学习汇编,这对于理解计算机原理,特别是内存、指针、二进制、十六进制很有帮助。 不需要深入研究。 推荐王爽老师的书《汇编语言》,是一本优秀的入门教材。
目前主流的嵌入式处理器架构是ARM(以前是ARM7、ARM9、ARM11,现在都是系列)。 手机、平板电脑、大部分开发板都是ARM主导的。 所以你需要学习ARM架构并有一个了解。 一开始不需要太深入ARM,要看未来的情况。 ARM的集成开发环境包括ADS(ARM Suite),它是ARM处理器的主要开发工具。
可以买块便宜的开发板开始学习(我觉得唯一自己学嵌入式比较贵的,几十几百块就不错了)。 树莓派( ; )等都可以。 也可以购买一些国内厂家的开发板,只是不要买太差的。
如果您购买了开发板,可以去该开发板对应的论坛。 比如我学生时买的天前(现在已经升级了,不知道是什么)。 天干的论坛有很多好资料。 嵌入式Linux论坛。 华清愿景论坛。 电子工程世界论坛。 当然。 是的,中国最大的IT社区CSDN的论坛和博客也是很好的学习场所。 51CTO也不错,你也可以。 实验楼有良好的在线实验环境,使用的实验环境大部分都是这个Linux发行版。
学好英语对编程很有帮助,所以不要浪费英语。
还有,数学也要过得去,毕竟底层有很多位移位、AND或NOT运算、十六进制、二进制、十进制转换等等。 你可以参考我的文章:为什么对于程序员来说英语比数学更重要? 如何学习。
有很多书要读。 最主要的是选择好书并高效地阅读。
《深入理解计算机系统》很好,可以算入门课程。 还有很多嵌入式书籍。 慢慢来,先打好基础。 嵌入式领域太广阔了嵌入式web培训,要学的东西太多了。 如今,科技日新月异。 如果你打下了良好的基础,你就可以很快地学习任何新知识。 我强烈推荐一本书《'S: of an 》。 遵循作者的逐步方法来编写自己的操作系统是非常令人兴奋的。
如果以后想学习更高难度的嵌入式实时系统(例如ecos、ucos等、驱动开发等)嵌入式web培训,需要有扎实的C语言(和汇编)基础,多读点书深入的书籍。 。 但现在我们先从嵌入式开始。 根据您对这些较困难领域的兴趣,您不必学习它们。
本站对作者上传的所有内容将尽可能审核来源及出处,但对内容不作任何保证或承诺。请读者仅作参考并自行核实其真实性及合法性。如您发现图文视频内容来源标注有误或侵犯了您的权益请告知,本站将及时予以修改或删除。