ARM

SWP和SWPB是ARM指令集中对存储单元的原子操作。即对存储单元的一次读和一次不可被切割。
SWP和SWPB分别完毕存储器和寄存器之间 一个字(32bit)和一个字节(8bit)的数据交换。

SWP指令主要是完毕ARM体系架构处理器的同步操作。在Linux操作系统中实现信号量的操作。可是此指令在ARMv6架构后就没有採用了,而是通过扩展的LDREX和STREX实现。本片文章主要介绍SWP的功能,对于LDREX和STREX以后再介绍。

SWP的指令格式例如以下:

SWP {}{B} Rd, Rm, [Rn]

当中Rd是目的寄存器,从存储器中读到的值存放于此寄存器中

Rm寄存器是操作数。会将此寄存器中的值存放于存储单元中

[Rn]是寄存器间接寻址,Rn保存的是某个存储单元的地址

如果[Rn]中存放的是信号量。当某程序要改动信号量时,则会调用SWP指令完毕对信号量的操作,即对这个存储单元的读和写是一个原子操作。不会被打断,命令的运行步骤例如以下图1所看到的:

ARM指令集—SWP指令

当多个程序要訪问他们共享的资源时,我们必需要做好同步机制以保证数据的安全。通常,共享的资源能够是一段共享内存或者是外部设备。訪问这些资源的能够使CPU、进程或者是线程。

为了完毕同步机制,会採用一个原子变量来保存资源的状态。

比例如以下图2所看到的,用一个二元信号量(0或者1)来实现共享资源的同步,当进程A 和 进程B都要訪问信号量Semaphore。

ARM指令集—SWP指令

对于A进程。先訪问到信号量Semaphore发现状态可用,应该立即会改动Semaphore的状态。告诉其它进程此资源正在被使用。可是可能因为时间片恰好用完,系统调度到进程B。

进程B訪问到信号量时发现状态也可用。于是改动Semaphore告诉其它进程此资源正在被使用,等到系统再次调度到进程A时,进程A却不知道进程B已改动了Semaphore而且使用了公共资源,于是接着上次未完毕的任务,開始改动Semaphore而且開始使用公共资源。因此。遇到这种情况的话,信号量形同虚设并没有起到同步的作用。

所以假设使用SWP指令,通过上面的介绍,SWP指令时完毕对存储单元的一次读和写的原子操作。就能够避免这种情况。

以下的汇编代码是通过SWP实现相互排斥的样例

EXPORT lock_mutex_swp
lock_mutex_swp PROC
LDR r2, =locked
SWP r1, r2, [r0] ; Swap R2 with location [R0], [R0] value placed in R1
CMP r1, r2 ; Check if memory value was ‘locked’
BEQ lock_mutex_swp ; If so, retry immediately
BX lr ; If not, lock successful, return
ENDP
EXPORT unlock_mutex_swp
unlock_mutex_swp
LDR r1, =unlocked
STR r1, [r0] ; Write value ‘unlocked’ to location [R0]
BX lr
ENDP

当然,除了上面的情况,还可能因为中断的产生导致读和写的操作被打断。

在一些任务比較简单的系统中,能够在关键的代码中利用禁止中断的方式来保证对数据操作的原子性,然而对于如今复杂的多任务操作系统,禁止中断的做法显然不是有效的解决方法。

所以SWP通过特殊的訪问方式,不须要禁止中断。可是这样也会延长中断的响应时间。随着处理器的高速发展,多核处理器已经显示出了强大的优势,同步的问题显得更加明显。如图3所看到的,一个系统由一个Cortex-A8和Cortex-M4组成。他们都会訪问一同一段存储空间。

ARM指令集—SWP指令

SWP指令在这样的模式下。就显得非常尴尬了,假设依旧採用原来的特殊訪问模式,可能会大大减少多核处理的性能。

所以从ARMv6架构以后。不再使用SWP指令实现同步的功能,而是添加了LDREX和STREX指令完毕相关的操作。

来源:博客园 - cynchanpin

围观 7
32

全新的MCU结合业内一流的低功耗、耐水、抗扰电容式触摸技术

随着物联网(IoT)终端的蓬勃发展,安全有时被许多设计人员抛之脑后,这增加了泄漏知识产权(IP)和敏感信息的风险。为了满足日益增长的安全需求,Microchip Technology Inc.(美国微芯科技公司)日前推出全新的SAM L10和SAM L11 MCU系列。欲了解更多信息,请访问www.microchip.com/SAML11

全新的MCU系列基于Arm® Cortex®-M23内核,SAM L11提供适用于Armv8-M的Arm TrustZone® , 这一可编程环境可以在认证库(certified libraries)、IP和应用代码之间提供硬件隔离。Microchip通过加入芯片级的抗干扰、安全启动和安全密钥存储技术实现稳健的安全性,结合TrustZone技术可以保护客户应用免受远程攻击和物理攻击。

