ARM

ARM® TrustZone® 是针对片上系统(SoC)设计的系统级安全技术,它基于硬件,内置于CPU和系统内核,为半导体芯片设计师设计设备安全性能(如可信根)量身打造。TrustZone可用于任何基于ARM Cortex®-A的系统,随着全新Cortex-M23和Cortex-M33处理器的发布与升级,Cortex-M也已经支持该技术。

从尺寸最小的微控制器(搭载针对Cortex-M处理器优化的TrustZone技术),到高性能处理器(搭载针对Cortex-A处理器优化的TrustZone技术),设计师们终于可以从设计初始就着手打造出色的安全性能了。

TrustZone技术的核心理念是将可信资源与非可信资源在硬件上实现隔离。在处理器内部,软件只能安装于安全或非安全域其中一处;在两个域间切换则必须经过Cortex-A处理器的软件(后文称安全监视器)和Cortex-M处理器的硬件(核心逻辑)处理才能执行。这种将安全(可信)域和非安全(非可信)域隔离理念的实现不仅涉及CPU,还涵盖存储、片上总线系统、中断、周边设备接口和SoC上的软件。

针对ARMv8-M处理器(Cortex-M)的TrustZone技术

ARMv8-M架构将TrustZone技术拓展至Cortex-M级系统,实现了对所有成本点的安全防护。为Cortex-M度身设计的TrustZone技术可以保护固件和周边设备,并为安全启动、可信更新以及可信根执行实现隔离。该架构具备嵌入式解决方案应有的确定性实时响应能力。同时,因为安全与非安全域间的上下文切换在硬件中完成,所以更快实现转换及更高的电源效率。该架构无需安装任何安全监视器软件,因为处理器本身就能完成切换任务,不仅可以减少存储足迹,还能降低代码执行的动态功率。

在继续讨论编程之前,我们先介绍以下几个概念:

1.地址定义安全

2.新增执行状态

3.跨域调用

概念1:地址定义安全

第一个需要了解的概念是:地址定义安全,即每一个地址都与一个特定的安全状态相关。Cortex-M处理器采用全新引入的安全属性单元来检查地址的安全状态。根据整体SoC设计,系统级接口可以重写该属性。选择此状态后,该地址还会通过一个存储保护单元(视系统配置而定)。


地址定义安全图解

概念2:新增执行状态

第二个概念是“新增执行状态”。ARMv7-M和ARMv6-M架构定义了两种执行模式:管理者模式(handler mode)和线程模式(thread mode)。管理者模式是特权模式,可以接入SoC的所有资源;而线程模式则可以设定为特权或非特权两种。凭借TrustZone安全拓展技术,我们可以对处理器模式进行镜像处理,构造安全和非安全两种状态,每种状态都各自包含管理者模式和线程模式。安全状态和处理器模式是正交的,因此可形成4种状态和模式的组合。在安全的存储器中运行软件时,处理器自动设定为安全状态;反之,在非安全存储器中运行软件时,处理器自动设定为非安全状态。这种设计消除了本来用于管理状态切换的安全监控软件的必要性,从而实现减少存储足迹和功耗的目的。


新增正交态

概念3:跨域调用

ARMv8-M为实现Cortex-M的性能专门设计,具备确定性实时运行功能。换言之,只要遵守以预先设定的安全状态接入点为基础的特定规则,任何状态下的任何功能都可以直接调用其他状态下的任何其他功能。此外,每个状态都有一个独特的堆栈集和对应的堆栈指示器,用来保护安全域资产。由于无需使用API层管理调度,成本大幅减少。基于预先设定的接入点,调度可以直接读取被调函数


跨域调用

应用案例简述

如下图表介绍了一个使用案例简述。该环境下,用户应用和I/O驱动都处于非安全状态,而系统的启动代码和通讯堆栈则处于安全状态。用户应用调度并转入通讯堆栈以传输、接收数据,而该堆栈将使用非安全状态的I/O驱动来完成界面上的数据传输和接收。

所有相似系统环境下,示例软件配置都可以得益于TrustZone技术的安全状态功能:

非安全应用不能接入安全资源,除非通过事先定义好的安全服务功能接入点

安全固件既可以接入安全存储,也可以进入非安全存储

安全和非安全代码可以用不同的定时器制定独立的时间进度

每根中断线都可以设置为安全或非安全。安全软件和非安全软件的中断向量表也可以分开。

尽管处理器硬件可以为安全软件提供核心保护,但安全软件依然需要谨慎的编写,才能确保整个系统的安全。以下是软件开发商在设计安全软件时必须牢记的三个内容:

使用最新的ARM C语言拓展(ACLE)技术

验证非可信指示

为异步非安全存储修改专门设计

建议1:使用最新的ARM C语言拓展技术

经过优化,ARMv8-M的TrustZone技术引入了全新指令,支持安全状态转换。软件开发商再也无需创建封装器来生成这些指令了,他们现在可以使用ARM C语言拓展功能(ACLE)中定义的全新编译器,让软件工具理解上述功能的安全使用,并生成所需的最佳代码。ACLE功能由多家编译器厂商实现并支持,代码非常便捷易用。

