ARM 与 STM32 的关系_stm32与arm公司有什么关系-程序员宅基地

技术标签: stm32  单片机F103开发大全  arm  嵌入式  单片机  韦东山  

ARM 介绍

1978年,奥地利籍物理学博士Hermann Hauser,和他朋友,一位英国工程师Chris Curry,共同创建了一 家名为“Cambridge Processor Unit,CPU”的公司,中文字面意思就是“剑桥处理器单元”,主要从事研发 当地电子仪器设备的业务,比如街头游戏机之类的。

1979年,在经营逐渐进入正规后,原来的公司名不怎么合适了,那个年代喜欢找个吉祥物作为公司名字, 比如Apple公司。这俩就以橡子为吉祥物,取名为“Acron Computer”,中文字面意思就是“橡果公司”。

1981年,也许是改了公司名字,运气就来了,这一年,公司接到一个大单。英国广播公司BBC,计划在 整个英国播放一套电脑普及的教育节目,希望Acron公司可以生产一套配套的电脑,之后英国政府还会海量 采购电脑,在各个学校普及。

接下这个大单后,Acron公司就开始研发产品了。当时处理器正从8位向16位过渡,他们就去找了美国国 家半导体和摩托罗拉公司生产的16位处理器。评估后发现,这些处理器执行上有点慢,中断的响应时间有点 长,还有就是太贵,一台电脑才卖500英镑,处理器成本就要100英镑。于是又把目标转向当时如日中天的 Intel,希望对方提供一些16位80286处理器的设计资料和样品,然而Intel根本就不理他们。

最后,Acorn公司没办法,临时采用了便宜的MOS科技生产的8位6502处理器,勉强研发出符合要求的 个人电脑BBC Micro。绝处逢生的Acorn公司发现处理器受制于人,为了后面长久的发展,于是决定自己研 发处理器。

Acorn公司的研发人员从美国加州大学伯克利分校,找到了一个关于新型处理器的研究——简化指令集。 在此基础上,历时4年的艰苦奋斗,于1985年完成了微处理器的设计,以后的BBC Micro,都用这颗新处理 器。对于这块芯片,Acorn公司给它命名为“Acorn RISC Machine,ARM”,中文字面意思就是“橡果精简 指令集机器”,也就是ARM的第一次出现。

这里插讲一下简化指令集(Reduced Instruction Set Computer,RISC),与之相对应的就是复杂指令集 (Complex Instruction Set Computer,CISC)。早期的处理器都是CISC架构(比如前面Intel处理器),随著时间 推移,有越来越多的指令集加入。但是后来人们发现,整个指令集中,只有约20%的指令常常会被使用到, 大约占了整个程序内容的80%,而剩余80%的指令,只占了整个程序内容的20%(典型的二八原则)。于是, 1979年美国加州大学伯克利分校的David Patterson教授(前面提到的新型处理器研究的作者),提出了RISC的 想法,主张硬件专心加速常用的指令,不常用的指令则利用常用的指令去组合。

就在同一年,1985年10月,英特尔发布了80386,Acorn公司的ARM芯片被吊打。80386采用CISC技术, 所有指令都支持,也就性能更好,但设计成本也高、功耗也大。Acorn公司的ARM芯片采用RISI技术,只支 持常用指令,其它指令需要常用指令去组合,性能也就差一些,但成本低、功耗低、研发快。Acorn公司也 不傻,性能比不过,就突出成本低,功耗低的优势,总有要求成本低、功耗低,性能要求不高的场景,于是 就往我们现在所见的嵌入式方向发展。

1990年,Acorn公司和Apple公司合作,成立新公司“Advanced RISC Machines,ARM”,中文字面意思 就是“高级精简指令集机器”,这就是现在大家常说的ARM公司。

成立新公司后的几年,ARM公司业绩平平,危机四起。于是ARM决定改变他们的产品策略,他们不再 生产芯片,转而以授权的方式,将芯片设计方案转给其它公司。正是ARM的这种授权模式,极大地降低了 自身的研发成本和研发风险。它以风险共担、利益共享的模式,形成了一个以ARM为核心的生态圈,使得 低成本创新成为可能。

随后,德州仪器(Texas Instruments,TI)、意法半导体(STMicroelectronics,ST)、恩智浦半导体(NXP Semiconductors,NXP)等半导体芯片厂商,相继购买ARM授权,然后根据自身行业需求,设计不同的外设接 口的芯片。
在这里插入图片描述
由上总结,ARM具有以下三种含义:

  1. ARM是一家全球半导体行业技术领先的公司,主要业务是设计RISC嵌入式处理器;
  2. ARM是一类微处理器芯片或产品的统称,即所有采用ARM公司提供方案开发的RISC处理器;
  3. ARM是一项技术的名称,即采用RISC的处理器体系结构;