两个MCU系列均提供业内最低的功效,同时具备电容式触摸功能以及一流的耐水性和抗扰性。在进行功耗基准测试时,SAM L10获得了ULPMark™ 405分的高分,超过由EEMBC®(嵌入式微处理器基准评测协会)认证的性能最接近的竞品200%。Microchip利用享有专利的picoPower®技术,在工作模式和所有休眠模式下提供行业领先的低功耗。

Microchip的MCU32业务部副总裁Rod Drake表示:“物联网终端通常要求低功耗和高安全性,但物联网节点的发展如此之快,以至于安全有时跟不上。SAM L11能提供客户在设计流程早期进行安全规划所需的功能。”

除了TrustZone技术之外,SAM L11的安全功能还包括支持高级加密标准(AES)、伽罗瓦计数器模式(GCM)和安全散列算法(SHA)的板载密码模块。具备篡改检测功能的安全启动和安全密钥存储技术建立了硬件信任根。它还提供用于安全固件升级的安全自举程序。Microchip与Trustonic(Microchip的安全设计合作伙伴计划成员)共同提供完善的安全解决方案框架,可简化安全措施的实施,让客户能够更快推出最终产品。Microchip还与Secure Thingz和Data I/O Corporation合作,为拥有可靠安全框架的SAM L11客户提供安全配置服务。

两个MCU系列均提供Microchip最新一代的外设触摸屏控制器(PTC),以实现电容式触摸功能。设计人员可以轻松添加触摸界面,在潮湿和噪声环境中提供流畅且高效的用户体验,同时保持低功耗。触摸界面让这些器件成为各种汽车、家电、医疗和消费类人机接口(HMI)应用的理想选择。

开发支持

SAM L10 和 SAM L11 Xplained Pro 评估工具包可用于入门级开发。所有SAM L10/L11 MCU均受Atmel Studio 7集成开发环境(IDE)、IAR Embedded Workbench、Arm Keil® MDK 和Atmel START(一款对外设和软件进行配置的免费在线工具,可加快开发)支持。START还支持用于配置和部署安全应用的TrustZone技术。电源调试器和数据分析工具可用于实时监控和分析电量消耗情况,并在运行过程中对耗能数据进行微调,满足应用要求。还可以使用Microchip的 QTouch® 模块库、2D 触摸表面库和QTouch 配置器简化触摸应用的开发。

供货

SAM L10和SAM L11器件目前已投入量产,提供各种引脚数量和封装选择。

  •   SAM L10系列器件10000件起售。
  •   SAM L11系列器件10000件起售。
  •   SAM L10 和SAM L11 Xplained Pro 评估工具包已开始发售(部件编号分别为DM320204和DM320205 )。

如需了解详细信息,请联系Microchip销售代表或者全球授权分销商,也可以访问Microchip网站。如果需要购买文中提及的产品,请访问Microchip的全方位服务渠道microchipDIRECT,也可以联系Microchip的授权分销合作伙伴。

围观 5
97

单片机的特点:

(1) 受集成度限制,片内存储器容量较小,一般内ROM:8KB以下;
(2) 内RAM:256KB以内。
(3) 可靠性高
(4) 易扩展
(5) 控制功能强
(6) 易于开发

ARM的特点:

(1)自带廉价的程序存储器(FLASH)和非易失的数据存储器(EEPROM)。这些存储器可多次电擦写,使程序开发实验更加方便,工作更可靠。

(2)高速度,低功耗。在和M51单片机外接相同晶振条件下,AVR单片机的工作速度是M51单片机的30-40倍;并且增加了休眠功能及CMOS技术,使其功耗远低于M51单片机。

(3) 工业级产品。具有大电流输出可直接驱动SSR和继电器,有看门狗定时器,防止程序走飞,从而提高了产品的抗干扰能力。

(4) 超功能精简指令,具有32个通用工作寄存器,相当于M51单片机中32个累加器!从而克服了单一累加器工作的瓶颈效应。

(5)程序下载方便。AVR单片机即可并行下载也可串行下载,无需昂贵的编程器。此外,还可以在线下载!也就是说可以直接在电路板上进行程序修改和烧录。

(6) 具有模拟比较器、脉宽调制器、模数转换功能。使得工业控制中的模拟信号处理更为简单方便。

(7) 并行口、定时计数器、中断系统等单片机内部重要资源的功能进行了大幅度提升,使之更适合工业生产过程的实时控制。

(8) 其时钟频率既可外接也可使用单片机内部自带的振荡器,其频率可在1MHz-8MHz内设置,使得硬件开发制作更为简洁。

(9)强大的通讯功能,内置了同步串行接口SPI、通用串行接口UAST、两线串行总线接口TWI(I2C ),使网络控制、数据传送更为方便。

(10)超级保密功能,应用程序可采用多重保护锁功能。可低价快速完成厂家产品商品化等等。 除上述特点外“零外设”也是AVR嵌入式单片机的重要特征。由于该芯片已内置了程序存储器、晶振并增加了在线汇编功能。