比如说,在创建可以从非安全状态调度的安全API时,应该使用一个名为“cmse_nonsecure_entry”的全新功能属性来做函数声明。安全状态调度功能使用结束时,处理器中的寄存器仍可能保留一些秘密信息。凭借正确的功能属性,编译器便可自动插入代码,清空R0-R3、R12和应用程序状态寄存器(APSR)中仍保留秘密信息的寄存器,但是寄存器将结果返还给非安全软件的情况除外。寄存器R4到R11有不同的处理方式,因为它们的内容在函数边界保持不变。如果它们的值在函数执行过程中改变,那么就必须在返还非安全调度功能之前改回原值。

建议2:验证非可信指标

有时候,非安全代码会提供错误的设计指示,试图接入安全存储。为了彻底杜绝这一可能,ARMv8-M引入了一个全新指令——测试目标(TT)指令。TT指令可以将一个地址的安全属性返还,安全软件即可由此判断该指示指向安全还是非安全地址。

为了提高指示检查效率,每个存储区都有一个安全配置定义的区域号。软件可以用区域号判断相邻的存储区是否具有类似的安全属性。

TT指令将来自地址值的安全属性和区域号(还有MPU的区域号)返还原软件。如果在存储段的起始和终止地址上使用TT指令,并确定两个地址都处于同一个区域号内时,软件便可迅速判断存储范围(如数据阵列或数据结构)是否完全位于非安全空间。


检查指示是否指向安全的区域边界

使用上述机制,凭借API调度进安全侧的安全代码即可判断,非安全软件区域发起的指示请求是否具备符合该API的安全属性。通过这种方法,我们可以阻止非安全软件在安全软件中使用API来读取或破坏安全信息。

建议3:为异步非安全存储修改专门设计

非安全中断服务程序可以修改正在被安全软件处理的非安全数据。因此,已经通过安全API验证的输入数据可以在经过验证之后被一个非安全的ISR更改。避免这种情况的一个方法就是在安全存储中为那份输入数据建立一个本地副本,并用安全副本进行处理(包括输入数据的验证)以避免非安全存储读取;无法创建该副本时(如在特定存储区域中处理大量数据),则可以选择另一种方法,即对安全属性单元进行编程,以确保该存储区域的安全。

总结

确保整个系统的安全性并阻止安全数据泄漏至非安全侧,是安全软件开发商的责任。为实现这一目标,我们向安全软件开发商介绍TrustZone 技术3大关键理念与3个重要使用建议——保护调度函数寄存器数据的ACLE技术、验证指示的TT指令;最后一点开发商也必须牢记,非安全侧可能会通过干扰安全侧来修改数据。欲知更多详情,请点此浏览,为协助您在ARMv8-M处理器上开发安全固件,我们精选了相关文件以供参考。

围观 337

NASA成功发射SpaceX CRS-10货运飞船进行第十次国际空间站商业货运任务。SpaceX CRS-10搭载了一个电子辐射效应实验,关键是该实验由美国Vorago公司的ARM架构抗辐射MCU进行控制。2016年,NASA宣布将选择ARM Cortex-A53处理器构建下一代空间电子产品平台,计划于2020年发射。可见,ARM技术在航天工业中势头越来越猛。此次搭载实验是由美国空军实验室和NASA联合支持,标志着基于ARM的耐极端环境抗辐射微处理器首次部署于空间系统。

抗辐射存储器实验

空间环境下,存储器暴露于高能质子和辐射粒子的辐射环境下,当这些粒子轰击存储器或其他微电路时将导致存储器位信息错误,这将导致电子设备故障或危及任务。

为解决这一问题,研究人员设计了抗辐射电子存储器实验——RHEME(监测空间存储器),RHEME将持续一年监测空间粒子辐射对存储器的影响。该实验采用了VORAGO公司基于ARM Cortex-M0的抗辐射微控制器进行控制。该微控制器采用VORAGO HARDSIL®工艺制造,抗辐射且耐受极端温度环境。实验结果将有助于空间用存储器的错误检测、纠正和消除。该实验是挑战空间环境、实现下一代空间计算的重要一步。

ARM芯片空间发展前景

一直以来,空间电子系统基于FPGA高度定制,且不重复利用。但随着太空探测的不断发展和运载火箭再次利用成为可能,电子系统需要变的可扩展、经济、可靠。而标准化的ARM架构正好具有这种灵活性。

该实验将改变空间抗辐射系统的设计方法,加快芯片的设计,允许基于MCU的电子设备集成于飞行器中的关键控制和安全功能系统,且成本更低。

VORAGO公司市场主管表示:空间计算应用,尤其是小型卫星平台的设计人员越来越倾向于选择抗辐射微控制器。ARM技术具有低功耗的特点,能够适应广泛的生态系统,且尺寸很小,这对于太阳能供电、受尺寸严格限制的飞行器而言非常重要。该实验将为未来芯片的发展提供关键数据。

这些辐射效应也可能发生在近地飞行的设备。例如,已开发了许多ARM CPU用于“关键任务”的功能安全应用。在这些应用中,需要检测和消除辐射效应,保证设备可控,这对于保护人们和地球环境至关重要。

围观 670

ARM表示OpenSynergy公司正在为其最先进的实时安全处理器ARM® Cortex®-R52 开发业界第一款软件管理程序。该管理程序可将任何基于Cortex-R52的芯片变为虚拟机,并能同时执行不同的软件任务。针对诸如无人驾驶和工业控制系统等设备中芯片不断提升的复杂性,该方法可以将安全性至关重要的功能与无需严格控制的功能相隔离。此外,它能够将应用程序整合到更少的电子控制单元(ECU),以便管理复杂性并降低成本。

