嵌入式开发是指什么?如何入门?
扫描二维码
随时随地手机看文章
本文中,小编将对嵌入式开发予以介绍,如果你想对它的详细情况有所认识,或者想要增进对它的了解程度,不妨请看以下内容哦。
一、嵌入式开发
嵌入式开发是指利用分立元件或集成器件进行电路设计、结构设计,再进行软件编程(通常是高级语言),实验,经过多轮修改设计、制作,最终完成整个系统的开发。这种嵌入式开发,适用于未来产品比较单一,产量比较大,产品开发周期比较长,成本控制比较严格的系统。
嵌入式技术不是单纯的软件技术,也不是单纯的硬件技术,是一门如何在一个特定的硬件环境上开发与构建特定的可编程软件系统的综合技术。嵌入式技术是在嵌入式系统的发展中应运而生的,它是依附于嵌入式系统,并推动嵌入式系统不断向前发展的核心动力。嵌入式是一种专用的计算机系统,作为装置或设备的一部分。通常,嵌入式系统是一个控制程序存储在ROM中的嵌入式处理器控制板。事实上,所有带有数字接口的设备,如手表、微波炉、录像机、汽车等,都使用嵌入式系统,有些嵌入式系统还包含操作系统,但大多数嵌入式系统都是是由单个程序实现整个控制逻辑。嵌入式技术近年来得到了飞速的发展,但是嵌入式产业涉及的领域非常广泛,彼此之间的特点也相当明显。例如,很多行业:手机、PDA、车载导航、工控、军工、多媒体终端、网关、数字电视等。
标准嵌入式开发架构有两大体系:CISC(Complex Instruction Set Computer,复杂指令集计算机)和RISC(Reduced Instruction Set Computer,精简指令集计算机)。
早期的CPU全部是CISC架构,它的设计目的主要用最少的机器语言指令来完成所需的计算任务。这种架构会增加CPU结构的复杂性和对CPU工艺的要求,但对于编译器的开发十分有利。只有Intel及其兼容CPU还在使用CISC架构。RISC架构要求软件来指定各个操作步骤,可以降低CPU的复杂性以及允许在同样的工艺水平下生产功能更强大的CPU,但对于编译器的设计有更高的要求。占主要地位的是RISC处理器。
RISC体系的阵营非常广泛,从ARM、MIPS到PowerPC、ARC、Tensilica等,都是属于RISC处理器范畴。不过这些处理器虽然同样是属于RISC体系,但是在指令设计与处理单元的结构上都各有不同,因此彼此完全不能兼容,在特定平台上所开发的软件无法直接为另一硬件平台所用,而必须重新经过编译。CISC和RISC正在逐步走向融合,Pentium Pro、Nx586、K5就是一个明显的例子,它们的内核都是基于RISC体系结构的,它们接受CISC指令后将其分类成RISC指令以便在同一时间内能够执行多余指令。
二、嵌入式开发如何入门
嵌入式系统专业是综合了计算机硬件技术,计算机软件技术以及电子电路技术的一门综合学科,所涉及的内涵和知识非常广泛。
1. C语言基础
在开始学习嵌入式之前,首先要打好基础,其中最重要的是C语言基础,要至少达到能单独编写调试一个500行的小项目(大概是一个本地员工管理系统的代码量),能够了解C语言的基本语法规则,基本语句的使用,理解指针概念并能灵活使用各种指针。在学习C语言的过程中,指针的概念比较难理解,但是如果对计算机组成原理有了解的话,地址和 指针,源码和可执行程序,软件通过寄存器控制硬件这些概念都会变得很清晰。
2. MCU和CPU
所有编程学习都是在单一的环境下进行的。即开发环境和运行环境都是一样的都在Ubuntu下进行。难道嵌入式开发就是如此吗,说好的软硬件可裁剪呢?别急,紧接着我们就需要加入MCU和CPU的学习,要学习ARM是什么,不同系列的MCU开发方式不同,ARM Cortex™-A 系列应用型处理器,可向托管丰富OS平台和用户应用程序的设备提供全方位的解决方案,从超低成本手机、智能手机、移动计算平台、数字电视和机顶盒到企业网络、打印机和服务器解决方案,是作为学习嵌入式的合适的素材。现在嵌入式的学习资源丰富,选择合适的Cortex™-A 系列的开发板后,根据裸板开发、系统移植、驱动开发这样的顺序学习。裸板开发的学习主要是感受一下如何通过编程实现控制硬件。系统移植中我们会发现搭载Linux操作系统的板子功力大增,交叉编译工具链的出现使得我们对架构两个字有了更深入的认识。刚刚还在怀念在Ubuntu下编写C代码运指如飞的感觉,现在可以继续编写Linux风格的C代码了。
3. 驱动开发
前面裸板开发和驱动移植的学习目的是面对接下来的驱动大魔头,学习驱动开发我们需要有一个空杯心态,需要有主动理解Linux内核设计理念的意识(但是不要钻牛角尖),时刻把握Linux下一切皆文件的宗旨和分层的思想。当我们在这一阶段点亮开发板上的一盏明灯,恭喜你,一只脚踏进嵌入式开发的大门了。
4. C++和Qt
体会了最基本的驱动开发后,嵌入式学习还未结束,但是之后的学习我们有了一些选择的主动权,当我们看到一些有意思的嵌入式小项目,我们可以理解它的实现思路。而最好的学习方法是自己实践完成一些小项目,你也许不满足之前所学,为什么不能把黑乎乎的命令行终端优化成精美的液晶屏显示,C++和Qt的学习就在所难免了。不过还好,有C语言的加持,C++的学习变得比较顺利,最大的困难应该在于面向过程到面向对象思维的转变。
最后,小编诚心感谢大家的阅读。你们的每一次阅读,对小编来说都是莫大的鼓励和鼓舞。希望大家对嵌入式开发已经具备了初步的认识,最后的最后,祝大家有个精彩的一天。