所以AVR单片机芯片接上直流电源,下载个程序就可以独立工作。无需附加外部设备,无需使用昂贵的编程器和仿真装置。这给我们学习和开发带来了便利条件。

FPGA的特点:

(1)采用FPGA设计ASIC电路(专用集成电路),用户不需要投片生产,就能得到合用的芯片。 
 
(2)FPGA可做其它全定制或半定制ASIC电路的中试样片。  

(3)FPGA内部有丰富的触发器和I/O引脚。  

(4)FPGA是ASIC电路中设计周期最短、开发费用最低、风险最小的器件之一。 

(5)FPGA采用高速CMOS工艺,功耗低,可以与CMOS、TTL电平兼容。  

可以说,FPGA芯片是小批量系统提高系统集成度、可靠性的最佳选择之一。 
 
FPGA是由存放在片内RAM中的程序来设置其工作状态的,因此,工作时需要对片内的RAM进行编程。用户可以根据不同的配置模式,采用不同的编程方式。  

加电时,FPGA芯片将EPROM中数据读入片内编程RAM中,配置完成后,FPGA进入工作状态。掉电后,FPGA恢复成白片,内部逻辑关系消失,因此,FPGA能够反复使用。FPGA的编程无须专用的FPGA编程器,只须用通用的EPROM、PROM编程器即可。当需要修改FPGA功能时,只需换一片EPROM即可。这样,同一片FPGA,不同的编程数据,可以产生不同的电路功能。因此,FPGA的使用非常灵活。

嵌入式系统的特点:

(1)系统内核小
由于嵌入式系统一般是应用于小型电子装置的,系统资源相对有限,所以内核较之传统的操作系统要小得多。比如Enea公司的OSE分布式系统,内核只有5K,而Windows的内核?简直没有可比性。  

(2)专用性强
嵌入式系统的个性化很强,其中的软件系统和硬件的结合非常 紧密,一般要针对硬件进行系统的移植,即使在同一品牌、同一系列的产品中也 需要根据系统硬件的变化和增减不断进行修改。同时针对不同的任务,往往需要 对系统进行较大更改,程序的编译下载要和系统相结合,这种修改和通用软件的 “升级”是完全两个概念。  

(3)系统精简
嵌入式系统一般没有系统软件和应用软件的明显区分,不要求 其功能设计及实现上过于复杂,这样一方面利于控制系统成本,同时也利于实现系统安全。 

(4)高实时性的系统软件(OS)是嵌入式软件的基本要求。而且软件要求固态存储,以提高速度;软件代码要求高质量和高可靠性。  

(5)嵌入式软件开发要想走向标准化,就必须使用多任务的操作系统
嵌入式系统的应用程序可以没有操作系统直接在芯片上运行;但是为了合理地调度多任 务、利用系统资源、系统函数以及和专家库函数接口,用户必须自行选配RTOS (Real-Time Operating System)开发平台,这样才能保证程序执行的实时性、 可靠性,并减少开发时间,保障软件质量。  

(6)嵌入式系统开发需要开发工具和环境。
由于其本身不具备自举开发能力, 即使设计完成以后用户通常也是不能对其中的程序功能进行修改的,必须有一套 开发工具和环境才能进行开发,这些工具和环境一般是基于通用计算机上的软硬 件设备以及各种逻辑分析仪、混合信号示波器等。开发时往往有主机和目标机的 概念,主机用于程序的开发,目标机作为最后的执行机,开发时需要交替结合进行。

转自:小丑l

围观 26
182

本文主要介绍的是ARM里的RAM和SDRAM有什么区别,首先介绍了RAM的类别及特点,其次对SDRAM做了详细阐述,最后介绍了RAM和SDRAM的区别是什么。

RAM介绍

Random-Access Memory(随机存取存储器),在计算机的组成结构中,有一个很重要的部分,就是存储器。存储器是用来存储程序和数据的部件,对于计算机来说,有了存储器,才有记忆功能,才能保证正常工作。存储器的种类很多,按其用途可分为主存储器和辅助存储器[或者内存储器和外存储器],主存储器简称内存,内存在电脑中起着举足轻重的作用,一般采用半导体存储单元。因为RAM是内存其中最重要的存储器,所以通常我们直接称之为内存。内存就是存储程序以及数据的地方,比如当我们在使用WPS处理文稿时,当你在键盘上敲入字符时,它就被存入内存中,当你选择存盘时,内存中的数据才会被存入硬(磁)盘。

RAM就是既可以从中读取数据,也可以写入数据。当机器电源关闭时,存于其中的数据就会丢失。我们通常购买或升级的内存条就是用作电脑的内存,内存条(SIMM)就是将RAM集成块集中在一起的一小块电路板,它插在计算机中的内存插槽上,以减少RAM集成块占用的空间。目前市场上常见的内存条有 128M/条、256M/条、512M/条等。