ARM嵌入式营销副总裁Richard York表示:“面向大众市场的无人汽车将被赋予大幅增强的ECU计算能力和安全管理更复杂软件栈的能力。为此,Cortex-R52应运而生,借助管理程序实现软件隔离,从而保护重要的安全功能,并同时确保任务的快速执行。这样对于高性能车,我们将能放心地把驾驶任务交给自动驾驶系统。”

OpenSynergy首席执行官Stefaan Sonck Thiebaut表示:“Cortex-R52将虚拟化技术可应用于更广泛的汽车设备。对此,我们非常期待为下一代汽车架构提供支持。”

Cortex-R52不仅将硬件的虚拟化支持导入Cortex-R处理器系列,还维持硬实时操作系统(hard real-time systems)的所有必要功能。在虚拟机中维持绝对执行性的特色,对于协助各式机器人相关应用同时运行多个实时操作系统所面临的挑战,提供了最佳解决方案。

OpenSynergy软件架构适用于诸如域控制器(domain controllers)之类的微控制器。虚拟机管理程序技术支持多个实时操作系统和不同ASIL级别的AUTOSAR系统在ARM Cortex-R52上的同时运行。

围观 466

来源:赛迪顾问

一、下游应用牵引MCU产业前景向好

(一)物联网

自上世纪70年代问世以来,单片机(Microcontroller Unit,MCU)就凭借其极强的通用型和极高的研发普及率成为全球嵌入式电子应用领域不可或缺的核心部件。网络通信、工业控制、汽车电子、消费电子、金融电子等领域都离不开MCU产品的支持。未来,物联网相关应用将是集成电路(Integrated Circuit,IC)和电子信息终端产品的发展方向,无论是工业制造业、汽车还是消费电子,都在向互联互通的方向演进升级。新增的物联网设备和老旧设备的物联网替代将是未来发展的主题。

通常情况下,物联网设备都需要具备嵌入式控制、传感数据采集、能耗控制及数据交互通信等功能。在数据吞吐量较大、通信协议较复杂、对主控芯片运算精度要求较高的场合,主流的解决方案多采用32位MCU;而在轻负荷、要求快速响应的应用中,16位及8位MCU仍有大量需求,特别是8位MCU凭借其成本优势及开发的便利,在一些颗粒度较小的模块中仍然大规模使用。综合来看,随着下游物联网产业的演进和相关技术的快速发展,MCU市场必将延续高速稳定增长的态势。

(二)智能卡

数据显示,MCU芯片在智能卡领域的出货量接近50%,而从销售收入看,智能卡领域的收入占比达到15.8%。近年来,随着加密算法、NFC等相关技术的逐渐成熟,搭载MCU芯片的智能IC卡(Integrated Circuit Card)已基本覆盖日常消费、金融支付、政府及公共事务等各个领域。特别是金融IC卡方面,在政策引导和市场驱动的双重作用下正在加快普及。

目前,全国近400家商业银行中绝大多数都已经发行了金融IC卡。其全面替代磁条卡已成定局。与此同时,银联芯片卡标准已相继落地泰国等旅游业发达的东南亚国家,实现了我国自主研发金融技术标准的对外输出。预计未来几年,智能卡市场将迎来爆发式增长,这也将直接拉动上游的MCU市场。

(三)汽车电子

在汽车智能化的演进趋势下,越来越多的MCU产品被应用于新型智能驾驶控制系统以实现半自动驾驶、自动泊车、巡航控制以及电子稳定控制(ESC)等功能。与此同时,越来越多的汽车制造商开始致力于扩展驾驶辅助系统功能,使之在5-10年后能够最终实现无人驾驶功能,这将为车用MCU和传感器市场的发展带来机会。

新能源汽车方面,据中国汽车工业协会统计,截至2016年11月,我国累计生产新能源汽车42.7万辆,销售40.2万辆。新能源汽车的快速发展也直接拉动了汽车电子用MCU芯片的市场需求。配备大容量片上存储空间和更多I/O接口功能的32位MCU目前已被广泛应用于监视新能源汽车的电池状态,以及纯电动或混动车的启动电功率。未来汽车电子应用仍将是MCU市场的主要增长动力之一。

二、投资MCU企业的三种思路

(一)入股MCU龙头企业,快速切入下游市场

2016年,高通收购恩智浦、软银收购ARM公司无疑是集成电路产业界的两起重磅事件。巧合的是,这两件收购案的标的都与MCU产品有关。恩智浦继2015年收购飞思卡尔后,已成为汽车电子领域MCU的当之无愧的领军企业;而ARM则早已凭借其划时代的IP架构左右着MCU产业生态。成熟型MCU相关企业在研发实力、供应链、市场认可度及客户渠道等方面都具有显著优势。收购成熟型企业一方面可以直接补齐自有产品线,扩大专利覆盖度,优势技术互补形成完整解决方案,同时可通过规模效应实现外延式增长并降低运营成本;另一方面可以快速切入其所在下游应用领域,拓展应用市场范围,扩大市场占有率。

(二)并购成长型MCU及IP设计公司,提升技术层次

