嵌入式基础知识-1
C++软件与嵌入式软件面经解析大全(蒋豆芽的秋招打怪之旅)
本章讲解知识点
- 1.1 嵌入式计算机系统的发展
- 1.2 嵌入式计算机系统的定义与组成
- 1.3 嵌入式操作系统以及用户应用软件
- 1.4 ARM简介
- 1.5 ARM体系结构
- 1.6 其他典型微控制器
- 1.7 BootLoader
- 1.8 典型的BootLoader——U-Boot
- 1.9 驱动程序与设备
- 1.10 总线
- 1.11 串行与并行、同步与异步、半双工与全双工
- 1.12 内部总线
- 1.13 系统总线
- 1.14 外部总线
受众:本教程适合于C/C++已经入门的学生或人士,有一定的编程基础。
本章节仅适合于嵌入式软件求职的学生或人士。
故事背景
蒋 豆 芽:小名豆芽,芳龄十八,蜀中人氏。卑微小硕一枚,科研领域苟延残喘,研究的是如何炒好一盘豆芽。与大多数人一样,学习道路永无止境,间歇性踌躇满志,持续性混吃等死。会点编程,对了,是面对对象的那种。不知不觉研二到找工作的时候了,同时还在忙论文,豆芽都秃了,不过豆芽也没头发啊。
隔壁老李:大名老李,蒋豆芽的好朋友,技术高手,代码女神。给了蒋豆芽不少的人生指导意见。
导 师:蒋豆芽的老板,研究的课题是每天对豆芽嘘寒问暖。
故事引入
豆芽前几天投递了汇底科技的嵌入式开发岗位,笔试全是选择题啊,都是电路基础,so easy!豆芽本科可是机械电子工程专业的,这点可难不倒豆芽!
第二天豆芽也收到了性格测评,跟其他公司的测评很不一样,更加专业,但是豆芽也轻轻松松通过,终于来到了面试环节。
汇底科技其实也是相当不错的公司,全球独角兽。豆芽好好准备了几天,有了之前老李的培训,这应该不难了。升职加薪迎娶白富美,哈啊哈哈哈。
汇底科技面试中。。。
面 试 官:你好,蒋豆芽,请自我介绍一下。
蒋 豆 芽:阿巴阿巴阿巴阿巴阿巴。
面 试 官:豆芽,请你说说指令乱序执行是怎么回事?
蒋 豆 芽:阿巴阿巴阿巴阿巴阿巴。
面 试 官:虽然没说清楚,但是大概意思是这样。那你知道什么是MMU吗?
蒋 豆 芽:阿巴阿巴阿巴阿巴阿巴。
面 试 官:(不置可否)说一个你熟悉的嵌入式项目
蒋 豆 芽:阿巴阿巴阿巴阿巴阿巴。
面 试 官:这位同学,你怎么一直对口型不说话啊,我们不是演电影,后期没法加台词的。今天的面试就到这里吧,后面有通知会联系你的。
经过惨烈吊打,豆芽当然不会收到任何通知了。
蒋 豆 芽:老李,我又哭了呀,今天面试问的全是嵌入式方面的知识,我不会就只能阿巴阿巴了。
隔壁老李:(叹气)毕竟我们没有介绍这方面的知识,也很正常啦,不过你怎么投嵌入式了。
蒋 豆 芽:我爸妈说这是我老本行,尽量走老本行稳定。
隔壁老李:我明白了,那我们废话不多说,我们进入嵌入式的学习。
隔壁老李:老规矩,我们还是要讲讲嵌入式的概览,了解嵌入式的由来,我们才能更加深刻地理解嵌入式的定义、特点以及与通用计算机的区别等。
1.1 嵌入式计算机系统的发展
隔壁老李:1、现代计算机技术的两大分支。电子数字计算机诞生于1946年,计算机一直朝着通用的方向前进。直到20世纪70年代,微处理器的出现,计算机才出现了历史性的变化。将微型机嵌入到一个对象体系中,实现对对象体系的智能化控制。为了区别于原有的通用计算机系统,把嵌入到对象体系中,实现对象体系智能化控制的计算机,称作嵌入式计算机系统。
嵌入式系统与通用计算机系统的技术发展方向完全不同,必须独立地发展通用计算机系统与嵌入式计算机系统,这就形成了现代计算机技术发展的两大分支。两者区别如表:
类型 | 技术要求 | 技术发展方向 |
---|---|---|
通用计算机系统 | 高速、海量的数值计算 | 更快的总线速度,更大的存储容量 |
嵌入式计算机系统 | 对象的智能化控制能力 | 与对象系统密切相关的嵌入性能、控制能力与控制的可靠性 |
蒋 豆 芽:有点意思,通用计算机系统大而全发展,而嵌入式计算机系统小而精发展。
隔壁老李:确实是这样的。两者发展方向不同。2、始于微型机时代的嵌入式应用。嵌入式计算机的真正发展是在微处理器问世之后。1971年11月, Intel公司成功地把算术运算器和控制器电路集成在一起,推出了第一款微处理器 Intel 4004,其后各厂家陆续推出了许多8位、16位的微处理器。以这些微处理器作为核心所构成的系统,广泛地应用于仪器仪表、医疗设备、机器人、家用电器等领域。
从灵活兼容考虑,出现了系列化、模块化的单板机。流行的单板机有Intel公司的iSBC系列、 Zilog公司的MCB等。
随着微电子工艺水平的提高,集成电路制造商开始把嵌入式应用中所需要的微处理器、I/O接口、A/D转换、D/A转换、串行接口以及RAM(random access memory)、ROM(Read-Only Memory)等部件统统集成到一个VLSI中,从而制造出面向I/O设计的微控制器,即单片机,成为嵌入式计算机系统异军突起的一支新秀。其后发展的DSP(Digital Signal Processor)产品则进一步提升了嵌入式计算机系统的技术水平。
蒋 豆 芽:原来是这样,所以我以前大学玩的51单片机、stm32都可以称为微型嵌入式计算机系统。
隔壁老李:没错。3、后嵌入时代。随着嵌入式计算机系统的进一步发展,开始向微处理中嵌入操作系统,使其应用更加广泛。而随着工业4.0的到来,嵌入式计算机系统向着物联方向前进,即每一个嵌入式系统搭载Internet,形成一个物物相联的网络——物联网。
蒋 豆 芽:有意思啊!物物相联,构成智慧城市、智慧生活。我突然很憧憬20年后了。哈哈。
隔壁老李:(笑容邪魅)但是你现在还没拿到正式offer啊。
蒋 豆 芽:我。。。嵌入式突然不香了。
1.2 嵌入式计算机系统的定义与组成
隔壁老李:哈哈,没事,好好学,一定会找到满意的offer的。因此,我们这里给出嵌入式系统的定义。一个广泛的定义是:嵌入式系统是指以应用为中心,以计算机技术为基础,软件硬件可剪裁,适应应用系统对功能、成本、体积、功耗严格要求的专用计算机系统。
隔壁老李:嵌入式系统主要由嵌入式微处理器、外围硬件设备、嵌入式操作系统以及用户应用软件等部分组成,其体系结构如下图所示。
从该图中可以清楚地看到嵌入式系统体系结构上下层之间的关系。
其中,硬件平台包括嵌入式处理器和外围设备(包含驱动),它们位于嵌入式系统结构中的底层;
而Linux中的每一个外围物理设备——键盘、显示器、鼠标、磁盘、串口、并口、网络适配器等都有一个专用于控制该设备的设备驱动程序。设备与驱动,我们在后面章节还会详细讲。
嵌入式操作系统与通用操作系统的功能类似,为用户屏蔽硬件底层的具体细节,提供了一个透明的操作空间;
而应用软件则是位于嵌入式操作系统之上的,当然,用户也可以直接在嵌入式操作系统之上进行开发。
1.3 嵌入式处理器与外围设备
主要来介绍一下嵌入式系统的硬件架构,也就是嵌入式处理器以及外围设备的相关知识。
嵌入式处理器
嵌入式处理器是各嵌入式系统的核心部件,其功耗、体积、成本、可靠性、速度、处理能力、电磁兼容性等方面均受到应用要求的制约,嵌入式处理器包含以下部分:
(1)处理器内核;
(2)地址总线;
(3)数据总线;
(4)控制总线;
(5)处理器本身的辅助支持电路,如时钟、复位电路等;
(6)片上I/O接口电路。
嵌入式处理器可以分为3类:嵌入式微处理器(Micro Processing Unit, MPU)、嵌入式微控制器(Micro Control Unit, MCU:又叫单片机)和嵌入式DSP(Digital Signal Processor)。
(1)嵌入式微处理器就是和通用计算机的微处理器对应的CPU。在应用中,一般是将微处理器装配在专门设计的电路板上,母板上只保留与嵌入式相关的功能即可,这样可以满足嵌入式系统体积小、功耗低的要求。
(2)嵌入式微控制器又称单片机,它将CPU、存储器(少量的RAM、ROM,或两者都有)和其他外设封装在同一片集成电路里。
(3)嵌入式DSP专门用来对离散时间信号进行极快的处理计算,提高编译效率和执行速度。DSP正在大量进入数字滤波、FFT、谱分析、图像处理等领域。
嵌入式微处理器与通用微处理器既有相似之处,也有不少的区别,其比较如下:
相似点有以下两项。
(1)对外的接口:各类总线及辅助电路接口。
(2)处理功能:相似的指令功能分类。
不同点有以下几项。
(1)指令系统中指令的个数:嵌入式微处理器的指令个数与通用处理器有很大的区别,嵌入式微处理器的指令系统往往由于成本等原因而有所精简,比如有些嵌入式处理器无浮点功能等。
(2)指令的形式:嵌入式微处理器一般都使用精简指令集(RISC), 而对于通用处理器,复杂指令集(CISC)和精简指令集(RISC)都有使用。
(3)处理器的结构设计:嵌入式微处理器与通用处理器在结构设计上有较大的区别,如流水线结构的设计。
(4)处理器的工艺和应用指标:由于嵌入式系统通常应用在特殊的场合,因此,对处理器的工艺及应用指标(如工作的温度条件等)也有不同的要求。
蒋 豆 芽:这里提到了精简指令集合复杂指令集,我来总结一下!
常见的CPU指令集分为CISC和RISC两种。
- CISC(Complex Instruction Set Computer)是“复杂指令集”。自PC机诞生以来,处理器都采用CISC指令集方式。这种指令系统的指令不等长,指令的数目非常多,编程和设计处理器时都较为麻烦。但是基于CISC指令架构系统设计的软件已经非常普遍了,所以包括Intel、AMD在内的众多厂商至今使用的仍为CISC。
- RISC(Reduced Instruction Set Computing)是“精简指令集”。研究人员在对CISC指令集进行测试时发现,各种指令的使用频度相当悬殊,其中常使用的是一些比较简单的指令,它们仅占指令总数的20%,但在程序中出现的频度却占80%。RISC正是基于这种思想提出的。采用RISC指令集的微处理器处理能力强,并且采用超标量和超流水线结构,大大增强了并行处理能力。
蒋 豆 芽:我们之前讲操作系统讲过CPU流水线设计,我来总结一下CPU涉及到的面试知识点。
CPU是计算机的“大脑”,它从内存中取出指令并执行。在每个CPU基本周期中,首先从内存中取出指令,解码以确定其类型和操作数,接着执行,然后再取指令、解码并执行。重复这一个过程,直到程序被执行完成。
CPU的内部架构和工作原理:
CPU从逻辑上可以划分成3个部分,分别是控制单元、运算单元和存储单元,这三部分由CPU内部总线连接起来。
控制单元(CU, Control Unit):控制单元是整个CPU的指挥控制中心,由程序计数器PC (Program Counter)、 指令寄存器IR (Instruction Register)组成。程序计数器包含当前正在执行的指令的地址,在每个指令被获取之后,程序计数器指向顺序中的下一个指令。指令寄存器用于暂存当前正在执行的指令。
运算单元(ALU, Arithmetic Logic Unit):是运算器的核心。可以执行算术运算 (包括加减乘数等基本运算及其附加运算)和逻辑运算 (包括移位、逻辑测试或两个值比较)。
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
<p> - 本专刊适合于C/C++已经入门的学生或人士,有一定的编程基础。 - 本专刊适合于互联网C++软件开发、嵌入式软件求职的学生或人士。 - 本专刊囊括了C语言、C++、操作系统、计算机网络、嵌入式、算法与数据结构等一系列知识点的讲解,并且最后总结出了高频面试考点(附有答案)共近400道,知识点讲解全面。不仅如此,教程还讲解了简历制作、笔试面试准备、面试技巧等内容。 </p> <p> <br /> </p>