从1985年发布第一个ARM处理器开始,ARM公司不断升级迭代,加入新的指令系统、寄存器组、功能 特性,发展出不同架构。早期的经典ARM处理器,架构命名规则比较混乱,现在这些处理器基本不常见了, 这里就不展开介绍。从ARMv7开始,采用Cortex命名,将整个处理器分为三大类,如图 2.2.2 所示。
在这里插入图片描述

  1. 这是现代多用户多进程操作系统(比如Linux、VxWorks)所必须的。该系列适用于高端消费电子sor),该系列有内存管理单元(Memory ManagementUint,MMU),实现虚拟内存,让每个用户进程都拥有自己独立的地址空间,这是现代多用户多进程操作系统(比如Linux、VxWorks)所必须的。该系列适用于高端消费电子领域,比如智能手机、平板电脑、智能电视、路由器等;
  2. ARM Cortex-R:实时控制系列。R表示应用程序(Real TimeController),该系列适用于高性能、高实 时性应用,比如硬盘/固态驱动控制器、企业网络设备、消费电子领域的蓝光播放器、汽车领域的安全气囊等;
  3. ARM Cortex-M:微控制器系列。M表示应用程序(MicrocontrollerProcessors),该系列适用于低功耗、 高性能且对成本敏感的产品,比如家电产品、物联网、无人机等;

针对不同的应用场景和需求,每个系列还会再细分,比如ARM Cortex-M就再分为ARM Cortex-M0、ARM Cortex-M3、ARM Cortex-M4等,区别如表 2.2.1 所示。
表 2.2.1 Cortex-M 系列处理器区别

STM32 介绍

在2004年,ARM公司推出新一代Cortex内核后,ST公司抓住机遇,在很短的时间内就向市场推出了一 系列的32位微控制器,同时提供基于库的开发模式,加快用户研发周期。STM32就是ST公司基于ARM Cortex-M3内核设计的微控制器,专为高性能、低功耗、低成本场景设计。

STM32如今产品系列非常丰富,主要为ARM Cortex-M内核系列MCU,也开始涉及ARM Cortex-A内核 系列MPU,如图 2.2.3 所示。按应用特性分类,可分为无线WB/WL系列、超低功耗L0/L1/L3/L5系列、主流 G0/G4/F0/F1/F3系列、高性能F2/F4/F7/H7系列、全新的MP1系列。
在这里插入图片描述
STM32的处理器种类众多,通过了解STM32的命令规范,可以了解整个STM32家族产品,也方便以后 芯片选型,STM32 MCU系列命名规则如图 2.2.4 所示。
在这里插入图片描述
以STM32F103ZET6为例,解析STM32芯片命名规范如表 2.2.2 所示。

表 2.2.2 STM32F103ZET6 各部分含义
在这里插入图片描述
在这里插入图片描述

【总结】

ARM公司售卖Cortex-M系列的授权,意法半导体(STMicroelectronics,ST)购买了该授权,生产了一些列 STM32产品,这些使用ARM技术的处理器,都习惯称为ARM处理器,其中STM32F103ZET6就作为了本手册 配套开发板的处理器。

嵌入式Linux视频:https://www.100ask.net/index
单片机视频:https://www.100ask.net/page/1707053
全文下载:点击下载

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/thisway_diy/article/details/114867557

智能推荐

Anaconda详细安装及环境变量配置(图文)_anaconda环境变量-程序员宅基地

文章浏览阅读3.9w次,点赞39次,收藏182次。AnacondaAnaconda指的是一个开源的Python发行版本,其包含了conda、Python等180多个科学包及其依赖项。因为包含了大量的科学包,Anaconda的下载文件比较大(约531 MB),如果只需要某些包,或者需要节省带宽或存储空间,也可以使用Miniconda这个较小的发行版(仅包含conda和Python)。Conda是一个开源的包、环境管理器,可以用于在同一个机器上安装不同版本的软件包及其依赖,并能够在不同的环境之间切换。Anaconda包括Conda、Pyth..._anaconda环境变量

Python 之 Pandas (一)介绍_s = pd.series(['湖北', '浙江', '广东'])-程序员宅基地

文章浏览阅读601次。代码:import pandas as pdimport numpy as npprint("生成序列")s = pd.Series([1, 3, 6, np.nan, 44, 1])print(s)dates = pd.date_range('20160101', periods=6)print(dates)运行结果:生成序列0 1.01 3.02 6..._s = pd.series(['湖北', '浙江', '广东'])

java icon动态变换_Android实现APP安装后动态更换Icon和名称-程序员宅基地

文章浏览阅读200次。最近看到手机自带的时钟App可以实时的修改图标样式,就觉得很神奇。考虑到我自己要做的日记App可能也需要这样的功能,于是研究了一下,目前初步实现了修改图标及点击后进入不同Activity的功能,代码比较简单,点击这里download ZIP。简单效果图:原来调用修改方法:代码很简单,就2个部分:1.修改manifest文件:package="sxkeji.net.aliasdemo" >an..._android app 更换电子门牌 demo

Pytorch中的register_buffer()-程序员宅基地