成熟型企业间的兼并重组往往是出于战略布局需要,这些公司的普遍特点是运营状况良好,盈利能力较强,市场占有率较高。与之相比,一些初创型或中等体量的芯片企业一方面或多或少存在运营效率低下、产品线较为单一、资金不足或缺乏完善销售渠道等问题;另一方面又在某些细分领域具有技术先进性。这样的公司虽然尚未在市场上占有一席之地,且短时间内难以贡献业绩,却可以作为投资方补齐短板、拓展市场、布局新领域的技术储备。同样地,一些大型芯片企业由于战略布局的需要,会对一些非核心业务部门进行剥离或调整,这些部门也进入了资本市场。国际知名MCU供应商微芯科技就一直贯彻着这种扩张性收购战略。自2010年以来先后凭借收购获得了存储器控制、蓝牙及Wi-Fi无线连接、车载娱乐系统、悬浮手势、屏幕触控、气体监测等方面的相关技术及专利,持续提升着其MCU技术层次。

(三)搭车全球产能扩张,投资产业链下游环节

MCU虽然属于通用型芯片,但是汽车、工业、网络通信等应用领域因其具有不同的行业标准,对工艺的要求也有较大差别。因此,国际MCU领军厂商多采取IDM的运营策略。目前,中国大陆及台湾地区的MCU设计企业基本都是Fabless的经营模式,整体实力及营收规模方面与国际领先厂商有着较大差距,因此在工艺流程环节基本不具备议价能力,产业链环节缺失;此外,申请行业认证的周期一般较长。以汽车电子用芯片为例,从前期研发到通过最终验证可能需要2-3年的时间,这与大陆及台湾半导体厂商产品快速上市的经营理念相悖。随着新能源汽车产业、智能制造产业的迅速发展,MCU的应用场景也将持续拓展,投资产业链下游的制造环节,完善针对不同应用领域的工艺技术,打造虚拟IDM集团的投资路径初步显现。

三、关注国际并购把脉市场契机

(一)密切关注全球产业界重大兼并重组

同业公司间的兼并重组多出于扩展产品线、扩大市场份额等目的,而在体量较大的并购案后,往往会出现一系列连锁的业务优化调整举措,如NXP在收购Freescale仅一个月后,便将其RF部门出售给中国建广资本;2016年6月,又宣布将分立器件及逻辑IC部门出售给建广资本为首的中国财团。无独有偶,2016年11月,中国IC设计公司华大半导体发布声明,将通过旗下的晶门科技收购微芯公司的触控技术资产;而就在今年2月份,微芯公司刚刚完成对另一家触控芯片提供商爱特梅尔(Atmel)的收购。因此,中国产业界公司及金融资本应密切关注国际IC巨头的战略层面的合纵连横,通过聘请专业的行业咨询公司等途径拆解分析并购双方的业务及产品线,以发现潜在的投资机会。

(二)重点考察下游应用优势企业

当前,全球主流MCU厂家的高端产品基本都是基于ARM或8051架构。不同于专注某一嵌入式应用场景的SoC芯片,MCU产品更强调通用性,且由于MCU芯片对集成度和工艺制程的要求相对较低,国际大厂之间基本不存在技术壁垒。在市场上的产品趋于同质化的环境下,各家MCU厂商的策略是深耕下游应用领域以取得差异化竞争优势,如NXP在智能卡领域份额较高,而瑞萨电子则在汽车电子领域优势明显。未来,随着集成电路企业势力范围的划定,一家公司通吃下游领域的可能性将微乎其微。因此,下游应用市场前景将直接决定芯片提供商的可持续发展能力。

(三)“异构”产品短时间内难以爆发

除了目前绝对主流的ARM架构和传统的8051架构,目前市面上还有基于MIPS架构的MCU产品。2015年9月,Microchip宣布将其基于新的MIPS M5150架构的PIC32MZ产品系列的时钟频率提升至200MHz。虽然在某些参数性能上,非主流架构MCU能够取得局部领先,但是由于其应用范围较窄,相关研发人员不足,产业生态基础极为薄弱。以服务器芯片领域作为对比,Power架构、MIPS架构的服务器芯片始终未能获得市场认可。IBM在中国普及Power架构的力度不可谓不大,但是目前却依然没有一家公司做出成绩。因此,在没有颠覆性的技术革新的情况下,ARM架构及8051架构MCU依然将会占据绝大部分市场份额。

围观 344

单片机、ARM、DSP这三者都可以说是CPU,那这三者有什么区别吗?

首先,CPU(中央处理器),本质就是一个集成电路,实现的功能就是从一个地方(如rom)读出一个指令,从一个地方(如ram)读出数据,然后根据指令的不同对数据做不同的处理(如相加),然后把结果存回某个地方(如ram)。不同架构的CPU会有不同的指令、不同的存取方式、不同的速度、不同的效率等差异。

然后说说单片机(通常意义所说的微控制器MCU),ARM(通常意义所说的高效能RISC),DSP(通常意义所说的通用数字信号处理器),这三个 CPU分别是针对不同的应用而产生的CPU。当然这也不是绝对的,因为ARM现在出的CPU囊括了MCU(如M0),RISC(如A8),DSP(如 M4)。

单片机实际上是微控制器MCU、ARM是高效能RISC、DSP就是数字信号处理器,那您能具体的从这三者的功能谈谈它们的控制原理吗?