RAM的类别

根据存储单元的工作原理不同, RAM分为静态RAM和动态RAM。
  
静态随机存储器(SRAM)

静态存储单元是在静态触发器的基础上附加门控管而构成的。因此,它是靠触发器的自保功能存储数据的。

动态随机存储器(DRAM)

动态RAM的存储矩阵由动态MOS存储单元组成。动态MOS存储单元利用MOS管的栅极电容来存储信息,但由于栅极电容的容量很小,而漏电流又不可能绝对等于0,所以电荷保存的时间有限。为了避免存储信息的丢失,必须定时地给电容补充漏掉的电荷。通常把这种操作称为“刷新”或“再生”,因此DRAM内部要有刷新控制电路,其操作也比静态RAM复杂。尽管如此,由于DRAM存储单元的结构能做得非常简单,所用元件少,功耗低,已成为大容量RAM的主流产品。

RAM的特点

1、随机存取

所谓“随机存取”,指的是当存储器中的数据被读取或写入时,所需要的时间与这段信息所在的位置或所写入的位置无关。相对的,读取或写入顺序访问(SequenTIal Access)存储设备中的信息时,其所需要的时间与位置就会有关系。它主要用来存放操作系统、各种应用程序、数据等。

2、易失性

当电源关闭时RAM不能保留数据。如果需要保存数据,就必须把它们写入一个长期的存储设备中(例如硬盘)。RAM和ROM相比,两者的最大区别是RAM在断电以后保存在上面的数据会自动消失,而ROM不会自动消失,可以长时间断电保存。

3、对静电敏感

正如其他精细的集成电路,随机存取存储器对环境的静电荷非常敏感。静电会干扰存储器内电容器的电荷,引致数据流失,甚至烧坏电路。故此触碰随机存取存储器前,应先用手触摸金属接地。

4、访问速度

现代的随机存取存储器几乎是所有访问设备中写入和读取速度最快的,存取延迟和其他涉及机械运作的存储设备相比,也显得微不足道。

5、需要刷新(再生)

现代的随机存取存储器依赖电容器存储数据。电容器充满电后代表1(二进制),未充电的代表0。由于电容器或多或少有漏电的情形,若不作特别处理,数据会渐渐随时间流失。刷新是指定期读取电容器的状态,然后按照原来的状态重新为电容器充电,弥补流失了的电荷。需要刷新正好解释了随机存取存储器的易失性。

SDRAM介绍

SDRAM(Synchronous Dynamic Random Access Memory)同步动态随机存取存储器,同步是指Memory工作需要步时钟,内部的命令的发送与数据的传输都以它为基准;动态是指存储阵列需要不断的刷新来保证数据不丢失;随机是指数据不是线性依次存储,而是由指定地址进行数据读写。目前的168线64bit带宽内存基本上都采用SDRAM芯片,工作电压3.3V电压,存取速度高达7.5ns,而EDO内存最快为15ns。并将RAM与CPU以相同时钟频率控制,使RAM与CPU外频同步,取消等待时间,所以其传输速率比EDO DRAM更快。

SDRAM从发展到现在已经经历了四代,分别是:第一代SDR SDRAM,第二代DDR SDRAM,第三代DDR2 SDRAM,第四代DDR3 SDRAM.

第一代与第二代SDRAM均采用单端(Single-Ended)时钟信号,第三代与第四代由于工作频率比较快,所以采用可降低干扰的差分时钟信号作为同步时钟。

SDR SDRAM的时钟频率就是数据存储的频率,第一代内存用时钟频率命名,如pc100,pc133则表明时钟信号为100或133MHz,数据读写速率也为100或133MHz。

之后的第二,三,四代DDR(Double Data Rate)内存则采用数据读写速率作为命名标准,并且在前面加上表示其DDR代数的符号,PC-即DDR,PC2=DDR2,PC3=DDR3。如PC2700是DDR333,其工作频率是333/2=166MHz,2700表示带宽为2.7G。

DDR的读写频率从DDR200到DDR400,DDR2从DDR2-400到DDR2-800,DDR3从DDR3-800到DDR3-1666。

很多人将SDRAM错误的理解为第一代也就是 SDR SDRAM,并且作为名词解释,皆属误导,SDR不等于SDRAM。

  Pin:模组或芯片与外部电路电路连接用的金属引脚,而模组的pin就是常说的“金手指”。
  SIMM:Sigle In-line Memory Module,单列内存模组。内存模组就是我们常说的内存条,所谓单列是指模组电路板与主板插槽的接口只有一列引脚(虽然两侧都有金手指)。
  DIMM:Double In-line Memory Module,双列内存模组。是我们常见的模组类型,所谓双列是指模组电路板与主板插槽的接口有两列引脚,模组电路板两侧的金手指对应一列引脚。
  RDIMM:registered DIMM,带寄存器的双线内存模块
  SO-DIMM:笔记本常用的内存模组。
  工作电压:
  SDR:3.3V
  DDR:2.5V
  DDR2:1.8V
  DDR3:1.5V

