[知识点] 嵌入式软件开发知识点学习

注:本人学的是ARM Cortex-A7系列的处理器(IMX6ULL),针对的校招学习也是这方面的

点个小赞关注一波,持续更新……

[专栏]嵌入式软件校招笔记(点击跳转)

[知识点] 嵌入式软件开发知识点学习

[知识点] ARM指令集详解

[知识点] 通讯协议(very重要)

[项目] C++高并发Web服务器+个人改进项目详解

[八股] C/C++基础八股

[八股] C/C++进阶八股

[八股] 计算机网络八股

[八股] 操作系统八股

[八股] 嵌入式系统八股

[八股] Linux系统编程八股

[八股] Linux网络编程八股

秋招嵌入式企业面经

ARM体系架构

ARM处理器概述

ARM处理器是一种基于RISC指令集架构的微处理器,主要用于嵌入式系统和移动设备,如智能手机、平板电脑、数字相机等。ARM处理器的优点是功耗低、体积小、可靠性高,在嵌入式系统和移动设备领域得到广泛应用。

ARM处理器架构简洁高效,指令集精简,架构简单易于实现。同时,ARM处理器支持多种操作系统,可以使用Linux、Android等开源操作系统,也可以使用Windows、iOS等商业操作系统。因此,ARM处理器适合于开发各种类型的应用程序,包括企业应用、游戏、嵌入式应用、移动应用等。

ARM处理器的发展历程非常丰富,从最初的Acorn RISC Machine,到今天的ARMv8-A架构,其核心设计思想一直保持不变,就是简单、高效、低功耗。ARM处理器已经成为了绝大部分移动设备和嵌入式系统的首选处理器,是一个非常重要的微处理器平台。

ARM架构CPU

控制单元是整个CPU的指挥控制中心 ,由程序计数器PC(Program Counter),指令寄存器IR (Instruction Register)、指令译码器ID(Instruction Decoder)和操作控制器OC(Operation Controller)等,对协调整个电脑有序工作极为重要。它根据用户预先编好的程序,依次从存储器中取出各条指令,放在指令寄存器IR中,通过指令译码(分析)确定应该进行什么操作,然后通过操作控制器OC,按确定的时序,向相应的部件发出微操作控制信号。操作控制器OC中主要包括节拍脉冲发生器、控制矩阵、时钟脉冲发生器、复位电路和启停电路等控制逻辑。

运算单元可以执行算术运算(包括加减乘数等基本运算及其附加运算)和逻辑运算(包括移位、逻辑测试或两个值比较) 。相对控制单元而言,运算器接受控制单元的命令而进行动作,即运算单元所进行的全部操作都是由控制单元发出的控制信号来指挥的,所以它是执行部件。

存储单元包括CPU片内缓存和寄存器组 ,本文要将的内部寄存器也就是这里的寄存器组。是CPU中暂时存放数据的地方,里面保存着那些等待处理的数据,或已经处理过的数据,CPU访问寄存器所用的时间要比访问内存的时间短。采用寄存器,可以减少CPU访问内存的次数,从而提高了CPU的工作速度。但因为受到芯片面积和集成度所限,寄存器组的容量不可能很大。寄存器组可分为专用寄存器和通用寄存器。专用寄存器的作用是固定的,分别寄存相应的数据。而通用寄存器用途广泛并可由程序员规定其用途,通用寄存器的数目因微处理器而异。

总的来说,CPU从内存中一条一条地取出指令和相应的数据,按指令操作码的规定,对数据进行运算处理,直到程序执行完毕为止。而指令又是开发者设计好的, 开发者可以通过改变内部寄存器的内容来实现对CPU的控制

ARM公司概述

ARM的含义

ARM(Advanced RISC Machines)有三种含义:一个公司的名称、一类处理器的通称、一种技术。

ARM公司

成立于1990年11月,前身为Acorn计算机公司;主要设计ARM系列RISC处理器内核;授权ARM内核给生产和销售半导体的合作伙伴,ARM公司并不生产芯片;提供基于ARM架构的开发设计技术软件工具、评估板、调试工具、应用软件、总线架构、外围设备单元等;

主流的两种处理器

RISC处理器(精简指令集)

只保留常用的的简单指令,硬件结构简单,复杂操作一般通过简单指令的组合实现,一般指令长度固定,且多为单周期指令。RISC处理器在功耗、体积、价格等方面有很大优势,所以在嵌入式移动终端领域应用极为广泛。

RISC体系结构_百度百科

CISC处理器(复杂指令集)

不仅包含了常用指令,还包含了很多不常用的特殊指令,硬件结构复杂,指令条数较多,一般指令长度和周期都不固定。CISC处理器在性能上有很大优势,多用于PC及服务器等领域。

复杂指令集计算机_百度百科

risc和cisc的区别

(1)指令系统:RISC设计者把主要精力放在那些经常使用的指令上,而CISC计算机的指令系统比较丰富。

(2)存储器操作:RISC对存储器操作有限制,CISC机器的存储器操作指令多;

(3)程序:RISC汇编语言程序复杂;CISC汇编语言程序编程简单。

(4)中断:RISC机器在一条指令执行的适当地方可以响应中断;而CISC机器是在一条指令执行结束后响应中断。

(5)CPU:RISCCPU功耗低;而CISCCPU功耗大。

(6)设计周期:RISC微处理器结构简单;CISC微处理器结构复杂;

(7)用户使用:RISC微处理器结构简单,CISC微处理器结构复杂;

(8)应用范围:RISC机器更适合于专用机;而CISC机器则更适合于通用机。

ARM指令集

指令