微控制器MCU的目的主要是用作控制,他不需要多快的速度,如电饭锅的控制器,只需要控制发热元件的通断、信号等的开关等,但是对成本要求很严格,所以一般做得比较简单,8位的很多。

高效能的RISC,常用于一些数据处理比较多的地方,最常见的莫过于现在的消费性电子产品了,手机、pad等,目前ARM的商业模式主要是卖内核,集成到各家的SoC中间。它其实就是个通用的CPU,能干各种各样的活,和Intel的CPU一样。但是通用就有效能问题,在某些特殊场合,效能就显得没那么高了,如大量运算(譬如做FFT)的时候,这样就有DSP的用武之地了。

DSP数字信号处理器,只要是做数字信号处理的模块都可以叫做一个DSP,如视频解码的IP核。通用的数字信号处理器,如TI的TMS320C55x DSP。该CPU的长处就是在于运算,大量循环的计算,如连续1024个乘加。他的指令针对这种应用有特殊的处理,相比RISC可以更快速高效地完成这类运算。

您能结合开发案例,具体谈谈它们的主要应用场景吗?

单片机集成完整的冯诺依曼体系所规定的结构,是一个完整的计算机体系。实现特定的运算功能,应用集中在工业自动化控制等专门化需求的运算领域,大多都是工业应用上的需求,如“基于单片机设计的LED驱动电源综合测试仪”、“单片机拨号程序”等。

ARM芯片精髓在“R”,是RISC精简指令集的意思。RISC指令集根据80%的时候只用到了20%的处理器指令的状况,使用了经过精简设计的指令系统,使得整个处理器的设计可以更加简洁,功耗、体积大大缩小,所以ARM在手机、平板等智能移动设备上得到了广泛应用。如“arm的 linux内核下的手持机开发”、“ARM的linux内核LVDS显示开发”等均是基于ARM芯片的智能产品。

DSP是数字信号处理器,相较于普通计算机实现通用计算的特点,DSP只负责数字信号(视频、音频或者其他传感器获得数字信号)处理。在日常生活中,常见的DVD、蓝光播放机、数字电视机顶盒、MP4等都广泛使用了DSP。这个“基于DSP的声音控制系统开发”、“基于DSP图像处理固定区域内人数统计仪”等对于音频音质、图像像素要求较高的产品多使用DSP控制器。

来源:嵌入式精选

围观 447

摘要: 作为32位RISC 微处理器主流芯片, ARM 芯片得到长足发展和广泛应用。因而, ARM 芯片的测试需求更加强劲的同时,测试工作量在加大,测试复杂度也在增加.本文给出了基于ARMCo rte x-M3 的微处理器测试方法,该方法也可用于类似结构的微处理器测试。

作为32位RISC微处理器主流芯片,ARM芯片得到长足发展和广泛应用。因而,ARM芯片的测试需求更加强劲的同时,测试工作量在加大,测试复杂度也在增加。本文给出了基于ARM Cortex-M3的微处理器测试方法, 该方法也可用于类似结构的微处理器测试。

引言

随着半导体技术的发展,集成电路制程工艺从深亚微米发展到纳米级,晶体管集成度的大幅提高使得芯片复杂度增加,单个芯片的功能越来越强。二十世纪90年代ARM公司成立于英国剑桥,主要出售芯片设计技术的授权,采用ARM技术知识产权(I P 核)的微处理器, 即ARM微处理器, 已遍及工业控制、消费类电子产品、通信系统、网络系统、无线系统等各类产品市场,基于ARM技术的微处理器应用约占据了32 位RI S C 微处理器七成以上的市场份额,ARM芯片的广泛应用和发展也给测试带来了挑战,集成电路测试一般采用实际速度下的功能测试,但半导体技术的发展使得测试开发工程资源按几何规律增长,自动测试设备(ATE)的性能赶不上日益增加的器件I/ O 速度的发展, 同时也越来难以满足ARM等微处理器测试所用的时序信号高分辨率要求, 因而必须不断提高自动测试设备的性能,导致测试成本不断攀升。此外,因为ARM芯片的复杂度越来越高,为对其
进行功能测试,人工编写测试向量的工作量是极其巨大的,实际上一个ARM芯片测试向量的手工编写工作量可能达到数十人年甚至更多。本文针对ARM Cortex内核的工作原理,提出了一种高效的测试向量产生方法,并在BC3192测试系统上实现了对ARM Cortex-M3内核微处理器的测试。

1、微处理器测试方法

集成电路测试主要包括功能测试和直流参数的测试,微处理器的测试也包括功能和直流参数测试两项内容.微处理器包含丰富的指令集,而且微处理器种类繁多,不同微处理器之间很难有统一的测试规范。为了使测试具有通用性,我们有必要对微处理器的测试建立一个统一的模型, 如图1所示。芯片测试系统为被测微处理器提供电源和时钟, 并能够模拟微处理器的仿真通信接口来控制微处理器工作 同时配合仿真时序施加激励向量, 从而达到测试目的。

按微处理器仿真通信接口大致分两类, 一类是具有仿真接口(如JTAG)的微处理器,一类是没有仿真接口的微处理器,对于配备类似JTAG接口的微处理器,测试仪通过仿真一个JTAG接口对被测芯片进行功能或参数测试,没有配备仿真调试接口的芯片,可以根据芯片的外部接口和引导方式选择测试模型。

