面经——嵌入式芯片底层
单片机(以32为例)的中断系统
NVIC控制器控制中断。
在stm32中,中断的优先级由四位控制字表示,分别是先占优先级和相应优先级。首先需要指定几位表示抢占,几位表示响应。
两个中断同时发生,响应优先级高的先执行,抢占优先级相同时,响应优先级高的先发生。抢占优先级高的可以打断低的,但响应优先级高的不能打断低的。数字越小越高。
配置方式:(1)配置io口,包括时钟,电气属性。(2)将io与中断线相关联。(3)配置NVIC(4)配置外部中断,如触发方式(5)编写中断服务函数
Co’rte’x—M3有0~255个异常,编号为0和7 ~ 10这5个是未用的异常编号,另有10个系统异常,240个外部中断,简称IRQ。外部中断的编号为IRQ#0 ~ IRQ#239。
NonMaskable Interrupt,不可屏蔽中断,通过NVIC连接一条NMI输入信号线,用于紧急事件的触发,其优先级在最高优先级(-3)之后,系统启动后的任何时间都可触发。
异常向量表是一个4字节数组,数组下标为异常编号,数组值为对应的异常服务程序的入口地址。当一个异常发生后,硬件会根据异常编号计算出在向量表中的偏移量,然后跳转执行。向量表的地址存在于向量表偏移量寄存器(VTOR)。
当发生复位异常后,CM3首先从地址0x0000 0000处取出MSP(主栈指针)的初始值; 从地址0x0000 0004处取出PC的初始值。而后程序从PC处开始执行,一通操作以后,进入main{}。
STM32特权级或非特权级模式
https://bbs.elecfans.com/jishu_544024_1_1.html
嵌入式linux(以i.MAX6ULL为例)启动流程
https://blog.csdn.net/weiganyi/article/details/11561859
哈佛结构和冯·诺依曼结构
哈佛结构是指令与数据分开,可以分别以不同宽度取指令与数据,具有较高的执行效率,比如PIC单片机。但是总线占用资源太多。
冯诺依曼结构,将指令与数据合并存放。节省一套数据地址总线。
外部走线成本高于内部走线,所以哈佛结构的思路被用于芯片内部,而冯诺依曼结构存在与芯片外部。
cach分为icache和dcache,分别用于缓存数据与指令。
串口通信
U(S)ART,全称Universal (Synchronous)Asynchronous Receiver/Transmitter,通用(同)异步收发传输器。本质是将二进制一位一位发出。
硬件上,TX和RX互联,一定要共地,波特率等各种参数一致。
数据格式如下:
- 空闲位:没有信号时时高电平
- 起始位,1位:低
- 数据位5~9位:一般都是8位的数据。由低到高发送。
- 奇偶校验位:(1)无校验(2)奇校验(odd parity)如果数据位中’1’的数目是偶数,则校验位为’1’,如果’1’的数目是奇数,校验位为’0’。(3)偶校验(even parity)原理同上,数据相反。(4)mark parity:校验位始终为1(s)pace parity:校验位始终为0
- 停止位:1位,1.5位,2位的高电平,表示数据结束。
IIC
https://blog.csdn.net/renzemingcsdn/article/details/119270538
SPI
https://blog.csdn.net/renzemingcsdn/article/details/119294516
CAN总线
传输速度最高到1Mbps,距离最远到10km,差分信号,无损位仲裁机制,多主结构。
- 硬件:每个单元上都要有一个CAN总线收发芯片,负责逻辑电平和信号电平之间的转换。
CAN总线采用不归零码位填充技术,也就是说CAN总线上的信号有两种不同的信号状态,CAN_H-CAN_L < 0.5V 时候为隐性的,逻辑信号表现为"逻辑1"- 高电平。CAN_H-CAN_L > 0.9V 时候为显性的,逻辑信号表现为"逻辑0"- 低电平。 - 信号传输
- 数据帧
CAN总线以帧形式传输,通信帧分成五种,分别为数据帧(数据帧根据仲裁段长度不同分为标准帧和扩展帧)、远程帧、错误帧、过载帧和帧间隔。
帧起始:由一个显性位(低电平)组成,发送节点发送帧起始,其他节点同步于帧起始;
帧结束:由7个隐形位(高电平)组成。
仲裁段:只要总线空闲,总线上任何节点都可以发送报文,如果有两个或两个以上的节点同时开始传送报文,那么就需要仲裁。CAN总线控制器在发送数据的同时监控总线电平,如果电平不同,则停止发送并做其他处理。如果该位位于仲裁段,则退出总线竞争;如果位于其他段,则产生错误事件。ID只表示优先级,不代表地址。
120欧姆电阻具有“或运算”功能,只要有一个显性,整体就是显性。帧ID越小,优先级越高。 - 数据段:一个数据帧传输的数据量为0~8个字节,MSB在前。
- 错误:错误检测功能、错误通知功能、错误恢复功能(1)所有的单元都可以检测错误;(2)检测出错误的单元会立即同时通知其他所有单元;(3)正在发送消息的单元一旦检测出错误,会强制结束当前的发送。被强制结束发送的单元会不断反复地重新发送此消息直到成功发送为止。
- 远程数据请求:可通过发送“遥控帧”,请求其他单元发送数据。
- STM32 CAN过滤,分为列表模式和掩码模式,列表模式一一列出需要匹配的ID;掩码模式具有掩码和校验码,当ID&掩码==校验码时,认为匹配。CAN_FM1R寄存器中的FBMx位,”0”表示掩码模式,”1”表示列表模式。(STM32F407为例)bxCAN共有28个过滤器。
每一个过滤器对应两个寄存器,
232&485
https://blog.csdn.net/renzemingcsdn/article/details/119820772
面经——嵌入式芯片底层相关推荐
- linux 库全局变量_学习嵌入式,做底层还是应用好?嵌入式Linux底层要掌握哪些技能?...
很多学习嵌入式的新人.工程师,在学习到半途中,总会感觉到迷茫,不知道自己从哪方面入手.进阶,也不知道自己目前处于学习的哪个层次,不清楚往后从哪方面来提升自己.针对这些工程师常见的情况,今天编者就以一个 ...
- 嵌入式wifi 芯片 推荐_聊聊我们常用的嵌入式芯片
平时在基地里,我们最常用的芯片当然是STM32系列的.意法半导体的芯片对于我们平时的开发来说的确是很香,但是它也有自身的一些缺陷.同时,完全局限于STM32也会让我们的视野变得狭隘起来.于是今天我们来 ...
- 全球及中国嵌入式芯片行业市场调查及投资战略研究报告2022-2028年
全球及中国嵌入式芯片行业市场调查及投资战略研究报告2022-2028年 详情内容请咨询鸿晟信合研究网! [全新修订]:2022年3月 [撰写单位]:鸿晟信合研究网 1 嵌入式芯片行业概述 1.1 嵌入 ...
- 嵌入式芯片的硬件组成(ARM内核)
嵌入式最小硬件系统的6部分 基于ARM内核的嵌入式芯片的硬件组成 连接到系统总线上的高带宽组件主要包括: 存储器及控制器.电源管理与时钟控制器.中断控制器.DMA控制器.GPIO端口.互联通信组件.定 ...
- 2022嵌入式芯片与系统设计竞赛
2022嵌入式芯片与系统设计竞赛 这是我们第一次参加相关的学科竞赛,基本上算是摸着石头过河,尽管有老师和同学的帮助但是还是走了不少的弯路.我们属于中部赛区,选的是芯片应用赛道,使用的是赤菟CH32V3 ...
- 嵌入式芯片与通用芯片(当前世界的芯片格局)-杂谈
这篇博客,我想要介绍一下当前世界的芯片格局以及区分一下"嵌入式芯片"与"通用芯片"之间的区别.(行文中为了保持通俗易懂,部分比喻与说法难免不甚严谨.若是有特别荒 ...
- 嵌入式芯片温度如何测试与评估
目录 前言 一.芯片温升概念 二.结温计算 1.公式 前言 嵌入式芯片在使用前DV实验中需通过温升实验获取其温升情况以及是否有温度裕量 一.芯片温升概念 一般芯片温度有三个概念:环境温度(ambien ...
- 1.1计算机组成结构:CPU组成、冯·诺依曼结构与哈佛结构、嵌入式芯片术语
1.1计算机组成结构:CPU组成.冯·诺依曼结构与哈佛结构.嵌入式芯片术语 计算机组成结构 CPU组成 运算器 控制器 冯·诺依曼结构与哈佛结构 冯·诺依曼结构 哈佛结构 嵌入式--芯片术语 计算机组 ...
- 【嵌入式Linux(基础篇)】嵌入式Linux底层系统开发流程和应用开发流程
1.嵌入式Linux系统体系架构 一个完整的嵌入式Linux系统体系架构如图,大概可以分为三步: 硬件PCB板设计 底层系统开发 应用开发 2.硬件PCB设计流程 ① 获取所用芯片芯片手册: ② 建立 ...
最新文章
- OKR是什么?-源目标OKR
- Gurobi 生产计划调度学习案例(含代码实现) (生产切换、装配计划)
- 认识容器,我们从它的历史开始聊起
- 2017.4.19 细胞分裂 思考记录
- Toggle Buttons(二)
- android 控件字体反向,Android编程实现控件不同状态文字显示不同颜色的方法
- textarea去掉滚动条
- conda查看已装包_conda一个包管理器
- Hbase命令设置TTL/编码设置TTL
- JS中各种width和height的区别
- 云服务显示服务器异常,云服务器显示异常登录
- The DELETE statement conflicted with the REFERENCE constraint
- 从《黑暗森林》到《萤火意志》:外表与内在极度失衡的“艺术品”
- 前端Vue简单编写一个幸运大转盘抽奖游戏
- 极大似然估计法的理解和用途
- 中资电信银行股将成市场旗手
- element input自定义正则验证
- j4125和n5100 哪个好
- BeautifulSoup中的.text 和get_text()的区别,.text与.string的区别
- Alfred workflow 开发指南
热门文章
- java判断一个月间隔_如何检查间隔列表(Joda-Time)是否完全涵盖Java中的一个月
- ajax json 渲染 html,jQuery+Ajax+js实现请求json格式数据并渲染到html页面操作示例
- linux内核镜像的分层,Docker镜像分层的原理详解
- 三维点云学习(1)下-点云体素降采样
- 使用idea开发SpringBoot应用,添加@SpringBootApplication注解时,不能自动提示
- Linuxqt制作文本编辑器_Python实操!速收藏!学习使用Python创建文本编辑器应用程序
- 3.指定IP地址抓包
- Centos下安装minikube
- wincc服务器客户端用虚拟机,什么情况下用wincc服务器与客户端
- 5.3.2 先行发生