ARM里的RAM和SDRAM有什么区别

RAM包括SRAM和DRAM,前者是静态随机存储器,主要是依靠触发器存储数据,无需刷新,而后者是动态随机存储器,依靠MOSFET中栅电容存储数据,需不断刷新以补充释放的电荷。由于单管就可以实现数据存储,集成度可以做到更高,功耗也更低,更为主流。需要注意的是由于刷新牵涉电容的充放电过程,DRAM的存取速度不及SRAM。

至于SDRAM,为同步动态随机存储器,属于DRAM的一种,其工作过程需要同步时钟的配合,因此可以不考虑路线延时不同的影响,避免不定态。普通的DRAM属于异步传输,存取数据时,必须等待若干个时钟以后才进行操作(考虑不定态),因为会花费较多的时间,影响了数据的传输速率。随着时钟频率的不断增高,这个瓶颈的限制就会越来越明显,SDRAM的优势也就更能体现出来。

本文转载自:电子产品世界

围观 10
125

一、什么是AMBA总线

AMBA总线规范是ARM公司提出的总线规范,被大多数SoC设计采用,它规定了AHB (Advanced High-performance Bus)、ASB (Advanced System Bus)、APB (Advanced Peripheral Bus)。AHB用于高性能、高时钟频率的系统结构,典型的应用如ARM核与系统内部的高速RAM、NAND FLASH、DMA、Bridge的连接。APB用于连接外部设备,对性能要求不高,而考虑低功耗问题。ASB是AHB的一种替代方案。

二、AHB

AHB总线的强大之处在于它可以将微控制器(CPU)、高带宽的片上RAM、高带宽的外部存储器接口、DMA总线master、各种拥有AHB接口的控制器等等连接起来构成一个独立的完整的SOC系统,不仅如此,还可以通过AHB-APB桥来连接APB总线系统。AHB可以成为一个完整独立的SOC芯片的骨架。

下图是一个典型的AHB系统总线的结构示意图

AMBA总线协议AHB、APB

三、APB

主要应用在低带宽的外设上,如UART、 I2C,它的架构不像AHB总线是多主设备的架构,APB总线的唯一主设备是APB桥(与AXI或APB相连),因此不需要仲裁一些Request/grant信号。APB的协议也十分简单,甚至不是流水的操作,固定两个时钟周期完成一次读或写的操作。其特性包括:两个时钟周期传输,无需等待周期和回应信号,控制逻辑简单,只有四个控制信号。APB上的传输可用如图所示的状态图来说明。

1、系统初始化为IDLE状态,此时没有传输操作,也没有选中任何从模块。

2、当有传输要进行时,PSELx=1,,PENABLE=0,系统进入SETUP状态,并只会在SETUP状态停留一个周期。当PCLK的下一个上升沿到来时,系统进入ENABLE状态。

3、系统进入ENABLE状态时,维持之前在SETUP状态的PADDR、PSEL、PWRITE不变,并将PENABLE置为1。传输也只会在ENABLE状态维持一个周期,在经过SETUP与ENABLE状态之后就已完成。之后如果没有传输要进行,就进入IDLE状态等待;如果有连续的传输,则进入SETUP状态。

来源:feipeng8848

围观 5
116

Arm宣布旗下Arm®Artisan®物理IP将应用于台积电基于Arm架构的SoC设计22nm超低功耗(ULP)和超低漏电(ULL)平台。台积电22nmULP/ULL技术针对主流移动和物联网设备进行了优化,与上一代台积电28nm HPC+平台相比,在提升基于Arm的SoC性能的同时,更显著降低功耗和硅片面积。

“本次发布的下一代工艺技术能够以更低的功耗、在更小的面积上满足更多的功能需求,”Arm物理设计事业群总经理Gus Yeung指出,“Artisan物理IP与台积电22nmULP/ULL技术的设计和制造成本优势相结合,将为我们双方的合作伙伴带来立竿见影的每毫瓦运算性能提升及硅片面积缩减两方面优势。”

针对台积电22nmULP/ULL工艺技术推出的Artisan物理IP包含了代工厂支持的内存编译器,针对下一代边缘计算设备的低泄漏和低功耗要求进行了优化。除此之外,这些编译器还附有超高密度和高性能的物理IP标准单元库,其中含有电源管理套件和厚栅氧化物元件库,以协助优化低泄漏功耗。另外,最新的物理IP还提供了通用I/O解决方案,以确保性能、功耗和面积(PPA)的全面最优化。

台积电设计基础架构市场部高级总监李硕表示:“Artisan 物理 IP使台积电能够加速流片(tape-out)时间,从而以更快的速度将针对主流物联网和移动设备设计的尖端SoC推向市场。基于双方在28nmHPC+平台合作上的成功,台积电和Arm不断致力于在功耗和面积方面提供显著的优化,进而为双方的合作伙伴提供在更多设备上实现更优边缘计算体验的可能。”