能够指示处理器执行某种运算的命令称为指令(如加、减、乘...);

指令在内存中以机器码(二进制)的方式存在;每一条指令都对应一条汇编;(注意:不可打断)程序是指令的有序集合;指令集

处理器能识别的指令的集合称为指令集;不同架构的处理器指令集不同;指令集是处理器对开发者提供的接口;

ARM指令集

大多数ARM处理器都支持两种指令集:

ARM指令集

所有指令(机器码)都占用32bit存储空间(4个字节)代码灵活度高、简化了解码复杂度;执行ARM指令集时PC值每次自增;

Thumb指令集

所有指令(机器码)都占用16bit存储空间(2个字节)代码密度高、节省存储空间;执行Thumb指令集时PC值每次自增;

ARM指令集_百度百科

编译原理

主要过程为:预处理(预编译)->编译->汇编。

机器码(二进制)是处理器能直接识别的语言,不同的机器码代表不同的运算指令,处理器能够识别哪些机器码是由处理器的硬件设计所决定的,不同的处理器机器码不同,所以机器码不可移植汇编语言是机器码的符号化,即汇编就是用一个符号来代替一条机器码(一一对应),所以不同的处理器汇编也不一样,即汇编语言也不可移植C语言在编译时我们可以使用不同的编译器将C源码编译成不同架构处理器的汇编,所以C语言可以移植

编译原理_sundingh的博客-CSDN博客_编译原理

ARM存储模型

1. ARM数据类型

1.1. ARM的基本数据类型

ARM采用32位架构,即ARM一次可以处理32bit的数据,基本的数据类型有以下三种:

  • Byte 8 bits(1个字节)
  • Halfword 16 bits(2个字节)
  • Word 32 bits(4个字节)

前面说到,C语言是可以移植到arm处理器上的,但是C语言的数据类型和ARM的数据类型并不兼容,所以arm-gcc编译器在编译的时候,会将C语言的类型转换成ARM可以处理的数据类型,比如 char =》 Byte,short =

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

嵌入式软件校招笔记 文章被收录于专栏

记录本人校招过程中遇到的问题及笔记整理!后续会持续更新

全部评论
码住
8 回复 分享
发布于 2023-10-24 14:40 安徽
码住
4 回复 分享
发布于 2023-10-24 14:57 安徽
deque的底层为什么是双端队列😳
3 回复 分享
发布于 2023-10-27 19:41 安徽
mark
3 回复 分享
发布于 2023-10-24 16:29 安徽
数组越界和栈溢出有区别吗🤐
2 回复 分享
发布于 2023-10-28 11:07 安徽
🧐
2 回复 分享
发布于 2023-10-24 14:44 山东
码住
1 回复 分享
发布于 2023-10-28 11:30 安徽
码住
1 回复 分享
发布于 2023-10-27 19:56 安徽
mark
1 回复 分享
发布于 2023-10-26 16:32 安徽
一刷2024/9/20
点赞 回复 分享
发布于 2024-09-20 20:39 江苏
码住
点赞 回复 分享
发布于 2023-10-27 22:59 山东
牛啊
点赞 回复 分享
发布于 2023-10-27 20:29 山东

相关推荐

不愿透露姓名的神秘牛友
07-25 17:26
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
06-21 11:29
凉风落木楚山秋:他们两都收获了流量,只有爷浪费了时间
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
06-21 11:33
昨天是学校最后一场招聘会,鼠鼠去参加了,全场只有一个招聘java的岗位,上来先做一份笔试题,做完后他拿张纸对答案,然后开始问简历上的问题,深圳小厂,6-8k(题目如下),后面还有两轮面试。然后我就在招聘现场逛呀逛,看到有公司招聘电商运营,给的比上年的小厂还多,鼠鼠就去了解了下,然后hr跟鼠鼠要了份简历,虽然我的简历上面全是求职Java开发相关的内容,但是hr还是鼓励我说没关系,她帮我把简历给老板看看,下周一会给我通知。招聘会结束后鼠鼠想了一段时间,也和朋友聊了聊,发现我可能是不太适合这个方向,然后就跟爸爸说回家了给我发条微信,我有些话想跟他说说。晚上爸爸到家了,跟我发了条微信,我立马跑出图书馆跟他打起了电话,这个通话长达一个小时,主要是跟爸爸坦白说我不想找这行了,是你的儿子太没用了,想试试其他行业。然后爸爸也跟我说了很多,说他从来没有希望我毕业后就赚大钱的想法,找不到就回家去,回家了再慢慢找,实在找不到就跟他干(帮别人装修房子,个体户),他也知道工作不好找,让我不要那么焦虑,然后就是聊一些家常琐事。对于后面的求职者呢我有点建议想提一下,就是如果招实习的时间或者秋招开始,而你的简历又很差的情况下,不要说等做好项目填充完简历之后再投,那样就太晚了,建议先把熟悉的项目写上简历,然后边投边面边完善,求职是一个人进步的过程,本来就比别人慢,等到一切都准备好后再投岂不是黄花菜都凉了。时间够的话还是建议敲一遍代码,因为那样能让你加深一下对项目的理解,上面那些说法只是针对时间不够的情况。当然,这些建议可能没啥用,因为我只是一个loser,这些全是建立在我理想的情况下,有没有用还需其他人现身说法。上篇帖子没想到学校被人认了出来,为了不丢脸只能匿名处理了。
KPLACE:找研发类或技术类,主要还是要1.多投 2.多做准备,很多方面都要做准备 3.要有心理准备,投累了就休息一两天,再继续,要相信自己能找到
投递58到家等公司7个岗位
点赞 评论 收藏
分享
评论
14
83
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务