Trustzone可以追溯到十多年前,ARMv7公布的时候就有了,可惜一直没有什么实际应用。直到近几年开始,才真正的有厂商开始把这个方案大规模用于芯片里。目前看到的主要有四个应用领域:
第一是无人机芯片,大疆已经走在了最前面,第二名连影子都没看见。无人机上几大应用,图像传输,图像处理,识别,飞控,存储,每一块都有安全的诉求。利用Trustzone可以做到,在芯片里流动的数据,每一步都在安全系统的控制之下,哪怕飞机被人抢去,都需要极大的代价才能拿到闪存以及内存里面的数据。如果以后上安卓或者其他操作系统,哪怕软件系统被黑客攻破,数据和控制还是安全的。最后,如果国家或者行业出台政策,要求实施禁飞区,那么哪怕无人机的主人自己去修改闪存和软件,都可以被强制接管。这些功能必须在芯片设计阶段就考虑到,大疆在这方面的眼光确实比别人长远。
第二是DRM,数字版权管理,也就是内容保护。如果国内用户要在手机上看最新好莱坞大片,那么播放设备必须经过一个认证,这个认证可以用trustzone来实现。国内已经在积极的推动这个事情,估计再过一段时间就可以实现了。当然,这是一把双刃剑,肯定也有用户反而不愿买支持DRM的设备,而去看盗版。用了Trustzone本身并不限制盗版,只不过多了一个看好莱坞大片的渠道。
第三是支付。把Trustzone用于支付支付在技术上没有困难,对芯片性能要求也不高,难的是把各个利益方摆平。银行和运营商想把支付控制权握在自己手里,所以会去大力推广NFC,会去和苹果合作。而手机支付软件厂商,比如支付宝和微信,想通过和手机芯片和硬件厂商,把所有功能都自己的平台上实现。目前的支付大多数还是基于软件和远端密钥验证。如果有人把手机破解,那还是可以读取到支付图层的密码的。而trustzone做的,就是硬件上杜绝这类情况。
第四是物联网。物联网的安全有好几种做法,可以把安全检测放在服务器端或者末端芯片上。末端通常是一个MCU加上传感器和互联模块,面积较小。用硬件trustzone实现的话,加解密和密钥管理等功能会需要额外内模块,可能比MCU本身都大,成本太高。但如果是附加值高的芯片就没什么问题。
让我们从技术层面来定义Trustzone到底能做什么:
1、防止操作系统被攻破后关键数据泄密,关键数据存放在特定内存区域,而那块区域,只有安全操作系统才有可能读到。
2、防止通过JTAG等调试接口读到寄存器,缓存,内存或者闪存数据。
3、从芯片制造开始,最初的密钥可以用芯片熔丝实现,往后启动的每一步都需要最高特权级和密钥验证,建立信任链,杜绝软件被替换或者被恶意读取。
4、防止边带攻击,比如量取内存颗粒的信号猜测数据,制造故障让检验模块停止工作,替换外围器件,输入特定数据确定电磁信号特征,打开芯片直接量内部信号线等。
上一个典型的ARM SoC内部结构,在这个结构里,Trustzone做的事情是保护数据在芯片内部的安全,不允许非授权的访问,哪怕这个访问来自CPU。初看有些复杂,不过我们可以拆开慢慢分析。从硬件角度开始比软件更清楚些,说不定哪天过认证的时候需要答辩,从头到尾解释系统安全设计。
首先,按照Trustzone的划分,一个芯片内被划分为安全世界和非安全世界。上图中,中间黑色的部分是总线,总线上面是主设备,下面是从设备(主设备中的缓存是例外,这个以后说)。读写请求总是从主设备发往从设备的。
作为从设备,区分它是不是属于安全世界相对简单。如果一个从设备不存在成块的空间映射,比如I2C或者PWM,那么我只要在总线访问它的时候,额外的加入一个管脚(取名为PROT),就可以告诉它本次访问是不是来自安全世界。如果从设备本身是完全属于被保护的安全世界,不接受非安全的访问,那么只要简单的拒绝,返回错误或者无意义数据即可。同样,如果从设备本身处于非安全世界,那么对于安全和非安全访问,都可以返回正确数据。还有,从设备所处于的世界,是可以动态配置的,且动态配置本身需要处在安全世界,这个以后讨论。
对于块设备,包括闪存,sram和内存等,它们的某些地址块需要处于安全世界,其他的处于非安全世界。为了实现这一点,就需要在它们前面插入一个检验模块(例如图中左方,DDR上面的TZC400),来判断某个地址是不是能被访问。当地址被送到这个检验模块,模块会结合PROT管脚去查表,看看本次访问是不是被允许,然后做相应措施。表本身和之前的动态配置一样,必须是在安全世界里面配置的。
至此,从设备就分析完了,是不是感觉特别简单?还有些细节,在把主设备也讲完后,我们会从系统角度来关注。
对于一般主设备,不考虑自带的缓存时,其实和从设备也差不多,也分为安全和非安全,可以在安全世界动态配置。配置完成后,这些主设备会按照自己所处的世界,驱动PROT管脚和地址来访问从设备,得到相应返回。不过这里的一般主设备不包括中断控制器,系统MMU,调试模块和处理器,接下来对这些例外模块进行具体分析。
首先是处理器。
在上图情况,接了CCI总线后,处理器接在缓存一致性端口ACE上(不明白的请参考以前的文章),它的缓存是可以被别人访问的,并且这个访问,是从主设备到主设备(当然,在处理器内部是从端口),不会经过总线送到内存,也不会经过检验模块TZC400。这时就有个漏洞,通过操纵一个非安全世界的模块,比如上图的橙色主设备,假装去读一个被安全世界保护的内存地址。这个地址本来存在于内存,被TZC400保护,可是由于总线的监听功能,读请求有可能被发往处理器缓存,从而绕过保护。
为了防止这种情况,处理器在所有的页表和缓存都做了特殊设计,加了一个标志位,标志本缓存行是否属于安全世界。如果别的非安全世界主设备来监听安全世界缓存行,由于安全位不同,处理器会认为这是两个不同地址,哪怕它们的地址一致,返回缓存未命中。这样,就不会把数据泄漏。
有人会问,这个标志位来源于页表,改了页表中的这一位不就可以访问了?其实不行。因为安全世界页表位于被保护的内存区域或者缓存,就算破解了操作系统也无法访问。
又有人会说,那改了非安全世界的页表中安全位,并伪造一个安全世界的地址,岂不是可以让CPU模拟出一个访问安全世界的传输,送到总线和TZC400?TZC400或者对端缓存一看地址和PROT管脚都是符合要求的,应该就会返回保密数据吧?想法是不错,可是当CPU位于非安全世界时,它会忽略页表中的安全位,所以不可能发出PROT为安全的传输。所以,我们可以对这点放心。
以上是别的主设备访问处理器,那如果处理器本身处于非安全世界,有没有可能访问其他主设备的安全缓存?当然有。所以不要把其他主设备接到ACE端口,以免被监听,一般主设备是不会做缓存上的安全与非安全区分的。接到ACE-Lite接口无所谓,反正设计上就无法被读取缓存数据。
除此之外,还存在一个例外,就是GPU。在最新的ARM G71图形处理器上,是支持双向硬件一致性的。也就是说,GPU也可以被监听缓存的。为了简化设计,图形处理器被设成永远处于非安全世界,CPU尽管读,不在乎,它使用另外一种机制来保护数据,以后介绍。
对处理器缓存熟悉的人可能会想到用跨缓存行的非安全变量来访问被保护的数据。没用的,处理器设计者早就想到这点,要不就是非对齐访问异常(包含exclusive access的时候),要不就不会给你数据,具体到每个处理器有所不同。
还有一个漏洞没堵上,那就是缓存维护,TLB和分支预测操作。ACE端口包含了DVM操作来维护它们,安全性如何保障?同样的,地址中也有安全和非安全位。不过话说回来,DVM操作无非就是无效化某些缓存,分支预测和TLB项,不存在安全数据被读取,TLB被篡改的情况。
到这里可能你会觉得有点晕,不少漏洞需要堵。我们可以回顾一下,需要记住的是各种缓存操作,通过安全标志位保护,避免漏洞。对比处理器设计者所要考虑的情况,这点漏洞不值一提。
杜绝了缓存漏洞后,还有别的隐患,比如仿真器。调试模块可以被用来访问各个从设备,也可以访问和影响处理器内部资源。从设备侧的防护很容易,把调试模块当成一般的主设备处理就行。处理器内部的寄存器,缓存等资源,需要处理器从设计开始,就要为所有资源定义安全级别。被保护的资源对于来自调试模块的未授权访问会被禁止。只有通过安全启动链,安全世界的软件才能打开寄存器SDER,从而允许外部仿真器影响被保护的安全世界资源和处理器运行状态,访问被保护的资源。
那处理器内部的资源是怎么划分的?以ARMv8举例,如下图:
这幅图相信很多人都看到过。ARMv8的处理器被分成四个特权等级,通常EL0跑用户态程序,EL1内核,EL2虚拟机。EL0-1分为安全与非安全,EL3只有安全世界,EL2不区分,两个世界的切换必须经过EL3。我们谈到的处理器内部资源,包括寄存器,缓存,异常,MMU,很多都会分组,组之间看不到或者低级不可访问高级,从而保证安全。没有分组的,比如通用寄存器,就需要软件来维护,防止非安全世界的看到安全世界的数据。
引起安全切换的会有几种可能:中断和SMC指令。中断分为如下几种情况:
非安全世界下,在EL1或者EL0,当一个非安全中断来临,那么系统没必要切换安全状态,作为一般中断处理,切到EL1即可。
非安全世界下,在EL1或者EL0,当一个安全中断来临,那么系统必须先切到EL3,不然就没法做安全世界切换。
安全世界下,在EL1或者EL0,当一个安全中断来临,没必要做安全世界切换,作为一般中断处理,切到EL1即可。
安全世界下,在EL1或者EL0,当一个非安全中断来临,那么系统必须先切到EL3,不然就没法做安全世界切换。
当跳到EL3的Secure Monitor程序处理上下文切换时,IRQ/FIQ中断屏蔽位不起作用,哪怕打开了也不会触发,直到Secure Monitor处理完,向下跳到相应的安全世界EL1时,才会让原来的中断屏蔽恢复,从而触发中断。此时处理中断的是安全世界的中断程序,处于被保护的内存区域,杜绝非安全世界的程序篡改。
那怎样触发安全与非安全中断呢?这在中断控制器里有定义,早年的定义中只有FIQ可以作为安全中断,后期的可配置,并且,相应的安全世界配置寄存器只有在处理器的安全世界中才可以访问。
SMC指令和中断触发类似,只不过软件就可以触发,切换到Secure Monitor。这里,非安全软件可以提出触发请求,在通用寄存器填入参数,却无法控制安全世界的处理程序做什么,也依然看不到被保护内存数据。所以防止数据泄密的任务就靠安全操作系统了。
至此,安全启动后的基本硬件防护已经完成,但如果你以为这就是Trustzone,那就错了,精彩的在后面。
我们可以把Trustzone放到实际应用里面看看是不是可行。以DRM举例,如下图:
在播放授权 视频的时候,视频流来自网络或者闪存,它们不需要在安全世界,因为数据本身就是加密过的。然后被解密并放到被保护内存,等待解码。上图中,密码保护和解密是通过安全硬件模块Crypto来完成的,这个我们以后再分析,先处理解密完成后的视频流。此时有两种方案:
第一中,非常自然的,可以把所有的过程在安全世界完成,那么图形处理器,视频处理器和显示模块必须都工作在安全世界,能访问安全世界的数据,才能完成工作。可这样就带来一个问题,那就是驱动。我们知道,图形处理器的驱动是非常复杂的,并且手机上只存在Linux和windows下的图形驱动,和OpenGL ES/DirectX配合。
而安全世界的操作系统(TEE,Trusted Execution Environment)是完全不兼容的安全系统,甚至有的都不支持SMP, 完全不存在可能性把图形驱动移植上去,也没有任何意义。这样的话,就只能把图形处理器从流程中挖掉,只留下相对简单也不需要生态的视频和显示模块的驱动,工作在安全世界,而GPU的输出送到显示模块,由显示模块进行混合。
这是一种可行的方案,也确实有公司这么做。但是从长远看,图形处理器总是会参与到这个过程的,别的不说,只说VR和AR流行以后,要是虚拟个显示屏出来,上面播放视频,然后放在一个虚拟出的房间,那他们之间肯定是要进行互动的,此时显示模块就需要把视频图层送回GPU进行运算。如果GPU不在安全世界,那就会造成泄密。
为了解决上述问题,有了第二种解决方案,称作TZMP1(Trustzone Media Protection 1),引入了保护世界的概念。
保护世界工作于非安全世界,这样才能兼容图形驱动。那安全怎么办?它需要添加四根管脚NSAID,类似于安全世界的PROT信号,只不过做了更细的划分,使得GPU/视频/显示模块要访问被保护内存时,预先定义好了权限。而这个权限的设置,也是通过前文的TZC400来实现的,在安全启动链中就完成。CPU的权限通常是0,也就是最低。而显示控制器权限是只读。
这样一来,我们之前的老问题,恶意缓存监听,又回来了。在新的A73和G71加CCI500/550总线系统里,可以支持双向硬件一致性。这意味着GPU也能被监听。这下大家都在非安全世界,缓存里的安全位不起作用,怎么解决?这需要总线的配合。
ARM的总线CCI500/550,有一个保护模式,打开后,不光支持上文的NSAID管脚,还可以在监听的时候,把监听传输替换成缓存行无效化命令,直接让目标把相应缓存行无效化。这样一来,数据还是需要从内存读取,保证安全。并且这个过程对软件透明,无需做任何改动。
可是此时,辛辛苦苦设计的硬件一致性就完全起不到加速作用了,性能受到影响。好在运行OpenGL ES的时候,GPU是不会发出共享传输的,CPU也不会没事去监听GPU的数据。而下一代的图形接口Vulkan,会开始使用GPU双向一致性,那时候会有影响。还有一点不利的是,如果同时运行OpenCL和DRM,OpenCL也用不上双向硬件一致性,必须重启系统切换到非保护模式才行。
还有,在实际使用中,现有的TZC400作为内存保护模块,有几个致命的缺陷。
第一,它的配置只能在启动时完成,无法动态改变,也就是说,一旦某块内存给了安全世界,就无法再被非安全世界的操作系统使用,哪怕它是空闲的。在4K视频播放时,需要分配几百兆内存,还不止一块。
如果一直被占着,这对于4GB内存手机来说是个沉重的负担。怎么解决?只能改成动态配置。此时,如果内存不够了,非安全操作系统提请求给安全系统,让它把暂时不用的物理内存设到非保护内存区,并定个时间收回。不过这样一来内存分配机制就复杂了,说不定还得改内核,很危险。
如果忽视这点,继续往下走,还会遇到第二个问题。TZC400和它的改进版最多只能支持最小颗粒度为2MB的内存块管理。为什么不弄细些呢?很简单,如果设成4KB,和系统页大小一致,那么4GB的物理内存就需要一百万条目来管理。如果做成片上内存,比二级缓存还大,不现实。
而做内存映射,就和MMU一样了,经过CPU的MMU后,数据访问还要再穿越一次MMU,延迟显然大。此外,这一层的MMU无法利用一二级缓存放页表,效率极低。如果继续保持2MB的颗粒,那么在分配内存的时候,很快就会因为块太大而用完。就算使用了上一节的方法,问题也没法很好解决。这就是TZMP2V1。
在这种情况下,第三种基于虚拟机的方案就出现了。不过这个方案基本上推翻了Trustzone最初的设计意图,我们来看下图:
在这里,作为内存保护的TZC400完全移除,而系统MMU加了进来。内存保护怎么做?靠物理地址重映射。先看处理器。在启动链中,从EL3向EL2跳的过程时,就定义好保护内存,并且EL2,也就是虚拟机的页表存放于保护内存,EL1的安全页也同样放在保护内存。
这样,当处理器进入到EL1,哪怕通过篡改EL1非安全页表的安全位,也最终会被映射到它所不能访问的安全内存,从而起到保护作用。同样的,给处于非安全世界的控制器也加上系统MMU,让设备虚拟化,同样可以控制安全。这就是TZMP2V2。有了系统MMU,页表可以做成4KB大小了,也不用担心CPU那里穿越两次MMU。这时候,也不用担心恶意监听缓存,因为所有穿过二级MMU的访问里,安全位都是经过检验的的。
但是,不看别的,光是为设备加入这些系统MMU,就会增加很多面积。还有,光加MMU不够,还要加入系统的三级甚至四级缓存,才能让MMU效率更高,不然延迟太大。当然,如果设备使用的页表并不很多,可以对MMU简化,比如增大最小颗粒度,减少映射范围,直接使用片内内存。这需要系统设计者来做均衡。对于GPU来说,要支持双向一致性,还得考虑让监听传输通过MMU,不然功能就出问题了。
如果使用了TZMP2V2,那么虚拟化就变成了一个切实需求。然后会发现,ARM的中断和设备的虚拟化还很不完善。接下来我从硬件角度解释下虚拟化。
说到虚拟化,先要解释系统MMU。
如上图所示,系统MMU其实很简单,就是个二层地址转换。第一层,虚地址到实地址,第二层,实地址到物理地址。请注意,没有第二层转换时,实地址等同于物理地址。这个模块既可以两层都打开,也可以只开一层,看情况而定。
上图比较清楚的显示了一层映射的过程。其中,设备发出的虚地址请求,会先经过TLB,它里面存了以前访问过的页表项,如果有,就直接返回,没有就往下走到第二步table walk。
第二步里,MMU会按照预设的多级基址寄存器,一级级访问到最终页表。如果MMU位于CPU内,那table walk过程中每次访问的基址和表项,都可以存放于缓存中,大大提高效率。如果在设备上,只有内建的TLB表项,后面没有缓存,那未命中TLB的都是访问DDR,效率自然下降。
所以CPU和GPU等经常访存的设备,都是自带第一层MMU和缓存。而对于没有内部MMU,切换页表又不是很频繁的设备,比如DMA控制器,可以在下面挂第一层MMU,此时驱动就简单了,直接把应用程序看到的虚地址给DMA的寄存器就行,MMU会自己按照基地址去查找相应页表并翻译,把实地址送到总线。不然,驱动还要自己查找实地址再写入寄存器。
我们前面说过,在TZMP1和TZMP2v1中,内存保护是靠TZC400来完成的。而到了TZMP2v2,取消了TZC400,这时靠虚拟化的二层地址映射。
二层映射的过程和一层映射基本一样,不再详述,但是性能问题会被放大。假设在一层中,经过四级基址查到最终页,而在二层中,这每一级的基址查找,又会引入新的四级基址访问。所以至少要经过4x4+4=20次访存,才能确定物理地址。如果没有缓存的帮助,效率会非常低。
其他可行的办法是减少基址级数,比如linux只用了三级页表,但即使如此,也需要3x3+3=12次查找。在包含缓存的ARM CPU上,虚拟机的效率可以做到80%以上。而二层MMU应用于设备实现设备虚拟化的时候,就需要小心设计了。
有了系统MMU,我们就有了全芯片虚拟化的基础。那在对系统性能和成本做完平衡,采取合适的系统MMU设计之后,是不是就可以实现虚拟化,并且靠虚拟化实现安全了?没那么容易,还有其它问题需要考虑。
虚拟化脱胎于仿真器,就是在一个平台上模拟出另一个平台。在指令集相同的时候,没有必要翻译每一条指令,可以让指令直接被硬件执行,这样指令的效率算是得到了解决。当然,对于某些特殊指令和寄存器访问,还是需要hypervisor处理的。接着第二个问题,访存。
我们前面解释过,对CPU来说,高效的虚拟化访存,就是让指令高效的经过两层翻译,而不是每次访存都需要触发虚拟机EL2的异常,切到Hypervisor,再得到最终物理地址。这一点在没有缺页异常的时候,ARM的虚拟化也已经做到了,而有缺页异常时还是需要Hypervisor处理。再接着是设备访存虚拟化,有了系统MMU,也可以高效做到。再就是处理器和设备中断虚拟化。
最后,设备的虚拟化需要管理,那设备本身需要支持虚拟设备号和虚拟中断号。更多内容请期待。
Trustzone可以追溯到十多年前,ARMv7公布的时候就有了,可惜一直没有什么实际应用。直到近几年开始,才真正的有厂商开始把这个方案大规模用于芯片里。目前看到的主要有四个应用领域:
第一是无人机芯片,大疆已经走在了最前面,第二名连影子都没看见。无人机上几大应用,图像传输,图像处理,识别,飞控,存储,每一块都有安全的诉求。利用Trustzone可以做到,在芯片里流动的数据,每一步都在安全系统的控制之下,哪怕飞机被人抢去,都需要极大的代价才能拿到闪存以及内存里面的数据。如果以后上安卓或者其他操作系统,哪怕软件系统被黑客攻破,数据和控制还是安全的。最后,如果国家或者行业出台政策,要求实施禁飞区,那么哪怕无人机的主人自己去修改闪存和软件,都可以被强制接管。这些功能必须在芯片设计阶段就考虑到,大疆在这方面的眼光确实比别人长远。
第二是DRM,数字版权管理,也就是内容保护。如果国内用户要在手机上看最新好莱坞大片,那么播放设备必须经过一个认证,这个认证可以用trustzone来实现。国内已经在积极的推动这个事情,估计再过一段时间就可以实现了。当然,这是一把双刃剑,肯定也有用户反而不愿买支持DRM的设备,而去看盗版。用了Trustzone本身并不限制盗版,只不过多了一个看好莱坞大片的渠道。
第三是支付。把Trustzone用于支付支付在技术上没有困难,对芯片性能要求也不高,难的是把各个利益方摆平。银行和运营商想把支付控制权握在自己手里,所以会去大力推广NFC,会去和苹果合作。而手机支付软件厂商,比如支付宝和微信,想通过和手机芯片和硬件厂商,把所有功能都自己的平台上实现。目前的支付大多数还是基于软件和远端密钥验证。如果有人把手机破解,那还是可以读取到支付图层的密码的。而trustzone做的,就是硬件上杜绝这类情况。
第四是物联网。物联网的安全有好几种做法,可以把安全检测放在服务器端或者末端芯片上。末端通常是一个MCU加上传感器和互联模块,面积较小。用硬件trustzone实现的话,加解密和密钥管理等功能会需要额外内模块,可能比MCU本身都大,成本太高。但如果是附加值高的芯片就没什么问题。
让我们从技术层面来定义Trustzone到底能做什么:
1、防止操作系统被攻破后关键数据泄密,关键数据存放在特定内存区域,而那块区域,只有安全操作系统才有可能读到。
2、防止通过JTAG等调试接口读到寄存器,缓存,内存或者闪存数据。
3、从芯片制造开始,最初的密钥可以用芯片熔丝实现,往后启动的每一步都需要最高特权级和密钥验证,建立信任链,杜绝软件被替换或者被恶意读取。
4、防止边带攻击,比如量取内存颗粒的信号猜测数据,制造故障让检验模块停止工作,替换外围器件,输入特定数据确定电磁信号特征,打开芯片直接量内部信号线等。
上一个典型的ARM SoC内部结构,在这个结构里,Trustzone做的事情是保护数据在芯片内部的安全,不允许非授权的访问,哪怕这个访问来自CPU。初看有些复杂,不过我们可以拆开慢慢分析。从硬件角度开始比软件更清楚些,说不定哪天过认证的时候需要答辩,从头到尾解释系统安全设计。
首先,按照Trustzone的划分,一个芯片内被划分为安全世界和非安全世界。上图中,中间黑色的部分是总线,总线上面是主设备,下面是从设备(主设备中的缓存是例外,这个以后说)。读写请求总是从主设备发往从设备的。
作为从设备,区分它是不是属于安全世界相对简单。如果一个从设备不存在成块的空间映射,比如I2C或者PWM,那么我只要在总线访问它的时候,额外的加入一个管脚(取名为PROT),就可以告诉它本次访问是不是来自安全世界。如果从设备本身是完全属于被保护的安全世界,不接受非安全的访问,那么只要简单的拒绝,返回错误或者无意义数据即可。同样,如果从设备本身处于非安全世界,那么对于安全和非安全访问,都可以返回正确数据。还有,从设备所处于的世界,是可以动态配置的,且动态配置本身需要处在安全世界,这个以后讨论。
对于块设备,包括闪存,sram和内存等,它们的某些地址块需要处于安全世界,其他的处于非安全世界。为了实现这一点,就需要在它们前面插入一个检验模块(例如图中左方,DDR上面的TZC400),来判断某个地址是不是能被访问。当地址被送到这个检验模块,模块会结合PROT管脚去查表,看看本次访问是不是被允许,然后做相应措施。表本身和之前的动态配置一样,必须是在安全世界里面配置的。
至此,从设备就分析完了,是不是感觉特别简单?还有些细节,在把主设备也讲完后,我们会从系统角度来关注。
对于一般主设备,不考虑自带的缓存时,其实和从设备也差不多,也分为安全和非安全,可以在安全世界动态配置。配置完成后,这些主设备会按照自己所处的世界,驱动PROT管脚和地址来访问从设备,得到相应返回。不过这里的一般主设备不包括中断控制器,系统MMU,调试模块和处理器,接下来对这些例外模块进行具体分析。
首先是处理器。
在上图情况,接了CCI总线后,处理器接在缓存一致性端口ACE上(不明白的请参考以前的文章),它的缓存是可以被别人访问的,并且这个访问,是从主设备到主设备(当然,在处理器内部是从端口),不会经过总线送到内存,也不会经过检验模块TZC400。这时就有个漏洞,通过操纵一个非安全世界的模块,比如上图的橙色主设备,假装去读一个被安全世界保护的内存地址。这个地址本来存在于内存,被TZC400保护,可是由于总线的监听功能,读请求有可能被发往处理器缓存,从而绕过保护。
为了防止这种情况,处理器在所有的页表和缓存都做了特殊设计,加了一个标志位,标志本缓存行是否属于安全世界。如果别的非安全世界主设备来监听安全世界缓存行,由于安全位不同,处理器会认为这是两个不同地址,哪怕它们的地址一致,返回缓存未命中。这样,就不会把数据泄漏。
有人会问,这个标志位来源于页表,改了页表中的这一位不就可以访问了?其实不行。因为安全世界页表位于被保护的内存区域或者缓存,就算破解了操作系统也无法访问。
又有人会说,那改了非安全世界的页表中安全位,并伪造一个安全世界的地址,岂不是可以让CPU模拟出一个访问安全世界的传输,送到总线和TZC400?TZC400或者对端缓存一看地址和PROT管脚都是符合要求的,应该就会返回保密数据吧?想法是不错,可是当CPU位于非安全世界时,它会忽略页表中的安全位,所以不可能发出PROT为安全的传输。所以,我们可以对这点放心。
以上是别的主设备访问处理器,那如果处理器本身处于非安全世界,有没有可能访问其他主设备的安全缓存?当然有。所以不要把其他主设备接到ACE端口,以免被监听,一般主设备是不会做缓存上的安全与非安全区分的。接到ACE-Lite接口无所谓,反正设计上就无法被读取缓存数据。
除此之外,还存在一个例外,就是GPU。在最新的ARM G71图形处理器上,是支持双向硬件一致性的。也就是说,GPU也可以被监听缓存的。为了简化设计,图形处理器被设成永远处于非安全世界,CPU尽管读,不在乎,它使用另外一种机制来保护数据,以后介绍。
对处理器缓存熟悉的人可能会想到用跨缓存行的非安全变量来访问被保护的数据。没用的,处理器设计者早就想到这点,要不就是非对齐访问异常(包含exclusive access的时候),要不就不会给你数据,具体到每个处理器有所不同。
还有一个漏洞没堵上,那就是缓存维护,TLB和分支预测操作。ACE端口包含了DVM操作来维护它们,安全性如何保障?同样的,地址中也有安全和非安全位。不过话说回来,DVM操作无非就是无效化某些缓存,分支预测和TLB项,不存在安全数据被读取,TLB被篡改的情况。
到这里可能你会觉得有点晕,不少漏洞需要堵。我们可以回顾一下,需要记住的是各种缓存操作,通过安全标志位保护,避免漏洞。对比处理器设计者所要考虑的情况,这点漏洞不值一提。
杜绝了缓存漏洞后,还有别的隐患,比如仿真器。调试模块可以被用来访问各个从设备,也可以访问和影响处理器内部资源。从设备侧的防护很容易,把调试模块当成一般的主设备处理就行。处理器内部的寄存器,缓存等资源,需要处理器从设计开始,就要为所有资源定义安全级别。被保护的资源对于来自调试模块的未授权访问会被禁止。只有通过安全启动链,安全世界的软件才能打开寄存器SDER,从而允许外部仿真器影响被保护的安全世界资源和处理器运行状态,访问被保护的资源。
那处理器内部的资源是怎么划分的?以ARMv8举例,如下图:
这幅图相信很多人都看到过。ARMv8的处理器被分成四个特权等级,通常EL0跑用户态程序,EL1内核,EL2虚拟机。EL0-1分为安全与非安全,EL3只有安全世界,EL2不区分,两个世界的切换必须经过EL3。我们谈到的处理器内部资源,包括寄存器,缓存,异常,MMU,很多都会分组,组之间看不到或者低级不可访问高级,从而保证安全。没有分组的,比如通用寄存器,就需要软件来维护,防止非安全世界的看到安全世界的数据。
引起安全切换的会有几种可能:中断和SMC指令。中断分为如下几种情况:
非安全世界下,在EL1或者EL0,当一个非安全中断来临,那么系统没必要切换安全状态,作为一般中断处理,切到EL1即可。
非安全世界下,在EL1或者EL0,当一个安全中断来临,那么系统必须先切到EL3,不然就没法做安全世界切换。
安全世界下,在EL1或者EL0,当一个安全中断来临,没必要做安全世界切换,作为一般中断处理,切到EL1即可。
安全世界下,在EL1或者EL0,当一个非安全中断来临,那么系统必须先切到EL3,不然就没法做安全世界切换。
当跳到EL3的Secure Monitor程序处理上下文切换时,IRQ/FIQ中断屏蔽位不起作用,哪怕打开了也不会触发,直到Secure Monitor处理完,向下跳到相应的安全世界EL1时,才会让原来的中断屏蔽恢复,从而触发中断。此时处理中断的是安全世界的中断程序,处于被保护的内存区域,杜绝非安全世界的程序篡改。
那怎样触发安全与非安全中断呢?这在中断控制器里有定义,早年的定义中只有FIQ可以作为安全中断,后期的可配置,并且,相应的安全世界配置寄存器只有在处理器的安全世界中才可以访问。
SMC指令和中断触发类似,只不过软件就可以触发,切换到Secure Monitor。这里,非安全软件可以提出触发请求,在通用寄存器填入参数,却无法控制安全世界的处理程序做什么,也依然看不到被保护内存数据。所以防止数据泄密的任务就靠安全操作系统了。
至此,安全启动后的基本硬件防护已经完成,但如果你以为这就是Trustzone,那就错了,精彩的在后面。
我们可以把Trustzone放到实际应用里面看看是不是可行。以DRM举例,如下图:
在播放授权 视频的时候,视频流来自网络或者闪存,它们不需要在安全世界,因为数据本身就是加密过的。然后被解密并放到被保护内存,等待解码。上图中,密码保护和解密是通过安全硬件模块Crypto来完成的,这个我们以后再分析,先处理解密完成后的视频流。此时有两种方案:
第一中,非常自然的,可以把所有的过程在安全世界完成,那么图形处理器,视频处理器和显示模块必须都工作在安全世界,能访问安全世界的数据,才能完成工作。可这样就带来一个问题,那就是驱动。我们知道,图形处理器的驱动是非常复杂的,并且手机上只存在Linux和windows下的图形驱动,和OpenGL ES/DirectX配合。
而安全世界的操作系统(TEE,Trusted Execution Environment)是完全不兼容的安全系统,甚至有的都不支持SMP, 完全不存在可能性把图形驱动移植上去,也没有任何意义。这样的话,就只能把图形处理器从流程中挖掉,只留下相对简单也不需要生态的视频和显示模块的驱动,工作在安全世界,而GPU的输出送到显示模块,由显示模块进行混合。
这是一种可行的方案,也确实有公司这么做。但是从长远看,图形处理器总是会参与到这个过程的,别的不说,只说VR和AR流行以后,要是虚拟个显示屏出来,上面播放视频,然后放在一个虚拟出的房间,那他们之间肯定是要进行互动的,此时显示模块就需要把视频图层送回GPU进行运算。如果GPU不在安全世界,那就会造成泄密。
为了解决上述问题,有了第二种解决方案,称作TZMP1(Trustzone Media Protection 1),引入了保护世界的概念。
保护世界工作于非安全世界,这样才能兼容图形驱动。那安全怎么办?它需要添加四根管脚NSAID,类似于安全世界的PROT信号,只不过做了更细的划分,使得GPU/视频/显示模块要访问被保护内存时,预先定义好了权限。而这个权限的设置,也是通过前文的TZC400来实现的,在安全启动链中就完成。CPU的权限通常是0,也就是最低。而显示控制器权限是只读。
这样一来,我们之前的老问题,恶意缓存监听,又回来了。在新的A73和G71加CCI500/550总线系统里,可以支持双向硬件一致性。这意味着GPU也能被监听。这下大家都在非安全世界,缓存里的安全位不起作用,怎么解决?这需要总线的配合。
ARM的总线CCI500/550,有一个保护模式,打开后,不光支持上文的NSAID管脚,还可以在监听的时候,把监听传输替换成缓存行无效化命令,直接让目标把相应缓存行无效化。这样一来,数据还是需要从内存读取,保证安全。并且这个过程对软件透明,无需做任何改动。
可是此时,辛辛苦苦设计的硬件一致性就完全起不到加速作用了,性能受到影响。好在运行OpenGL ES的时候,GPU是不会发出共享传输的,CPU也不会没事去监听GPU的数据。而下一代的图形接口Vulkan,会开始使用GPU双向一致性,那时候会有影响。还有一点不利的是,如果同时运行OpenCL和DRM,OpenCL也用不上双向硬件一致性,必须重启系统切换到非保护模式才行。
还有,在实际使用中,现有的TZC400作为内存保护模块,有几个致命的缺陷。
第一,它的配置只能在启动时完成,无法动态改变,也就是说,一旦某块内存给了安全世界,就无法再被非安全世界的操作系统使用,哪怕它是空闲的。在4K视频播放时,需要分配几百兆内存,还不止一块。
如果一直被占着,这对于4GB内存手机来说是个沉重的负担。怎么解决?只能改成动态配置。此时,如果内存不够了,非安全操作系统提请求给安全系统,让它把暂时不用的物理内存设到非保护内存区,并定个时间收回。不过这样一来内存分配机制就复杂了,说不定还得改内核,很危险。
如果忽视这点,继续往下走,还会遇到第二个问题。TZC400和它的改进版最多只能支持最小颗粒度为2MB的内存块管理。为什么不弄细些呢?很简单,如果设成4KB,和系统页大小一致,那么4GB的物理内存就需要一百万条目来管理。如果做成片上内存,比二级缓存还大,不现实。
而做内存映射,就和MMU一样了,经过CPU的MMU后,数据访问还要再穿越一次MMU,延迟显然大。此外,这一层的MMU无法利用一二级缓存放页表,效率极低。如果继续保持2MB的颗粒,那么在分配内存的时候,很快就会因为块太大而用完。就算使用了上一节的方法,问题也没法很好解决。这就是TZMP2V1。
在这种情况下,第三种基于虚拟机的方案就出现了。不过这个方案基本上推翻了Trustzone最初的设计意图,我们来看下图:
在这里,作为内存保护的TZC400完全移除,而系统MMU加了进来。内存保护怎么做?靠物理地址重映射。先看处理器。在启动链中,从EL3向EL2跳的过程时,就定义好保护内存,并且EL2,也就是虚拟机的页表存放于保护内存,EL1的安全页也同样放在保护内存。
这样,当处理器进入到EL1,哪怕通过篡改EL1非安全页表的安全位,也最终会被映射到它所不能访问的安全内存,从而起到保护作用。同样的,给处于非安全世界的控制器也加上系统MMU,让设备虚拟化,同样可以控制安全。这就是TZMP2V2。有了系统MMU,页表可以做成4KB大小了,也不用担心CPU那里穿越两次MMU。这时候,也不用担心恶意监听缓存,因为所有穿过二级MMU的访问里,安全位都是经过检验的的。
但是,不看别的,光是为设备加入这些系统MMU,就会增加很多面积。还有,光加MMU不够,还要加入系统的三级甚至四级缓存,才能让MMU效率更高,不然延迟太大。当然,如果设备使用的页表并不很多,可以对MMU简化,比如增大最小颗粒度,减少映射范围,直接使用片内内存。这需要系统设计者来做均衡。对于GPU来说,要支持双向一致性,还得考虑让监听传输通过MMU,不然功能就出问题了。
如果使用了TZMP2V2,那么虚拟化就变成了一个切实需求。然后会发现,ARM的中断和设备的虚拟化还很不完善。接下来我从硬件角度解释下虚拟化。
说到虚拟化,先要解释系统MMU。
如上图所示,系统MMU其实很简单,就是个二层地址转换。第一层,虚地址到实地址,第二层,实地址到物理地址。请注意,没有第二层转换时,实地址等同于物理地址。这个模块既可以两层都打开,也可以只开一层,看情况而定。
上图比较清楚的显示了一层映射的过程。其中,设备发出的虚地址请求,会先经过TLB,它里面存了以前访问过的页表项,如果有,就直接返回,没有就往下走到第二步table walk。
第二步里,MMU会按照预设的多级基址寄存器,一级级访问到最终页表。如果MMU位于CPU内,那table walk过程中每次访问的基址和表项,都可以存放于缓存中,大大提高效率。如果在设备上,只有内建的TLB表项,后面没有缓存,那未命中TLB的都是访问DDR,效率自然下降。
所以CPU和GPU等经常访存的设备,都是自带第一层MMU和缓存。而对于没有内部MMU,切换页表又不是很频繁的设备,比如DMA控制器,可以在下面挂第一层MMU,此时驱动就简单了,直接把应用程序看到的虚地址给DMA的寄存器就行,MMU会自己按照基地址去查找相应页表并翻译,把实地址送到总线。不然,驱动还要自己查找实地址再写入寄存器。
我们前面说过,在TZMP1和TZMP2v1中,内存保护是靠TZC400来完成的。而到了TZMP2v2,取消了TZC400,这时靠虚拟化的二层地址映射。
二层映射的过程和一层映射基本一样,不再详述,但是性能问题会被放大。假设在一层中,经过四级基址查到最终页,而在二层中,这每一级的基址查找,又会引入新的四级基址访问。所以至少要经过4x4+4=20次访存,才能确定物理地址。如果没有缓存的帮助,效率会非常低。
其他可行的办法是减少基址级数,比如linux只用了三级页表,但即使如此,也需要3x3+3=12次查找。在包含缓存的ARM CPU上,虚拟机的效率可以做到80%以上。而二层MMU应用于设备实现设备虚拟化的时候,就需要小心设计了。
有了系统MMU,我们就有了全芯片虚拟化的基础。那在对系统性能和成本做完平衡,采取合适的系统MMU设计之后,是不是就可以实现虚拟化,并且靠虚拟化实现安全了?没那么容易,还有其它问题需要考虑。
虚拟化脱胎于仿真器,就是在一个平台上模拟出另一个平台。在指令集相同的时候,没有必要翻译每一条指令,可以让指令直接被硬件执行,这样指令的效率算是得到了解决。当然,对于某些特殊指令和寄存器访问,还是需要hypervisor处理的。接着第二个问题,访存。
我们前面解释过,对CPU来说,高效的虚拟化访存,就是让指令高效的经过两层翻译,而不是每次访存都需要触发虚拟机EL2的异常,切到Hypervisor,再得到最终物理地址。这一点在没有缺页异常的时候,ARM的虚拟化也已经做到了,而有缺页异常时还是需要Hypervisor处理。再接着是设备访存虚拟化,有了系统MMU,也可以高效做到。再就是处理器和设备中断虚拟化。
最后,设备的虚拟化需要管理,那设备本身需要支持虚拟设备号和虚拟中断号。更多内容请期待。
小龙王望远镜是中国生产的望远镜品牌之一,由中国知名光学仪器生产厂商四川先科光电有限公司生产。该公司成立于1997年,位于四川省成都市高新区科技园,是一家专业从事光电信息的研发、生产、销售和服务的企业,主要产品包括天文望远镜、夜视仪、现用光学系统、光学器件和装备以及光电物联网系统等。小龙王望远镜系列是该公司的主打产品之一,因为其给人们留下深刻印象而备受国内外用户的青睐。
一、公司简介
11、经营业务:
美的是一家覆盖智能家居事业群、机电事业群、暖通与楼宇事业部、机器人与自动化事业部和数字化创新业务五大业务板块的全球化科技集团,提供多元化的产品种类与服务。其中,智能家居事业群作为智慧家电、智慧家居及周边相关产业和生态链的经营主体,承担面向终端消费者的智能化场景搭建,用户运营和数据价值发掘,致力于为终端消费者提供最佳体验的全屋智能家居及服务;机电事业群,具备专业化研发、生产、销售压缩机、电机、芯片、工控、散热组件等高精密核心部件产品的能力,拥有美芝、威灵、美仁、东芝、合康、日业、东菱和高创等多个品牌,产品广泛应用于家用电器、3C 产品、新能源汽车和工自动化等领域;暖通与楼宇事业部致力于为楼宇及公共设施提供能源、暖通、电梯、控制等产品及全套决方案和服务,并积极探索新的商业模式和类型,着力成为掌握关键核心科技及制造能力的领先型工业企业;机器人及自动化事业部主要围绕未来工厂相关领域,提供包括工业机器人、物流自动化系统及传输系统解决方案,以及面向医疗、娱乐、新消费领域的相关解决方案等;数字化创新业务包括以智能供应链、工业互联网等在美的集团商业模式变革中孵化出的新型业务,可为企业数字化转型提供软件服务、无人零售解决方案和生产性服务等。
美的是一家全球运营的公司,业务与客户已遍及全球。迄今,美的在全球拥有约200 家子公司、28 个研发中心和34 个主要生产基地,员工约15 万人,业务覆盖200 多个国家和地区。其中,在海外设有18 个研发中心和17 个主要生产基地,遍布十多个国家,海外员工约3 万人,结算货币达22 种,同时美的为全球领先机器人智能自动化公司德国库卡集团最主要股东(约95%)。
12、公司市场地位
13、核心竞争力
美的作为主要产品品类皆占据领导地位的全球家电行业龙头,可为用户提供覆盖全产品线、全品类的一站式高品质家庭生活服务方案。面对家电智能化发展趋势,家电产品的兼容、配合及互动变得越发重要,拥有全品类家电产品线的美的在构建统一、兼容的智慧家居平台,向用户提供一体化的家庭解决方案方面已具备领先优势。
美的具备整合全球研发资源,坚持科技领先战略,持续打造产品与技术创新能力。过去5 年研发投入接近450 亿元,包括中国在内的11 个国家设立了28 个研究中心,逐步形成“2+4+N”全球化研发网络,建立研发规模优势。
凭借持续的全球资源配置与产业投入,依靠全球领先的制造水平、规模优势,不断实现全球突破。美的海外销售占公司总销售40%以上,产品已出口至全球超过200 个国家及地区,拥有17 个海外生产基地及24 个销售运营机构。
美的广阔稳固的渠道网络,完善的智能供应链体系为公司国内业务的稳步增长提供了坚实保障。在成熟的一、二线市场,公司与大型家电连锁卖场一直保持着良好的合作关系;在广阔的三、四线市场,公司以旗舰店、专卖店、传统渠道和新兴渠道为有效补充,渠道网点覆盖全市场,同时公司品牌优势、产品优势、线下渠道优势及物流布局优势,也为公司快速拓展电商业务与渠道提供了有利保障。
聚焦数智驱动,围绕用户体验进行全面数字化、全面智能化变革,力争成为物联网时代的领先企业。美的已构建并将着重发展统一数据中台、技术中台支撑下的美云销商业平台、IoT 生态平台和工业互联网平台“美擎”三大数智平台,建立数智驱动的全球领先科技集团。
完善的公司治理机制与有效的激励机制奠定了公司持续稳定发展的坚实基础。公司关注治理架构、企业管控和集权、分权体系的建设,已形成成熟的职业经理人管理体制。公司的主要高层经营管理团队成员,均为在美的经营实践中成长的职业经理人,在美的各单位的平均工作年限超过15 年,具备丰富的管理经验和行业实践,对全球家电等相关产业有深刻的理解与洞察,对产业运营环境及企业运营管理有精准的把握。
14行业概述2020 年家电行业国内市场零售规模为7,297 亿元,同比下降92%;家电行业出口规模为4,582 亿元(不含彩电),同比增长为242%。据睿工业(MIR)统计,2020 年中国工业机器人市场出货量为171,490 台,同比增长148%。
二、 商誉科目内容
商誉是企业整体价值的组成部分。在企业合并时,它是购买企业投资成本超过被并企业净资产公允价值的差额。
在年度会计报告时进行减值测试。美的的审计报告中关注于2017 年 1 月 6 日收购 KUKA 集团及 2016 年度购买的TLSC 业务产生的商誉合共人民币25,780,780 千元的减值测试,因为该等商誉的金额重大,而且商誉的减值测试涉及重大的会计估计与判断。管理层根据该等假设分析各资产组和资产组组合的可收回金额,本集团对SMC 资产组(于以色列的子公司 Servotronix Motion Control Ltd )计提减值准备 552,248,000 元,认为商誉无需进一步计提减值准备。2020年商誉账面价值30074亿,原有减值516亿,商誉账面净值29557亿。
三、商誉科目分析---占资产比重,来源构成,是否存在减值,基于什么目前产生并购
31、美的商誉占资产的比重在2020年达到82%。
32、2020年商誉账面价值30074亿,原有减值516亿,商誉账面净值29557亿。商誉减值金额没有变化,金额变化的原因是外币报表折算差异。
33、就美的集团对收购 KUKA 集团,是基于未来工厂能提供工业机器人、物流自动化系统及传输系统解决方案的战略进行多元化并购。 TLSC东芝生活电器株式会社的性质是家电制造,配合国际化销售战略。一直在电器制造行业相关多元化。
34并购资金来源
四、同行业中此比占比是否正常(同行业选择格力电器,春兰股价对比)
格力电器是一家多元化、科技型的全球工业集团,旗下拥有格力、TOSOT、晶弘三大品牌,产品覆盖家用消费品和工业装备两大领域,包括以家用空调、暖通空调、冰箱、洗衣机、热水器、厨房电器、环境电器、通讯产品、智能楼宇、智能家居在内的消费领域;包括高端装备、精密模具、冷冻冷藏设备、电机、压缩机、电容、半导体器件、精密铸造、基础材料、工业储能、再生资源在内的工业领域。
格力商誉
从相关子公司来看格力主要在制造领域的子公司为自己设立在另一部农业自己不擅长的行业进行入股。很是奇怪,格力为什么收购这个松原粮食(本公司原持有松原粮食5000%股权,辽宁省松原市财政投资管理中心持有 )
一个企业是否进行并购与公司战略相关,美的目标是一家全球运营的公司,一家覆盖智能家居事业群、机电事业群、暖通与楼宇事业部、机器人与自动化事业部和数字化创新业务五大业务板块业务,所以在相关多元化进行并购。
通孔回流焊可实现在单一步骤中同时对穿孔元件和表面贴装元件(SMC/SMD)进行回流焊;而波峰焊工艺则是比较传统的电子产品插件焊接工艺。
通孔回流焊工艺图
一、通孔回流焊工艺:
通孔回流焊有时也称作分类元件回流焊,正在逐渐兴起。通孔回流焊接工艺就是使用回流焊接技术来焊接有引脚的插件元件和异形元件。对某些如SMT元件多而穿孔元件(插件元件)较少的产品,这种工艺流程可取代波峰焊,而成为PCB混装技术中的个工艺环节。通孔回流焊大的好处就是可以在发挥表面贴装制造工艺的优点的同时使用通孔插件来得到较好的机械连接强度。
二、通孔回流焊接工艺与波峰焊接工艺相比的优势:
1、通孔回流焊接工艺首先是减少了工序,省去了波峰焊这道工序,多种操作被简化成一种综合的工艺过程;
2、通孔回流焊接工艺需要的设备、材料和人员较少;
3、通孔回流焊接工艺可降低生产成本和缩短生产周期;
4、可降低因波峰焊而造成的高缺陷率;
5、可省去了一个或一个以上的热处理步骤,从而改善PCB可焊性和电子元件的可靠性等。
三、通孔回流焊机与波峰焊机相比的劣势:
1、通孔回流焊工艺由于采用了焊膏,焊料的价格成本相对波峰焊的锡条较高。
2、通孔回流焊工艺须订制特别的专用模板,价格较贵。且每个产品需各自的套印刷模板及回流焊模板。
3、通孔回流焊炉可能会损坏不耐高温的元件。在选择元件时,特别注意塑胶元件,如电位器等可能由于高温而损坏。
四、波峰焊的未来发展
随着电子产品的小型化和高密度化趋势不断加强,波峰焊技术也在不断创新和发展。以下是波峰焊未来的发展方向:
自动化程度提高:波峰焊机的自动化程度将不断提高,包括自动化元件供给、自动化焊锡液体供给等方面。
焊接质量提高:波峰焊机的焊接质量将不断提高,包括焊接温度、焊接时间、焊锡流量等参数的更加精准控制。
焊接材料创新:随着环保意识的加强,波峰焊机的焊接材料也将不断创新和改良,包括采用无铅焊锡等环保材料。
应用领域扩大:波峰焊技术将会应用于越来越多的电子产品中,包括智能家居、物联网等领域。
综上所述:通孔回流焊可替代波峰焊来实现对插装元件的焊接,特别是在处理焊接面上分布有高密度贴片元件的插件焊点的焊接。通孔回流焊,可提高线路板组装密度,提升焊接质量,降低工艺流程,丰富焊接手段。所以说,通孔回流焊将在未来的电子组装中发挥重要作用。但波峰焊作为一种重要的电子元件焊接技术,已经广泛应用于各种电子产品中,也可随着技术的不断创新和发展,也会在未来扮演重要角色。
SMT
解释:
统计机器翻译(statistical machine translation)
用法:
SMT Process Engineer 工艺工程师
smt adhesive 贴片胶
SMT NTC 片式NTC
扩展资料:
近义词:
package
读法:英 [ˈpækɪdʒ] 美 [ˈpækɪdʒ]
解释:
包,包裹;套装软件,[计] 插件;组件;外壳;封装;程序包;数据包
一揽子的
打包;将……包装
用法:
Package Design [包装] 包装设计 ; 产品包装设计 ; 产品包装 ; 包装计划
Package size 包装尺寸 ; 外箱尺寸 ; 彩盒规格 ; 捆包尺寸
package tour [交] 包价旅游 ; 套餐游 ; 包办游 ; 跟团旅游
海康威视硬盘录像机高级管理员默认密码是账号admin,密码admin,如果不对,打海康客服4007005998。他们可以根据你DVR的信息,给超级密码。
杭州海康威视数字技术股份有限公司(简称:海康威视),成立于2001年,是一家以视频为核心的物联网解决方案和数据运营服务提供商,公司于2010年5月在深圳证券交易所中小企业板上市(股票代码:002415)。
海康威视是领先的安防产品及行业解决方案提供商,致力于不断提升视频处理技术和视频分析技术,面向全球提供领先的安防产品、专业的行业解决方案与优质的服务,为客户持续创造更大价值。
海康威视拥有业内领先的自主核心技术和可持续研发能力,提供摄像机/智能球机、光端机、DVR/DVS/板卡、BSV液晶拼接屏、网络存储、视频综合平台、中心管理软件等安防产品,并针对金融、公安、电讯、交通、司法、教育、电力、水利、军队等众多行业提供合适的细分产品与专业的行业解决方案。这些产品和方案面向全球100多个国家和地区,在北京奥运会、大运会、亚运会、上海世博会、60年国庆大阅兵、青藏铁路等重大安保项目中得到广泛应用。
以上就是关于arm的trustzone是怎样保证硬件安全的全部的内容,包括:arm的trustzone是怎样保证硬件安全的、arm的trustzone是怎样保证硬件安全的、小龙王望远镜是哪产的啊等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!