Arm物理IP是一套广受信赖并已获广泛应用的解决方案,每年由Arm合作伙伴出货的集成电路(IC)超过100亿个。台积电22nmULP/ULL工艺技术针对Arm物理IP的整合目前正在积极推进之中,致力于在2018年下半年为双方共同的芯片合作伙伴实现流片(tape-out)。

围观 4
185

ARM非常关心安全漏洞,现在它已经将安全性设计到了芯片中。该芯片设计公司今天宣布,其ARM Cortex-M35P处理器在芯片级上内置了防篡改技术和软件隔离功能。该技术将为智能卡,门锁和汽车设备等新兴应用带来智能卡安全级别。安全措施将有助于保护物联网(IoT)或智能连接的日常物品。

这个想法是保护芯片级别的系统免受硬件系统日益普遍的物理攻击。黑客可以使用诸如电力和电磁分析等设备来找出没有这种保护的芯片中正在发生的事情 - 并且会使数据处于危险之中。随着物联网的发展势头越来越强劲,更多具有高价值数据的设备相互连接,这些物理攻击对黑客更具吸引力。

ARM担心可能是由于与芯片直接物理接触或靠近芯片而导致的攻击。物理攻击旨在利用芯片实施层面的漏洞,而不是利用软件或设计层面的弱点。这些物理攻击分为两大类:侵入式攻击,需要(至少)芯片解封装和非侵入式攻击 - 例如近距离侧通道攻击(SCA),它通过非预期侧通道阻塞获得信息从芯片实现,例如,通过观察芯片的功耗或密码操作期间的电磁场发射)。“

Cortex-M35P是一款高性能处理器,可帮助嵌入式安全开发人员阻止物理篡改并实现更高级别的安全认证。它是Cortex-M系列中的第一款具有设计防篡改功能的处理器。它还包括用于软件隔离的ARM TrustZone技术,使设计人员可以更轻松,更快速地将多层支付或通过电信认证的安全性嵌入到任何设备的核心。

ARM表示,其现有的两个安全知识产权CryptoCell和CryptoIsland都可以使用技术来抵御各种攻击。随着物理攻击阻力的增加,这些解决方案可以解决更广泛的攻击表面,这是一些物联网应用所需要的。

ARM发布Cortex-M35P 为其设计了防篡改和软件隔离功能

ARM发布Cortex-M35P 为其设计了防篡改和软件隔离功能

ARM发布Cortex-M35P 为其设计了防篡改和软件隔离功能

ARM发布Cortex-M35P 为其设计了防篡改和软件隔离功能

ARM发布Cortex-M35P 为其设计了防篡改和软件隔离功能

ARM发布Cortex-M35P 为其设计了防篡改和软件隔离功能

ARM发布Cortex-M35P 为其设计了防篡改和软件隔离功能

来源:cnBeta.COM

围观 8
202

作者:Paul Williamson,Arm副总裁暨物联网设备IP事业群总经理

• 基于Arm平台安全架构(PSA)规范的全新系统级芯片(SoC)解决方案适用于多种IoT节点和网关设备
• Arm首款异构SoC解决方案将Cortex-M的高效率和实时响应与Cortex-A的卓越性能相结合,在终端设备上也能实现复杂处理和机器学习功能
• 为全新微软Azure Sphere解决方案提供安全的SoC基础

Arm宣布推出一套基于PSA规范的全新物联网解决方案——Arm SDK-700系统设计套件,以用于加速安全SoC的开发。作为一套综合的SoC系统框架,使用 Arm SDK-700系统设计套件可设计安全的SoC,并应用于丰富多样的IoT节点、网关设备和嵌入式产品。该解决方案不仅使合作伙伴能够在通用软件开发环境中打造安全设备,同时还使其业务的多样性和差异化可以在新的物联网应用中蓬勃发展。

Arm是物联网的首选架构,迄今为止已为1250亿芯片提供了计算能力。公司有一个宏大的愿景,即到2035年实现1万亿个设备的安全互连。但在实现这一愿景之前,业界需要达成共识——不再让安全成为互连设备价值链各环节的后顾之忧。为确保日益多样化的互连互通设备的设计具有共同的安全基础,Arm推出了PSA平台安全架构(Platform Security Architecture)。

PSA基于四项关键原则(设备识别、可信启动流程、安全OTA更新和基于证书的身份验证),并且已获得多家行业领军企业支持。尽管如此,SoC的设计依然是一个复杂过程,可能历经数年时间才能完成,这已成为阻碍物联网发展的瓶颈。物联网的发展需要设计人员快速安全地将产品推向市场。

协作共赢:微软Azure Sphere