1.1 跟踪调试模式

大多数的微处理器都提供了跟踪调试接口, 例如最常用的JTAG接口,Cortex-M3内核除了支持JTAG调试外, 还提供了专门的指令追踪单元(ITM) . JTAG ( Joint Test Action Group,联合测试行动小组) 是一种国际标准测试协议(IEEE 1149.1 兼容), 主要用于芯片内部测试。现在多数的高级器件都支持JTAG协议,如ARM.DSP. FPGA 器件等,标准的JTAG接口是4线:TMS.TCK.TDI. TDO,分别为模式选择、时钟、 数据输入和数据输出线。JTAG最初是用来对芯片进行测试的,因此使用JTAG接口测试微处理器具有很多优点。

用JTAG接口对微处理器进行仿真测试,是通过测试系统用测试矢量模拟一个JT A G 接口实现对微处理器的仿真控制, 其核心是状态机的模拟,图2所示为测试系统使用的JTAGTAP控制器的状态转换图。

通过测试仪来模拟状态转换就可以实现JTAG通信控制。

JTAG在物理层和数据链路层具有统一的规范,但针对不同的芯片仿真测试协议可能略有差异。为了使测试模型具有通用性,我们对测试模型的JTAG 接口做了一个抽象层,如图3所示。图中抽象层将类型多样的控制函数转化成芯片能识别的数据流来控制被测芯片的工作状态。

1.2 引导模式/FLASH编程模式

针对没有配备仿真调试接口的微处理器,可以利用引导功能实现对微处理器的测试。因没有配备仿真调试功能,不能实现仿真测试。因此针对这一类的微处理器测试中,需要在芯片中加载测试代码。大多数的微处理器芯片都具有上电引导功能,可以利用引导功能将测试代码加载到微处理器中,进而实现功能和直流参数测试。而对于内部配备FLASH的微处理器可以先将测试代码下载到片内FLASH中,以实现对微处理器的功能和参数测试。为了实现对微处理器的测试控制,通常,测试系统利用微处理器的片上通信接口与片上测试程序通信,互相配合完成功能和参数测试.

2、ARM Cortex-M3的测试

2.1 ARM Cortex-M3内核简介

ARM Cortex-M系列微处理器主要用于低成本和低功耗领域,如智能测量、人机接口设备、汽车和工业控制系统、大型家用电器、消费性产品和医疗器械等领域。图4为Cortex-M系列微处理器的简要框图。

ARM Cortex-M3内核搭载了若干种调试相关的特性。

最主要的就是程序执行控制,包括停机(halting)、单步执行(stepping) 、指令断点、数据观察点、寄存器和存储器访问、性能速写(profiling)以及各种跟踪机制。Cortex-M3的调试系统基于ARM最新的Core Sight 架构,虽然内核本身不再含有JT A G 接口,但是提供了调试访问接口(DAP)的总线接口。通过DAP可以访问芯片的寄存器,也可以访问系统存储器,并且可以在内核运行的时候访问,这就对芯片的测试提供了接口支持。集成 Cortex-M3内核的微处理器一般提供一个调试端口(DP)与DAP相连,目前可用的调试端口包括SWJ‐DP,既支持传统的JTAG调试,也支持新的串行线调试协议。Cortex-M3内核还能挂载一个嵌入式跟踪宏单元(ETM)。 ETM 可以不断地发出跟踪信息,这些信息通过跟踪端口接口单元(TPIU)送到内核的外部,对于外部集成再跟踪信息分析仪的ARM芯片, 可把TI PU输出的已执行指令信息捕捉到,并且送给芯片测试系统。

2. 2 测试向量生成

用自动测试设备(A T E )测试AR M 芯片是一种传统的测试技术,其优点是可以灵活编制测试向量,专注于应用相关的功能模块和参数。但是由于ARM芯片的功能与应用有相当的复杂性,因此对测试系统所具有的能力也要求较高。这就要求测试设备本身必须要具备测试各种不同功能模块的能力, 包含对逻辑、模拟、内存、高速或高频电路的测试能力等等。同时测试系统最好是每个测试通道都有自己的独立测试能力,避免采用资源共享的方式,以便能够灵活运用在各种不同的测试功能上。所以常规的AR M 芯片测试设备往往要求相当高的配置才能应对测试需求。

测试的含义非常广泛, 就ARM芯片测试而言,可以定义多种类型的测试,不同类型的测试需要产生不同类型的测试向量。而测试向量生成的方法,虽然可以人工编制, 但多数情况需要由测试向量生成工具(ATPG) 生成, 才能产生比较完备的测试集。本文介绍的ARM芯片测试方法,借助对应的ARM芯片开发工具产生测试代码,再由专用的测试向量生成工具生成测试向量.这种方法的优点是能针对ARM芯片应用开发人员关心的测试集合产生测试向量,因而比较高效,测试成本也能控制在比较低的水平上。此外,可以借助大量的ARM芯片应用软件来转码, 能大幅减少工作量。缺点是不容易用算法来实现自动生成完备的测试代码。