文章浏览阅读2.4w次,点赞185次,收藏333次。Pytorch中的register_buffer1.register_buffer( )的使用随着例子边看边讲例子1:使用类成员变量(类成员变量并不会在我们的model.state_dict(),即无法保存)例子2:使用类成员变量(类成员变量并不会随着model.cuda()复制到gpu上)例子3:使用register_buffer()总结2.与pa1.register_buffer( )的使用回顾模型保存:torch.save(model.state_dict()),model.state_dict(_register_buffer

HTML 表单标签_html表单标签-程序员宅基地

文章浏览阅读7.8k次,点赞17次,收藏70次。一、什么是表单标签表单是用来采集用户的输入数据,然后将数据提交给服务器二、表单的组成一个表单有三个基本组成部分: ①表单标签:这里面包含了处理表单数据所用程序的URL以及数据提交到服务器的方法。 ②表单域:包含了文本框、密码框、隐藏域、多行文本框、复选框、单选框、下拉选择框和文件上传框等。 ③表单按钮:包括提交按钮、复位按钮和一般按钮;三、表单标签表单标签<form></form>功能:用于申明表单,定义采集数据的范围,也就是<form>和</form>里面包含的数据_html表单标签

python控制小爱同学_从企业微信机器人到小爱同学,用 Serverless 实现生活智能化!...-程序员宅基地

文章浏览阅读1.2k次。通过定时触发器,可以简单快速地定制一个企业微信机器人。我们可以用它来实现喝水、吃饭提醒等小功能,还能实现定时推送新闻、天气,甚至是监控告警的小功能。使用企业微信机器人在企业微信中,选择添加机器人:之后,我们可以根据文档进行企业微信机器人的基础功能定制:以下是用 curl 工具往群组推送文本消息的示例(注意要将 url 替换成机器人的 webhook 地址,content 必须是 utf8 编码):..._小爱同学api python

随便推点

关于layout_centerHorizontal、layout_gravity、gravity的区别-程序员宅基地

文章浏览阅读1.2w次,点赞5次,收藏8次。layout_centerHorizontal是相对于RelativeLayout的布局属性如果设置为true,就将该控价设置在相对于父控件水平居中的位置layout_gravity针对LinearLayout的一种控件对齐方式,可以把值设置成下列值:center_vertical、center_horizontal、center等等gravity控制控件内文字的对齐方式举个栗子:在写一个简单的

python循环嵌套_python循环j和i每循环9个一分行-程序员宅基地

文章浏览阅读1.9k次。#一,循环嵌套##1,双for循环嵌套"""外层循环每循环一次,内层循环循环所有次,内层循环体执行就是内外层循环次数的乘积for i in "范围": #循环9次 for j in "范围":# 循环9次 "循环体""""for x in range(3): for y in range(3): print("%d %d" % (x, y))#例2打印99 乘法表for i in range(1, 10):# 循环打印数字0到9 for_python循环j和i每循环9个一分行

ubuntu16.04成功安装 百度网盘 by deepin-wine-for-ubuntu_ubuntu kylin16.04 网盘-程序员宅基地

文章浏览阅读9.6k次,点赞2次,收藏6次。ubuntu笔记本 安装百度网盘 ,帮助完成安装 百度网盘 的资料来源,请点击此处hairui@hadoop:~$ git clone https://gitee.com/wszqkzqk/deepin-wine-for-ubuntu.git正克隆到 'deepin-wine-for-ubuntu'...remote: Enumerating objects: 2777, done.remo..._ubuntu kylin16.04 网盘

怎样处理过拟合和欠拟合?_拟合程度 高-程序员宅基地

文章浏览阅读981次。过拟合和欠拟合从模型在不同集合上的表现来看首先来明确一下过拟合和欠拟合的概念。过拟合(下图中最右侧的图像)过拟合指的是训练数据拟合程度过高的情况,也就是说模型在训练集上表现的很好,但是在测试集和新的数据集上表现的较差。欠拟合(下图中最左侧的图像)了解了什么是过拟合,欠拟合也显而易见,当模型在训练集和测试集表现的都不好的时候我们就称这种现象为欠拟合。从方差和偏差的角度来看..._拟合程度 高

Android 进阶解密读书笔记(十四)——插件化原理_android so的插件化-程序员宅基地

文章浏览阅读360次。插件化的客户端由宿主和插件两部分组成,宿主就是指先被安装到手机中的apk,就是我们平常加载的普通apk。插件一般是指经过处理的apk、so和dex等文件,插件可以被宿主进行动态安装。常用的插件化框架 DynamicApk、DroidPlugin、RePlugin。_android so的插件化

jdk1.7和jdk1.8区别-程序员宅基地

文章浏览阅读66次。在jdk7的新特性方面主要有一下几方面的增强本文是我学习了解了jdk7和jdk8的一些新特性的一些资料,有兴趣的大家可以浏览下下面的内容。官方文档在jdk7的新特性方面主要有下面几方面的增强:jdk1.7语法上1.1 二进制变量的表示,支持将整数类型用二进制来表示,以0b开头。所有整数int、short、long、byte都可以用二进制表示// An 8-bit 'byte' v..._jdk 1.8和jdk7

推荐文章

热门文章

相关标签