Arm SDK-700为在今年RSA美国信息安全大会上发布的微软Azure Sphere解决方案提供了安全的SoC框架基础。SDK-700的灵活性使Arm能够与微软保持密切协作,确保其符合Azure Sphere指定的安全要求。得益于此,SoC设计人员可以使用SDK-700将Azure Sphere SoC快速推向市场,并专注于差异化,因为设计人员可确信他们的设计符合微软的标准。

提供最合适的处理和更快的安全进程(time-to-security)

在物联网终端节点设备上配置更强大的处理器正已成为众多应用的共同需求。我们看到,语音控制助手、互连摄像头、计算机视觉等领域持续保持增长,但所有这些新兴应用案例都需要集成媒体处理能力并对高强度的工作负载进行管理。SDK-700拥有灵活的计算架构,融合了Cortex-A的卓越性能与Cortex-M处理器的高效率和实时响应能力。Cortex-A处理器同时又能支持丰富的开发环境,如Azure Sphere操作系统或Linux操作系统。

SDK-700采用基于PSA规范的新型灵活子系统,旨在缩短安全进程,同时为SoC开发人员降低风险。

除了在通用开发环境下具有成本和发布时间上的优势外,SDK-700框架也能将碎片化风险降低到接近零,并且可以连接由软件、操作系统和工具,包括可信的固件 (Trusted Firmware)构成的海量生态系统。

SDK-700可提供:

• 符合Azure Sphere要求的SoC——集成了子系统、处理器和关键安全构建模块的灵活安全硬件基础
• 用于处理器内部通信的标准化编程接口
• 预先构建的安全IP,包括防火墙、安全区域和Arm TrustZone技术
• 通过多种方式配置子系统,实现与任何云的安全连接

安全必须成为设备的基本要求

连接1万亿个互连设备需要价值链的所有环节都遵循这样的安全规范,即设计物联网 SoC和系统时,安全性不再是可选或事后考虑的因素,而是设备的基本属性。但要做到这一点,整个行业需要快速地提供可信方案。对于嵌入式系统设计而言,SDK-700为业界加快发展提供了新一种经过验证的有效解决方案。依赖于像PSA和Azure Sphere这样的安全方案,才能使设备更加安全可信;同时,更多的行业领导企业支持数字社会契约,才能确保产品在其设计生命周期中的安全。

围观 2
282

在ARM体系中,通常有以下3种方式控制程序的执行流程:

• 在正常程序执行过程中,每执行一条ARM指令,程序计数器寄存器(PC)的值加4个字节;每执行一条Thumb指令,程序计数器寄存器(PC)的值加2个字节。整个过程是顺序执行。

• 通过跳转指令,程序可以跳转到特定的地址标号处执行,或者跳转到特定的子程序处执行。其中,B指令用于执行跳转操作;BL指令在执行跳转操作的同时,保存子程序的返回地址;BX指令在执行跳转操作的同时,根据目标地址的最低位可以将程序状态切换到Thumb状态;BLX指令执行3个操作:跳转到目标地址处执行,保存了子程序的返回地址,根据目标地址的最低位可以将程序状态切换到Thumb状态。

• 当异常中断发生时,系统执行完当前指令后,将跳转到相应的异常中断处理程序处执行。在当异常中断处理程序执行完成后,程序返回到发生中断的指令的下一条指令处执行。在进入异常中断处理程序时,要保存被中断的程序的执行现场,在从异常中断处理程序退出时,要恢复被中断的程序的执行现场。

ARM体系中异常中断种类:

• 复位(Reset):当处理器的复位引脚有效时,系统产生复位异常中断,程序跳转到复位异常中断处理程序处执行。复位异常中断通常用在下面两种情况:系统加电时和系统复位时。跳转到复位中断向量处执行,称为软复位。

• 未定义指令(Undefined Instruction):当ARM处理器或者是系统中的协处理器认为当前指令未定义时,产生未定义的指令异常中断。

• 软件中断(Software Interrupt SWI):这是一个由用户定义的中断指令。可用于用户模式下的程序调用特权操作指令。在实时操作系统中可以通过该机制实现系统功能调用。

• 指令预取中止(Prefetch Abort):如果处理器预取的指令的地址不存在,或者该地址不允许当前指令访问,当该被预取的指令执行时,处理器产生指令预取中止异常中断。

• 数据访问中止(Data Abort):如果数据访问指令的目标地址不存在,或者该地址不允许当前指令访问,处理器产生数据访问中止异常中断。

• 外部中断请求(IRQ):当处理器的外部中断请求引脚有效,而且CPSR寄存器的I控制位被清除时,处理器产生外部中断请求(IRQ)异常中断。系统中各外设通常通过该异常中断请求处理器服务。

• 快速中断请求(FIQ):当处理器的外部快速中断请求引脚有效,而且CPSR寄存器的F控制位被清除时,处理器产生外部中断请求(FIQ)异常中断。

对异常中断的响应过程(这几点都是ARM核自己已经完成的动作):

• 保存处理器当前状态、中断屏蔽位以及各条件标志为。这是通过将当前程序状态寄存器CPSR的内容保存到将要执行的异常中断对应的SPSR寄存器中实现的。各异常中断有自己的物理SPSR寄存器。