图5为ARM芯片测试向量生成器。测试代码一般可以从ARM芯片开发例程中获得, 测试向量通过编译器编译成ARM芯片可执行代码, 然后与激励向量和期望向量混合生成完整的ARM芯片测试向量。ARM芯片测试向量生成工具通过时间参数来确定测试代码。激励向量与期望向量之间的时序关系,ARM芯片时间参数可从芯片手册中获得.测试向量生成后, 通过BC3192 集成开发环境下载到测试系统图形卡中,启动测试程序,激励向量依序施加到被测ARM 芯片的输入端口,同时对输出端进行监测比较获得测试结果.综上,测试向量的产生是ARM芯片测试的核心,本文所述测试向量生成器通过输入ARM 芯片可执行代码和芯片时间参数来产生测试逻辑,具有易用.高效的特点,现已用于多个ARM Cortex 内核微处理器的测试中。

3、结论

本文通过分析ARM Cortex-M3内核的工作原理和跟踪调试方法, 利用通用的ARM集成开发环境,结合BC3192 V50测试系统的测试向量生成器,能够快速高效产生基于ARM Cortex- M3内核的微处理器测试向量,进而完成功能和直流参数测试,本案所述方法同样适于其他微处理器的测试。

围观 521

要了解arm中断系统,GIC绝对不容错过,好先付上一张大家都能百度到的图片。

GIC为中断控制器,不要和ARM core的中断搞混了,这些中断都是连接到ARM core的IRQ或者FIQ上的。

++和*可以先不用考虑,用于安全模式。

GIC可以用于单核多核系统,这时候要抛开单片机的简单中断了,从图上看有SGI(Software-generated interrupt)、PPI(Private peripheral interrupt )、SPI(Shared peripheral interrupt),顾名思义SGI为软件可以触发的中断,经常用于各个core之间的通信,PPI为每个core的私有外设中断,SPI为各个core公用的中断。

SGI:0~15
PPI:16-31
SPI:32~1019

follow me

通常把GIC分成两个部分,分发器(Distributor)和CPU接口。

分发器其实应该叫汇聚器,在IC的后端设计中,layout会把各个模块引过来的中断线混接到GIC上(就是上面说的三种中断),然后把混聚合的中断接到CPU的irq线上。这样core就有触觉了。

模型

既然是中断控制器,必不可少的是总的中断使能,各个子中断使能,优先级排序,在多核系统中对于SGI还可以指定中断发往哪个CPU core。

如何才能保证中断不丢失呢?啊对了就是pending,distributor会把收集来的中断,先缓存一下,依次交给CPU处理,cpu读取一个中断,其实就是读取一个寄存器,只不过这个寄存器存放的是中断号,这时候中断的状态由pending转为active,cpu处理完了以后,将中断号写入GIC,告诉GIC我处理完了,你可以歇歇了。

来源:嵌入式ARM

围观 1201

1、理解Thumb-2
  
首先,让我们从一个看起来并不明显的起点开始讨论节能技术—指令集。所有Cortex-M CPU都使用Thumb-2指令集,它融合了32位ARM指令集和16位Thumb指令集,并且为原始性能和整体代码大小提供了灵活的解决方案。在Cortex-M内核上一个典型的Thumb-2应用程序与完全采用ARM指令完成的相同功能应用程序相比,代码大小减小到25%之内,而执行效率达到90%(当针对运行时间进行优化后)。
  
Thumb-2中包含了许多功能强大的指令,能够有效减少基础运算所需的时钟周期数。减少时钟周期数意味着现在你能够以更少的CPU功耗完成手头的工作。例如,假设要完成一个16位乘法运算(如图1所示)。在一个8位8051内核的MCU上执行这个运算将需要48个时钟周期,并占用48字节的Flash存储空间。使用一个16位内核的MCU(例如C166)执行相同的运算需要8个时钟周期,并占用8字节的Flash存储空间。相比之下,在使用Thumb-2指令集的Cortex-M3内核中完成相同运算仅仅需要1个时钟周期,并占用2字节的Flash存储空间。Cortex-M3内核能够通过使用更少时钟周期完成相同任务,节省了能耗;同时也能够通过占用极少的Flash存储空间,减少Flash存储器访问次数,实现最终能耗节省的目标(除此之外,更小的应用代码也使得系统可以选择更小的Flash存储器,进一步降低整体系统功耗)。

2、中断控制器节能技术
  
Cortex-M架构中的中断控制器(Nested Vectored Interrupt Controller or NVIC)在降低CPU功耗方面也起着关键作用。以前的ARM7-TDMI需要“多达”42个时钟周期,Cortex-M3 NVIC从中断请求发生到执行中断处理代码仅需要12个时钟周期的转换时间,这显然提高了CPU执行效率,降低了CPU时间浪费。除了更快进入中断处理程序之外,NVIC也使得中断之间切换更加高效。
  
在ARM7-TDMI内核实现中,需要先花费数个时钟周期从中断处理程序返回主程序,然后再进入到下一个中断处理程序中,中断服务程序之间的“入栈和出栈(push-and-pop)”操作就要消耗多达42个时钟周期。而Cortex-M NVIC采用更有效的方法实现相同任务,被称为“末尾连锁(tail-chaining)”。这种方法使用仅需6个时钟周期处理就能得到允许,进入下一个中断服务程序的所需信息。采用末尾连锁,不需要进行完整的入栈和出栈循环,这使得管理中断过程所需的时钟周期数减少65%(如图2所示)。
  
3、存储器节能注意事项
  
