牛客高级系列专栏:





简介

本人2020年本硕毕业于广东工业大学:嵌入式许乔丹,牛客高级专栏作者,牛客大学讲师,本科阶段搞了4年单片机、曾参加全国大学生恩智浦汽车竞赛,发表4个硬件专利。研究生阶段找了嵌入式linux的实习,毕业后拿到珠海格力,云从科技,CVTE,小米,美的,华为的嵌入式offer,签约CVTE嵌入式岗位。

在CVTE先后做过嵌入式Linux开发和安卓系统开发,参与过TV板卡、显示屏板卡、智能家居板卡、希沃网课学习机的开发。欢迎交流嵌入式或者安卓哈!

正文开始⬇️

第六章 单片机常见面试题

6.1 CPU  内存 虚拟内存 磁盘/硬盘 的关系

6.2 CPU内部结构

6.3 ARM结构处理器简析

6.4波特率是什么,为什么双方波特率要相同,高低波特率有什么区别;

6.5arm和dsp有什么区别

6.6 ROM RAM的概念浅析

6.7 IO口工作方式:上拉输入 下拉输入 推挽输出 开漏输出

6.8扇区 块 页 簇的概念

6.9简述处理器在读内存的过程中,CPU核、cache、MMU如何协同工作?画出CPU核、cache、MMU、内存之间的关系示意图加以说明

6.10请说明总线接口USRT、I2C、USB的异同点(串/并、速度、全/半双工、总线拓扑等)

6.11什么是异步串口和同步串口

6.12 I2C时序图

6.9 简述处理器在读内存的过程中,CPU核、cache、MMU如何协同工作?画出CPU核、cache、MMU、内存之间的关系示意图加以说明。(本人面试大疆的题目)

解答:忘了是哪位前辈总结的,没有参考链接。

现代操作系统普遍采用虚拟内存管理(Virtual Memory Management) 机制,这需要MMU(Memory Management Unit,内存管理单元) 的支持。有些嵌入式处理器没有MMU,则不能运行依赖于虚拟内存管理的操作系统。

也就是说:操作系统可以分成两类,用MMU的、不用MMU的。用MMU的是:Windows、MacOS、Linux、Android;不用MMU的是:FreeRTOS、VxWorks、UCOS……与此相对应的:CPU也可以分成两类,带MMU的、不带MMU的。带MMU的是:Cortex-A系列、ARM9、ARM11系列;不带MMU的是:Cortex-M系列……(STM32是M系列,没有MMU,不能运行Linux,只能运行一些UCOS、FreeRTOS等等)。

首先我来说一下MMU的作用,MMU就是负责虚拟地址(virtual address)转化成物理地址(physical address)。

下面我来说一下ARM CPU上的地址转换过程涉及三个概念:虚拟地址(VA)(CPU内核对外发出VA),变换后的虚拟地址(MVA)(VA被转换为MVA供cache和MMU使用,在此将MVA转换为PA),物理地址(PA)(最后使用PA读写实际设备)。

•CPU看到的用到的只是VA,CPU不管VA最终是怎样到PA的;

•而cache、MMU也是看不到VA的,它们使用的是MVA(VA到MVA的转换是由硬件自动完成的);

•实际