• 设置当前程序状态寄存器CPSR中相应的为。包括:设置CPSR中的位,使处理器进入当前相应的执行模式(处理器模式);设置CPSR中的位,禁止IRQ中断,当进入FIQ模式时,禁止FIQ中断。

• 将寄存器lr_mode设置成返回地址。

• 将程序计数器值(PC),设置成该异常中断的中断向量地址,从而跳转到相应的异常中断处理程序处执行。

从异常中断处理程序中返回(这些返回动作是需要自己写代码完成的):

• 恢复被中断的程序的处理器状态,即将SPSR_mode寄存器内容复制到CPSR中。

• 返回到发生异常中断的指令的下一条指令执行,即将lr_mode寄存器的内容复制到程序计算器PC中。

复位异常中断处理程序不需要返回。在复位异常中断处理程序开始整个用户程序的执行,因而它不需要返回。

转自: uTank

围观 4
153

一. 前言

有工程师反应说Keil 下无法使用STM32F4xx 硬件浮点单元, 导致当运算浮点时运算时间过长,还有一些人反应不知如何使用芯片芯片内部的复杂数学运算,比如三角函数运算。针对这个部分本文将详细介绍如何使用硬件浮点单元以及相关数学运算。

二.问题产生原因

1. ------对于Keil MDK Version 5 版本, 编译器已经完全支持STM32F4xx 的FPU(浮点运算单元),可以直接使用芯片内部的浮点运算单元。

2. ------对于Keil MDK Version 4 版本, 高版本v4,比如当前keil 官网可下载的v4.74.0.0 版本也已经支持
FPU,可以直接使用芯片内部浮点运算。但如果使用低版本v4,如v4.23.0.0 版本, 则需要对软件进行相应设置。

三. 如何解决问题

1. 查看手头Keil 版本是否支持FPU,最简单办法是进入Keil 调试界面直接查看0xE000ED88 地址单元数据,如果为0x00F00000, 则说明已经支持FPU,如下图所示:

关于在ARM MDK 中使用STM32F4xx 硬件浮点单元的话题

2. 如果0xE000ED88地址数据为0x00000000,则需要做如下操作:

a. 在system_stm32f4xx.c文件中的systeminit()函数里面添加如下代码:

/* FPU settings------------------------------------------------------------*/
#if (__FPU_PRESENT == 1) &&(__FPU_USED == 1)
SCB->CPACR |= ((3UL << 10*2)|(3UL<< 11*2)); /* set CP10 and CP11 Full Access */
#endif

b. 在工程选项(Project->Optionsfor target "XXXX")中的C/C++选项卡的Define 中加入如下的语句,见下图所示:
__FPU_PRESENT=1,__FPU_USED =1。

关于在ARM MDK 中使用STM32F4xx 硬件浮点单元的话题

c. 这样编译时就加入了启动FPU 的代码,CPU 也就能正确高效的使用FPU 进行简单的加减乘除了。

3. 进一步说明使用芯片复杂数学运算使用

对于复杂运算,比如三角函数,开方等运算,需要如下设置:

a. 包含arm_math.h头文件。
b. 在工程选项的C/C++选项卡的define 中继续加入语句ARM_MATH_CM4。
c. 在工程选项的C/C++选项卡的define 中继续加入语句__CC_ARM。

以使用sin,cos 运算举例,需要调用arm_sin_f32()以及arm_cos_f32(),这两个函数定义在
arm_sin_f32.c 和arm_cos_f32.c中,需要在工程中加入这两个c 文件。

* 在 ST 库文件包中的文件目录如下:
\stm32f4_dsp_stdperiph_lib\STM32F4xx_DSP_StdPeriph_Lib_V1.1.0\Libraries\CMSIS\DSP_Lib\Sou
rce\FastMathFunctions

* 在keil 安装目录下的文件目录如下:
\Keil\ARM\CMSIS\DSP_Lib\Source\FastMathFunctions
当用到更多数学运算, 如开根号,三角运算,求绝对值等等,客户也可以直接在工程中加入ARM 中的数学运算库arm_cortexM4lf_math.lib,而不需要一个个文件的添加,

* 在 ST 库文件包中的目录如下:
\STM32F4xx_DSP_StdPeriph_Lib_V1.6.0\STM32F4xx_DSP_StdPeriph_Lib_V1.6.0\Libraries\CMSIS\Lib\ARM

* 在keil 安装目录下的文件目录如下:
\Keil\ARM\CMSIS\Lib\ARM

关于在ARM MDK 中使用STM32F4xx 硬件浮点单元的话题

四. 结语

从测试效果看当使用了硬件浮点运算单元,数学计算变得简单高效,可以留给系统更多时间处理其他控制程序,有效提升系统效率,节省时间。

来源: STM32单片机

围观 18
280

页面

订阅 RSS - ARM