存储器接口和存储器加速器能够明显影响CPU功耗。代码中的分支和跳转可能会对为CPU提供指令的流水线产生刷新影响,在这种情况下CPU需要延迟几个时钟周期以等待流水线重新完成填充。在Cortex-M3或Cortex-M4内核中,CPU配备了一条3级流水线。刷新整条流水线将导致CPU延迟3个时钟周期,如果有Flash存储器等待状态发生,时间会更长,以便完成重新填充过程。这些延迟完全浪费功耗,没有任何功用。为了帮助减少延迟,Cortex-M3和M4内核包括一个被称为推测取指(Speculative Fetch)的功能,即它在流水线中对分支进行取指的同时也取指可能的分支目标。如果可能的分支目标命中,那么推测取指能够把延迟降低到1个时钟周期。虽然这个特性是有用的,但显然不够,许多Cortex-M产品供应商都增加了自己的IP以增强这个能力。
  
4、M0+内核探究
  
对功耗敏感型应用来说每个nano-watt都很重要,Cortex-M0+内核是一个极好的选择。M0+基于Von-Neumann架构(而Cortex-M3和Cortex-M4内核是Harvard结构),这意味着它具有更少的门电路数量实现更低的整体功耗,并且仅仅损失极小的性能(Cortex-M0+的0.93DMIPS/MHz对比Cortex-M3/M4的1.25DMIPS/MHz)。它也使用Thumb-2指令集的更小子集(如图3所示)。几乎所有的指令都有16位的操作码(52x16位操作码和7x32位操作码;数据操作都是32位的),这使得它可以实现一些令人感兴趣的功能选项以降低CPU功耗。

节能性功能选项首要措施就是减少Flash存储访问次数。一个主要的16位指令集意味着你可以交替时钟周期访问Flash存储器(如图4所示),并且可以在每一次Flash存储访问中为流水线获取两条指令。假设你在存储器中有两条指令并对齐成一个32位字;在指令没有对齐的情况下,Cortex-M0+将禁止剩余的一半总线以节省每一点能耗。

此外,Cortex-M0+内核也可以通过减少到两级流水线而降低功耗。在通常的流水线处理器中,下一条指令在CPU执行当前指令时被取出。如果程序产生分支,并且不能使用下一条取出的指令,那么被用于取指(分支影子缓冲器)的功耗就被浪费了。在两级流水线中,这个分支影子缓冲器缩小了,因此能耗得以节省(虽然仅有少量),这也意味着在发生流水线刷新时,仅需要不到一个时钟周期就能重新填充流水线(如图5所示)。

5、利用GPIO端口节能
  
Cortex-M0+内核提供节能特性的另一个地方是它的高速GPIO端口。在Cortex-M3和Cortex-M4内核中,反转一位或GPIO端口的过程是“读-修改-写”一个32位寄存器。虽然Cortex-M0+也可以使用这个方法,但是它有一个专用的32位宽I/O端口,可以采用单时钟周期访问GPIO,使得它能够高效的反位/引脚反转。注意:在Cortex-M0+上,这是一个可选的特性,并不是所有供应商都具备了这个有用的GPIO特性。
  
6、CPU的休眠模式
  
减少CPU功耗的最有效方法之一是关闭CPU自身。在Cortex-M架构中有多种不同的休眠模式,每一种都在功耗和再次执行代码的启动时间之间进行了折中考虑(如图6所示)。它也能够让CPU在完成中断服务后自动进入某个休眠模式,而不需要执行任何代码去完成这个工作。这种方法可以为那些常见于超低功耗应用中的任务节省CPU时钟周期。
  
在深度睡眠模式下,也可以使用唤醒中断控制器(WIC)来减轻NVIC负担。在使用WIC时,为实现低功耗模式下外部中断唤醒CPU,无需为NVIC提供时钟。
  
7、自主型外设可减轻CPU负荷
  
自主型片上外设具有降低功耗的优点。大多数MCU供应商已经在本身产品架构中实现了外设之间的自主型交互。自主型外设能够实现十分复杂的外设动作链(触发而不是资料传输),同时保持CPU处于休眠状态。例如使用有的MCU上的PRS功能,应用能够被配置为在CPU休眠的低功耗模式下,当片上比较器检测电压值超过了其预设的门限值,则触发一个定时器去开始减数。当定时器到达0时,触发DAC去开始输出 — 所有事件发生过程中CPU可以一直保持休眠状态。
  
自动进行如此复杂的交互,这使得外设之间能够完成大量工作而无需CPU参与。此外,带有内建智能的外设(例如传感器接口或脉冲计数器)能够通过预设的条件用于中断唤醒CPU,例如在累积10个脉冲时中断唤醒CPU。在这个例子中,当CPU被特定中断唤醒时,它明确知道需要做什么,而不需要检查计数器或寄存器以判别发生了什么,因此可以节省相当多的时钟周期,更好的完成其他重要任务。
  
我们已经介绍了多种易于实现的减轻Cortex-M设备上CPU功耗的方法。当然,还有其他因素影响功耗,例如用于加工设备的处理工艺或者用于存储应用代码的存储器技术。工艺和存储技术能够显著影响运行时功耗和低功耗模式下的漏电,因此也应当纳入嵌入式开发人员的整体功耗设计考虑之中。

来源:网络(本文仅供学习参考使用,版权归原作者所有)

围观 391

页面

订阅 RSS - ARM