腾讯 科技 讯 9月18日消息,腾讯宣布将开源自主研发的轻量级物联网实时 *** 作系统TencentOS tiny。相比市场上其它系统,腾讯TencentOS tiny在资源占用、设备成本、功耗管理以及安全稳定等层面极具竞争力。该系统的开源可大幅降低物联网应用开发成本,提升开发效率,同时支持一键上云,对接云端海量资源。
据权威资料显示,全球物联网市场规模发展迅猛,2018年,仅国内物联网市场容量已经超过1万亿,预计2020年国内物联网市场容量可望超过15万亿。作为物联网整个产业链重要一环,终端侧物联网 *** 作系统由于直接对接底层物联网设备,已经成为构建整个物联网生态的关键。
腾讯物联网团队表示:“将腾讯自主研发的物联网 *** 作系统TencentOS Tiny开源,不仅可以将腾讯在物联网领域的技术和经验和全球开发者分享,还能够汲取全球物联网领域的优秀成果和创新理念,最终推动整体物联网生态的繁荣以及万物智联时代的到来。”
腾讯云构筑起全链条IoT云开发能力
在全面上云的背景下,物联网设备也不例外。借助TencentOS tiny提供的更简单的软件接口,亿级物联网设备上云的门槛降降进一步降低,从而帮助物联网开发者能够更便捷的使用云端海量的计算、存储资源,以及先进的AI和大数据算法模型,有效支撑众多前沿物联网技术在智慧城市、智能家居、智能穿戴、车联网等行业的加速落地。
同时,随着TencentOS tiny的开源,结合腾讯云物联网开发平台IoT Explorer,加上之前已经建设完成的国内最大规模LoRa网络,腾讯云物联网已经彻底打通从芯片通讯开发、网络支撑服务,物理设备定义管理,数据分析和多场景应用开发等一站式、全链条IoT云开发服务能力,物联网开发将变得更为简单、高效。
近年来,腾讯在开源上的步伐不断加快,截至9月,腾讯自主开源项目已达84个,Star数超过24万。在物联网领域,腾讯不仅通过开源和开放持续构建良性的物联网生态体系,在产品易用性和开发效率上,腾讯物联网团队也都做了许多针对性优化。
体积
最小仅18KB
、功耗
最低2微安
TencentOS tiny 提供业界最精简的RTOS内核,最少资源占用为RAM 06 KB,ROM 18 KB。在类似烟感和红外等实际场景下,TencentOS tiny 的资源占用仅为:RAM 269 KB、ROM 1238 KB,极大地降低硬件资源占用。同时,看似“麻雀虽小”,却“五脏俱全”。对于复杂的任务管理、实时调度、时间管理、中断管理、内存管理、异常处理等功能,TencentOS tiny都可支持。
在功耗上,TencentOS tiny还应用了高效功耗管理框架,可以针对不同场景降低功耗。比如TencentOS tiny内部的定时机制在发现业务没有运行的时候,会自动启动休眠状态,有效降低功耗。根据实测的数据显示,TencentOS tiny最低的休眠功耗仅有2微安。开发者也可以根据业务场景选择可参考的低功耗方案,降低设备耗电,延长设备寿命。
独具创意的调试功能,助力开发者快速排障
由于很多物联网的终端设备在实际场景下,位于荒郊野外或者很远的地方,出现问题的时候非常难定位。为了能够减少这个问题,当终端出现问题的时候,TencentOS tiny会把一些故障信息记录下来,当它再重启的时候首先把错误数据上报云端,这个功能极大的方便了开发者查找故障原因。从而远在千里之外,就可以快速排除故障。
另外,TencentOS tiny的内核以及其上层的物联网组件框架,都做了高度解耦,保证和其它模块之间连接的适配。同时,TencentOS tiny 还提供多种编译器快速移植指南和移植工具,帮助开发者向新硬件开发板的一键移植,省时省力,有效提升开发效率。
目前,TencentOS tiny已支持意法半导体、恩智浦、华大半导体、瑞兴恒方、国民技术等主流厂商多种芯片和模组。
1、ActiveDirectory改进
在Windows2000引入的MicrosoftActiveDirectory服务简化了复杂网络目录的管理,并使用户即使在最大的网络上也能够很容易地查找资源。此企业级目录服务是可扩展的,完全是基于Internet标准技术创建的,并与WindowsNETServer2003标准版、WindowsNETServer2003企业版和WindowsNETServer2003Datacenter版中的 *** 作系统完全集成。
WindowsServer2003为ActiveDirectory提供许多简捷易用的改进和新增功能,包括跨森林信任、重命名域的功能以及使架构中的属性和类别禁用,以便能够更改其定义的功能。
2、组策略管理控制台
管理员可以使用组策略定义设置以及允许用户和计算机执行的 *** 作。与本地策略相比,企业用户可以使用组策略在ActiveDirectory中设置应用于指定站点、域或组织单位的策略。基于策略的管理简化了系统更新 *** 作、应用程序安装、用户配置文件和桌面系统锁定等任务。
组策略管理控制台(GPMC)预计可作为WindowsServer2003的附加程序组件使用,它为管理组策略提供了新的框架。有了GPMC,组策略使用起来将更简单,此优势将使更多的企业用户能够更好地使用ActiveDirectory并利用其强大的管理功能。
3、策略结果集
策略结果集(RSoP)工具允许管理员查看目标用户或计算机上的组策略效果。有了RSoP,企业用户将具有强大灵活的基本工具来计划、监控组策略和解决组策略问题。
RSoP是以一组Microsoft管理控制台(MMC)管理单元的形式提供的结构。这些管理单元让管理员以两种模式确定并分析当前的策略集:登录模式和计划模式。在登录模式中,管理员可以访问已应用到特定目标的信息。在计划模式中,管理员可以看到策略将如何应用到目标,然后在部署组策略的更改之前进行检查其结果。
4、卷影子副本恢复
作为卷影子副本服务的一部分,此功能使管理员能够在不中断服务的情况下配置关键数据卷的即时点副本。然后可使用这些副本进行服务还原或存档。用户可以检索他们文档的存档版本,服务器上保存的这些版本是不可见的。
5、InternetInformationServices60
InternetInformationServices(IIS)60是启用了Web应用程序和XMLWeb服务的全功能的Web服务器。IIS60是使用新的容错进程模型完全重新搭建的,此模型很大程度上提高了Web站点和应用程序的可靠性。
现在,IIS可以将单个的Web应用程序或多个站点分隔到一个独立的进程(称为应用程序池)中,该进程与 *** 作系统内核直接通信。当在服务器上提供更多的活动空间时,此功能将增加吞吐量和应用程序的容量,从而有效地降低硬件需求。这些独立的应用程序池将阻止某个应用程序或站点破坏服务器上的XMLWeb服务或其他Web应用程序。
IIS还提供状态监视功能以发现、恢复和防止Web应用程序故障。在WindowsServer2003上,MicrosoftASPNET本地使用新的IIS进程模型。这些高级应用程序状态和检测功能也可用于现有的在InternetInformationServer40和IIS50下运行的应用程序,其中大多数应用程序不需要任何修改。
6、集成的NET框架
MicrosoftNET框架是用于生成、部署和运行Web应用程序、智能客户应用程序和XMLWeb服务的MicrosoftNET连接的软件和技术的编程模型,这些应用程序和服务使用标准协议(例如SOAP、XML和>
NET框架为将现有的投资与新一代应用程序和服务集成起来而提供了高效率的基于标准的环境。
另外,它帮助企业用户解决部署和 *** 作Internet范围的应用程序所遇到的问题。
有了完全集成在WindowsServer2003 *** 作系统内的NET框架,开发人员可以从编写“管道”代码中解放出来,从而可以将他们的精力集中在实现真正的商业价值方面。NET框架兼顾了集成和管理细节,降低了编码复杂性并增加了一致性。
7、命令行管理
WindowsServer2003系列的命令行结构得到了显著增强,使管理员无须使用图形用户界面就能执行绝大多数的管理任务。最重要的是通过使用Windows管理规范(WMI)启用的信息存储来执行大多数任务的功能。此WMI命令行(WMIC)功能提供简单的命令行界面,与现有的外壳程序和实用工具命令交互 *** 作,并可以很容易地被脚本或其他面向管理的应用程序扩展。
总之,WindowsServer2003系列中更强大的命令行功能与现成的脚本相结合,可与其他通常具有更高所有权成本的 *** 作系统的功能相抗衡。习惯使用命令行管理UNIX或Linux系统的管理员可以继续从WindowsServer2003系列中的命令行进行管理。
8、集群(8节点支持)
此服务仅用于WindowsServer2003企业版和WindowsServer2003Datacenter版,它为任务关键型应用程序(例如数据库、消息系统以及文件和打印服务)提供高可用性和伸缩性。通过启用多服务器(节点)集中工作从而保持一致通讯。如果由于错误或维修使得集群中的某个节点不可用,另一个节点将立即开始提供服务,此过程称为故障转移。正在访问该服务的用户将继续他们的活动,而不会察觉到该服务现在是由另一台服务器(节点)提供。
WindowsServer2003企业版和WindowsServer2003Datacenter版都支持多达8个节点的服务器集群配置。
9、安全的无线LAN(8021X)
根据WindowsServer2003系列对8021X的支持,公司可以寻求一种安全模型,该模型将确保所有物理访问都是已授权和加密的。使用基于8021X的无线访问点或选项,公司可以确保只有受信任的系统才能与受保护的网络连接并交换数据包。因为是由8021X决定动态密钥,因此通过解决与有线设备隐私(WEP)(由IEEE80211网络使用)相关联的许多已知问题将会显著改善8021X无线网络加密。
此功能为无线局域网(LAN)提供了安全和性能方面的改进,如访问LAN之前的自动密钥管理、用户身份验证和授权。当有线以太网在公共场所使用时,它还提供对以太网络的访问控制。
10、紧急管理服务:无外设服务器支持
“无外设服务器”功能使IT管理员在没有监视器、VGA显示适配器、键盘或鼠标的情况下也能安装和管理计算机。紧急管理服务是一种新增功能,它使IT管理员在无法使用服务器时通过网络或其他标准的远程管理工具和机制,执行远程管理和系统恢复任务。
Trustzone可以追溯到十多年前,ARMv7公布的时候就有了,可惜一直没有什么实际应用。直到近几年开始,才真正的有厂商开始把这个方案大规模用于芯片里。目前看到的主要有四个应用领域:\x0d\ 第一是无人机芯片,大疆已经走在了最前面,第二名连影子都没看见。无人机上几大应用,图像传输,图像处理,识别,飞控,存储,每一块都有安全的诉求。利用Trustzone可以做到,在芯片里流动的数据,每一步都在安全系统的控制之下,哪怕飞机被人抢去,都需要极大的代价才能拿到闪存以及内存里面的数据。如果以后上安卓或者其他 *** 作系统,哪怕软件系统被黑客攻破,数据和控制还是安全的。最后,如果国家或者行业出台政策,要求实施禁飞区,那么哪怕无人机的主人自己去修改闪存和软件,都可以被强制接管。这些功能必须在芯片设计阶段就考虑到,大疆在这方面的眼光确实比别人长远。\x0d\ 第二是DRM,数字版权管理,也就是内容保护。如果国内用户要在手机上看最新好莱坞大片,那么播放设备必须经过一个认证,这个认证可以用trustzone来实现。国内已经在积极的推动这个事情,估计再过一段时间就可以实现了。当然,这是一把双刃剑,肯定也有用户反而不愿买支持DRM的设备,而去看盗版。用了Trustzone本身并不限制盗版,只不过多了一个看好莱坞大片的渠道。\x0d\ 第三是支付。把Trustzone用于支付支付在技术上没有困难,对芯片性能要求也不高,难的是把各个利益方摆平。银行和运营商想把支付控制权握在自己手里,所以会去大力推广NFC,会去和苹果合作。而手机支付软件厂商,比如支付宝和微信,想通过和手机芯片和硬件厂商,把所有功能都自己的平台上实现。目前的支付大多数还是基于软件和远端密钥验证。如果有人把手机破解,那还是可以读取到支付图层的密码的。而trustzone做的,就是硬件上杜绝这类情况。\x0d\ 第四是物联网。物联网的安全有好几种做法,可以把安全检测放在服务器端或者末端芯片上。末端通常是一个MCU加上传感器和互联模块,面积较小。用硬件trustzone实现的话,加解密和密钥管理等功能会需要额外内模块,可能比MCU本身都大,成本太高。但如果是附加值高的芯片就没什么问题。\x0d\ 让我们从技术层面来定义Trustzone到底能做什么:\x0d\ 1、防止 *** 作系统被攻破后关键数据泄密,关键数据存放在特定内存区域,而那块区域,只有安全 *** 作系统才有可能读到。\x0d\ 2、防止通过JTAG等调试接口读到寄存器,缓存,内存或者闪存数据。\x0d\ 3、从芯片制造开始,最初的密钥可以用芯片熔丝实现,往后启动的每一步都需要最高特权级和密钥验证,建立信任链,杜绝软件被替换或者被恶意读取。\x0d\ 4、防止边带攻击,比如量取内存颗粒的信号猜测数据,制造故障让检验模块停止工作,替换外围器件,输入特定数据确定电磁信号特征,打开芯片直接量内部信号线等。\x0d\\x0d\上一个典型的ARM SoC内部结构,在这个结构里,Trustzone做的事情是保护数据在芯片内部的安全,不允许非授权的访问,哪怕这个访问来自CPU。初看有些复杂,不过我们可以拆开慢慢分析。从硬件角度开始比软件更清楚些,说不定哪天过认证的时候需要答辩,从头到尾解释系统安全设计。\x0d\ 首先,按照Trustzone的划分,一个芯片内被划分为安全世界和非安全世界。上图中,中间黑色的部分是总线,总线上面是主设备,下面是从设备(主设备中的缓存是例外,这个以后说)。读写请求总是从主设备发往从设备的。\x0d\ 作为从设备,区分它是不是属于安全世界相对简单。如果一个从设备不存在成块的空间映射,比如I2C或者PWM,那么我只要在总线访问它的时候,额外的加入一个管脚(取名为PROT),就可以告诉它本次访问是不是来自安全世界。如果从设备本身是完全属于被保护的安全世界,不接受非安全的访问,那么只要简单的拒绝,返回错误或者无意义数据即可。同样,如果从设备本身处于非安全世界,那么对于安全和非安全访问,都可以返回正确数据。还有,从设备所处于的世界,是可以动态配置的,且动态配置本身需要处在安全世界,这个以后讨论。\x0d\ 对于块设备,包括闪存,sram和内存等,它们的某些地址块需要处于安全世界,其他的处于非安全世界。为了实现这一点,就需要在它们前面插入一个检验模块(例如图中左方,DDR上面的TZC400),来判断某个地址是不是能被访问。当地址被送到这个检验模块,模块会结合PROT管脚去查表,看看本次访问是不是被允许,然后做相应措施。表本身和之前的动态配置一样,必须是在安全世界里面配置的。\x0d\ 至此,从设备就分析完了,是不是感觉特别简单?还有些细节,在把主设备也讲完后,我们会从系统角度来关注。\x0d\ 对于一般主设备,不考虑自带的缓存时,其实和从设备也差不多,也分为安全和非安全,可以在安全世界动态配置。配置完成后,这些主设备会按照自己所处的世界,驱动PROT管脚和地址来访问从设备,得到相应返回。不过这里的一般主设备不包括中断控制器,系统MMU,调试模块和处理器,接下来对这些例外模块进行具体分析。\x0d\\x0d\首先是处理器。\x0d\ 在上图情况,接了CCI总线后,处理器接在缓存一致性端口ACE上(不明白的请参考以前的文章),它的缓存是可以被别人访问的,并且这个访问,是从主设备到主设备(当然,在处理器内部是从端口),不会经过总线送到内存,也不会经过检验模块TZC400。这时就有个漏洞,通过 *** 纵一个非安全世界的模块,比如上图的橙色主设备,假装去读一个被安全世界保护的内存地址。这个地址本来存在于内存,被TZC400保护,可是由于总线的监听功能,读请求有可能被发往处理器缓存,从而绕过保护。\x0d\ 为了防止这种情况,处理器在所有的页表和缓存都做了特殊设计,加了一个标志位,标志本缓存行是否属于安全世界。如果别的非安全世界主设备来监听安全世界缓存行,由于安全位不同,处理器会认为这是两个不同地址,哪怕它们的地址一致,返回缓存未命中。这样,就不会把数据泄漏。\x0d\ 有人会问,这个标志位来源于页表,改了页表中的这一位不就可以访问了?其实不行。因为安全世界页表位于被保护的内存区域或者缓存,就算破解了 *** 作系统也无法访问。\x0d\ 又有人会说,那改了非安全世界的页表中安全位,并伪造一个安全世界的地址,岂不是可以让CPU模拟出一个访问安全世界的传输,送到总线和TZC400?TZC400或者对端缓存一看地址和PROT管脚都是符合要求的,应该就会返回保密数据吧?想法是不错,可是当CPU位于非安全世界时,它会忽略页表中的安全位,所以不可能发出PROT为安全的传输。所以,我们可以对这点放心。\x0d\ 以上是别的主设备访问处理器,那如果处理器本身处于非安全世界,有没有可能访问其他主设备的安全缓存?当然有。所以不要把其他主设备接到ACE端口,以免被监听,一般主设备是不会做缓存上的安全与非安全区分的。接到ACE-Lite接口无所谓,反正设计上就无法被读取缓存数据。\x0d\ 除此之外,还存在一个例外,就是GPU。在最新的ARM G71图形处理器上,是支持双向硬件一致性的。也就是说,GPU也可以被监听缓存的。为了简化设计,图形处理器被设成永远处于非安全世界,CPU尽管读,不在乎,它使用另外一种机制来保护数据,以后介绍。\x0d\ 对处理器缓存熟悉的人可能会想到用跨缓存行的非安全变量来访问被保护的数据。没用的,处理器设计者早就想到这点,要不就是非对齐访问异常(包含exclusive access的时候),要不就不会给你数据,具体到每个处理器有所不同。\x0d\ 还有一个漏洞没堵上,那就是缓存维护,TLB和分支预测 *** 作。ACE端口包含了DVM *** 作来维护它们,安全性如何保障?同样的,地址中也有安全和非安全位。不过话说回来,DVM *** 作无非就是无效化某些缓存,分支预测和TLB项,不存在安全数据被读取,TLB被篡改的情况。\x0d\ 到这里可能你会觉得有点晕,不少漏洞需要堵。我们可以回顾一下,需要记住的是各种缓存 *** 作,通过安全标志位保护,避免漏洞。对比处理器设计者所要考虑的情况,这点漏洞不值一提。\x0d\ 杜绝了缓存漏洞后,还有别的隐患,比如仿真器。调试模块可以被用来访问各个从设备,也可以访问和影响处理器内部资源。从设备侧的防护很容易,把调试模块当成一般的主设备处理就行。处理器内部的寄存器,缓存等资源,需要处理器从设计开始,就要为所有资源定义安全级别。被保护的资源对于来自调试模块的未授权访问会被禁止。只有通过安全启动链,安全世界的软件才能打开寄存器SDER,从而允许外部仿真器影响被保护的安全世界资源和处理器运行状态,访问被保护的资源。\x0d\ 那处理器内部的资源是怎么划分的?以ARMv8举例,如下图:\x0d\\x0d\这幅图相信很多人都看到过。ARMv8的处理器被分成四个特权等级,通常EL0跑用户态程序,EL1内核,EL2虚拟机。EL0-1分为安全与非安全,EL3只有安全世界,EL2不区分,两个世界的切换必须经过EL3。我们谈到的处理器内部资源,包括寄存器,缓存,异常,MMU,很多都会分组,组之间看不到或者低级不可访问高级,从而保证安全。没有分组的,比如通用寄存器,就需要软件来维护,防止非安全世界的看到安全世界的数据。\x0d\ 引起安全切换的会有几种可能:中断和SMC指令。中断分为如下几种情况:\x0d\\x0d\非安全世界下,在EL1或者EL0,当一个非安全中断来临,那么系统没必要切换安全状态,作为一般中断处理,切到EL1即可。\x0d\ 非安全世界下,在EL1或者EL0,当一个安全中断来临,那么系统必须先切到EL3,不然就没法做安全世界切换。\x0d\ 安全世界下,在EL1或者EL0,当一个安全中断来临,没必要做安全世界切换,作为一般中断处理,切到EL1即可。\x0d\ 安全世界下,在EL1或者EL0,当一个非安全中断来临,那么系统必须先切到EL3,不然就没法做安全世界切换。\x0d\ 当跳到EL3的Secure Monitor程序处理上下文切换时,IRQ/FIQ中断屏蔽位不起作用,哪怕打开了也不会触发,直到Secure Monitor处理完,向下跳到相应的安全世界EL1时,才会让原来的中断屏蔽恢复,从而触发中断。此时处理中断的是安全世界的中断程序,处于被保护的内存区域,杜绝非安全世界的程序篡改。\x0d\ 那怎样触发安全与非安全中断呢?这在中断控制器里有定义,早年的定义中只有FIQ可以作为安全中断,后期的可配置,并且,相应的安全世界配置寄存器只有在处理器的安全世界中才可以访问。\x0d\ SMC指令和中断触发类似,只不过软件就可以触发,切换到Secure Monitor。这里,非安全软件可以提出触发请求,在通用寄存器填入参数,却无法控制安全世界的处理程序做什么,也依然看不到被保护内存数据。所以防止数据泄密的任务就靠安全 *** 作系统了。\x0d\ 至此,安全启动后的基本硬件防护已经完成,但如果你以为这就是Trustzone,那就错了,精彩的在后面。\x0d\ 我们可以把Trustzone放到实际应用里面看看是不是可行。以DRM举例,如下图:\x0d\\x0d\在播放授权 视频的时候,视频流来自网络或者闪存,它们不需要在安全世界,因为数据本身就是加密过的。然后被解密并放到被保护内存,等待解码。上图中,密码保护和解密是通过安全硬件模块Crypto来完成的,这个我们以后再分析,先处理解密完成后的视频流。此时有两种方案:\x0d\ 第一中,非常自然的,可以把所有的过程在安全世界完成,那么图形处理器,视频处理器和显示模块必须都工作在安全世界,能访问安全世界的数据,才能完成工作。可这样就带来一个问题,那就是驱动。我们知道,图形处理器的驱动是非常复杂的,并且手机上只存在Linux和windows下的图形驱动,和OpenGL ES/DirectX配合。\x0d\ 而安全世界的 *** 作系统(TEE,Trusted Execution Environment)是完全不兼容的安全系统,甚至有的都不支持SMP, 完全不存在可能性把图形驱动移植上去,也没有任何意义。这样的话,就只能把图形处理器从流程中挖掉,只留下相对简单也不需要生态的视频和显示模块的驱动,工作在安全世界,而GPU的输出送到显示模块,由显示模块进行混合。\x0d\ 这是一种可行的方案,也确实有公司这么做。但是从长远看,图形处理器总是会参与到这个过程的,别的不说,只说VR和AR流行以后,要是虚拟个显示屏出来,上面播放视频,然后放在一个虚拟出的房间,那他们之间肯定是要进行互动的,此时显示模块就需要把视频图层送回GPU进行运算。如果GPU不在安全世界,那就会造成泄密。\x0d\ 为了解决上述问题,有了第二种解决方案,称作TZMP1(Trustzone Media Protection 1),引入了保护世界的概念。\x0d\ 保护世界工作于非安全世界,这样才能兼容图形驱动。那安全怎么办?它需要添加四根管脚NSAID,类似于安全世界的PROT信号,只不过做了更细的划分,使得GPU/视频/显示模块要访问被保护内存时,预先定义好了权限。而这个权限的设置,也是通过前文的TZC400来实现的,在安全启动链中就完成。CPU的权限通常是0,也就是最低。而显示控制器权限是只读。\x0d\ 这样一来,我们之前的老问题,恶意缓存监听,又回来了。在新的A73和G71加CCI500/550总线系统里,可以支持双向硬件一致性。这意味着GPU也能被监听。这下大家都在非安全世界,缓存里的安全位不起作用,怎么解决?这需要总线的配合。\x0d\ ARM的总线CCI500/550,有一个保护模式,打开后,不光支持上文的NSAID管脚,还可以在监听的时候,把监听传输替换成缓存行无效化命令,直接让目标把相应缓存行无效化。这样一来,数据还是需要从内存读取,保证安全。并且这个过程对软件透明,无需做任何改动。\x0d\ 可是此时,辛辛苦苦设计的硬件一致性就完全起不到加速作用了,性能受到影响。好在运行OpenGL ES的时候,GPU是不会发出共享传输的,CPU也不会没事去监听GPU的数据。而下一代的图形接口Vulkan,会开始使用GPU双向一致性,那时候会有影响。还有一点不利的是,如果同时运行OpenCL和DRM,OpenCL也用不上双向硬件一致性,必须重启系统切换到非保护模式才行。\x0d\ 还有,在实际使用中,现有的TZC400作为内存保护模块,有几个致命的缺陷。\x0d\ 第一,它的配置只能在启动时完成,无法动态改变,也就是说,一旦某块内存给了安全世界,就无法再被非安全世界的 *** 作系统使用,哪怕它是空闲的。在4K视频播放时,需要分配几百兆内存,还不止一块。\x0d\ 如果一直被占着,这对于4GB内存手机来说是个沉重的负担。怎么解决?只能改成动态配置。此时,如果内存不够了,非安全 *** 作系统提请求给安全系统,让它把暂时不用的物理内存设到非保护内存区,并定个时间收回。不过这样一来内存分配机制就复杂了,说不定还得改内核,很危险。\x0d\ 如果忽视这点,继续往下走,还会遇到第二个问题。TZC400和它的改进版最多只能支持最小颗粒度为2MB的内存块管理。为什么不弄细些呢?很简单,如果设成4KB,和系统页大小一致,那么4GB的物理内存就需要一百万条目来管理。如果做成片上内存,比二级缓存还大,不现实。\x0d\ 而做内存映射,就和MMU一样了,经过CPU的MMU后,数据访问还要再穿越一次MMU,延迟显然大。此外,这一层的MMU无法利用一二级缓存放页表,效率极低。如果继续保持2MB的颗粒,那么在分配内存的时候,很快就会因为块太大而用完。就算使用了上一节的方法,问题也没法很好解决。这就是TZMP2V1。\x0d\ 在这种情况下,第三种基于虚拟机的方案就出现了。不过这个方案基本上推翻了Trustzone最初的设计意图,我们来看下图:\x0d\\x0d\在这里,作为内存保护的TZC400完全移除,而系统MMU加了进来。内存保护怎么做?靠物理地址重映射。先看处理器。在启动链中,从EL3向EL2跳的过程时,就定义好保护内存,并且EL2,也就是虚拟机的页表存放于保护内存,EL1的安全页也同样放在保护内存。\x0d\ 这样,当处理器进入到EL1,哪怕通过篡改EL1非安全页表的安全位,也最终会被映射到它所不能访问的安全内存,从而起到保护作用。同样的,给处于非安全世界的控制器也加上系统MMU,让设备虚拟化,同样可以控制安全。这就是TZMP2V2。有了系统MMU,页表可以做成4KB大小了,也不用担心CPU那里穿越两次MMU。这时候,也不用担心恶意监听缓存,因为所有穿过二级MMU的访问里,安全位都是经过检验的的。\x0d\ 但是,不看别的,光是为设备加入这些系统MMU,就会增加很多面积。还有,光加MMU不够,还要加入系统的三级甚至四级缓存,才能让MMU效率更高,不然延迟太大。当然,如果设备使用的页表并不很多,可以对MMU简化,比如增大最小颗粒度,减少映射范围,直接使用片内内存。这需要系统设计者来做均衡。对于GPU来说,要支持双向一致性,还得考虑让监听传输通过MMU,不然功能就出问题了。\x0d\ 如果使用了TZMP2V2,那么虚拟化就变成了一个切实需求。然后会发现,ARM的中断和设备的虚拟化还很不完善。接下来我从硬件角度解释下虚拟化。\x0d\ 说到虚拟化,先要解释系统MMU。\x0d\\x0d\如上图所示,系统MMU其实很简单,就是个二层地址转换。第一层,虚地址到实地址,第二层,实地址到物理地址。请注意,没有第二层转换时,实地址等同于物理地址。这个模块既可以两层都打开,也可以只开一层,看情况而定。\x0d\\x0d\上图比较清楚的显示了一层映射的过程。其中,设备发出的虚地址请求,会先经过TLB,它里面存了以前访问过的页表项,如果有,就直接返回,没有就往下走到第二步table walk。\x0d\ 第二步里,MMU会按照预设的多级基址寄存器,一级级访问到最终页表。如果MMU位于CPU内,那table walk过程中每次访问的基址和表项,都可以存放于缓存中,大大提高效率。如果在设备上,只有内建的TLB表项,后面没有缓存,那未命中TLB的都是访问DDR,效率自然下降。\x0d\ 所以CPU和GPU等经常访存的设备,都是自带第一层MMU和缓存。而对于没有内部MMU,切换页表又不是很频繁的设备,比如DMA控制器,可以在下面挂第一层MMU,此时驱动就简单了,直接把应用程序看到的虚地址给DMA的寄存器就行,MMU会自己按照基地址去查找相应页表并翻译,把实地址送到总线。不然,驱动还要自己查找实地址再写入寄存器。\x0d\ 我们前面说过,在TZMP1和TZMP2v1中,内存保护是靠TZC400来完成的。而到了TZMP2v2,取消了TZC400,这时靠虚拟化的二层地址映射。\x0d\ 二层映射的过程和一层映射基本一样,不再详述,但是性能问题会被放大。假设在一层中,经过四级基址查到最终页,而在二层中,这每一级的基址查找,又会引入新的四级基址访问。所以至少要经过4x4+4=20次访存,才能确定物理地址。如果没有缓存的帮助,效率会非常低。\x0d\ 其他可行的办法是减少基址级数,比如linux只用了三级页表,但即使如此,也需要3x3+3=12次查找。在包含缓存的ARM CPU上,虚拟机的效率可以做到80%以上。而二层MMU应用于设备实现设备虚拟化的时候,就需要小心设计了。\x0d\ 有了系统MMU,我们就有了全芯片虚拟化的基础。那在对系统性能和成本做完平衡,采取合适的系统MMU设计之后,是不是就可以实现虚拟化,并且靠虚拟化实现安全了?没那么容易,还有其它问题需要考虑。\x0d\ 虚拟化脱胎于仿真器,就是在一个平台上模拟出另一个平台。在指令集相同的时候,没有必要翻译每一条指令,可以让指令直接被硬件执行,这样指令的效率算是得到了解决。当然,对于某些特殊指令和寄存器访问,还是需要hypervisor处理的。接着第二个问题,访存。\x0d\ 我们前面解释过,对CPU来说,高效的虚拟化访存,就是让指令高效的经过两层翻译,而不是每次访存都需要触发虚拟机EL2的异常,切到Hypervisor,再得到最终物理地址。这一点在没有缺页异常的时候,ARM的虚拟化也已经做到了,而有缺页异常时还是需要Hypervisor处理。再接着是设备访存虚拟化,有了系统MMU,也可以高效做到。再就是处理器和设备中断虚拟化。\x0d\ 最后,设备的虚拟化需要管理,那设备本身需要支持虚拟设备号和虚拟中断号。更多内容请期待。要想成为系统的的物联网工程师需要系统学习。由浅入深地对嵌入式物联网技术以及Linux平台全面掌握,能够独立胜任物联网开发、嵌入式Linux应用开发、5G周边产品开发、底层系统开发、设备驱动开发、从终端到云技术开发以及Linux衍生产品等多方面工作。可以更加系统的了解嵌入式物联网相关行业知识。具体所学知识包括:1嵌入式C语言高级编程及行业应用2各常用数据结构与算法相关知识,以及面向接口的编程3GUI图形库应用开发技术4Linux *** 作系统使用5Linux系统编程6Linux系统网络编程7Linux网络路由及数据交换技术8嵌入式数据库9嵌入式C++语言编程,以及面向模板库的应用开发10OpenCV、OpenGL等图像处理11AI模型训练及场景定位识别应用12RFID场景应用13zigbee低功耗网络技术14Bluebooth组网技术15MQTT云平台搭建技术16NB-IOT各大云平台通信技术17基于5G技术的嵌入式物联网行业应用18ARM体系结构19Bootloader启动过程20常见Bootloader源码及平台移植21嵌入式Linux内核裁减以及移植 22嵌入式Linux平台搭建技术及技巧物联网的要求有哪些李松
一个努力上进的码农
来自专栏STM32学习分享
在“剖析物联网的要求—第一部分”中介绍了先进的工艺技术、低功耗设计技术、多核系统的功耗问题、内核间的通讯、串行存储器接口以及系统安全。第二部分, 我们将介绍 BLE 无线链路、模拟前端、智能触摸界面以及其他重要的物联网设计技术。
无线连接技术的发展:
基于物联网的设备连接仍处于起步阶段。这意味着,随着新应用程式的涌现,显著提高了微控制器(MCU)系统在速度、功耗、范围和容量方面的需求。该领域的潜在商机打破了在设计方面的局限性。蓝牙技术联盟最新(特殊利益集团)宣布,蓝牙50标准定位于电子产业对物联网市场需求的典型布局。内容指出,全新的 BLE 标准可提供两倍的传输速度、四倍的传输范围以及广播包的数据承载量是上一个版本的8倍。这些新的技术特性将极大地促进物联网设备与我们日常生活间的各种连接。MCU作为物联网设备的核心,必须与时俱进,紧跟协议的发展进程,支持新标准提供的各种特性。以下是即将推出的最新BLE标准的主要特性。
· 速度(传输更快):蓝牙50传输速度上限为2Mbps,是之前42版本的两倍。
· 传输距离(通信距离更远):有效工作距离可达300米,是旧版本的4倍之多。
· 低功耗(延长电池/设备工作时间):协议优化大大降低了能源消耗,提升了其性能。
· 广播能力(更大的承载量):协议优化将提升800%增长的数据广播包的承载量。
· 安全功能:高安全加密及认证,确保只允许经受权用户跟踪设备位置和安全配对。
扩充处理器容量、内存及功耗方面的性能不会凭空而来。对于许多应用程序而言,底层硬件(例如MCU)需要做出相应调整以适应这些特性。因此,生产商在设计下一代MCU时必须时刻紧记这些要求。例如,赛普拉斯 PSoC 6 BLE MCU(见图1)为物联网设计人员提供BLE 50所具备的这些功能。
尽管这些特点会增加MCU的负载,但也能为终端用户带来诸多好处:
· 性能(范围优势):相比于基于物联网的其他协议,如Wi-Fi及ZigBee,BLE已经成为无线通信协议的首选。改进过的覆盖范围将确保蓝牙设备(如扬声器、智能门锁、灯泡等)可以在家里任意位置实现完全连接。这是真正实现智能家居的关键一步。BLE 50也有可能取代高功耗的Wi-Fi,控制智能家居设备。改进后的覆盖范围还能让智能手表等设备更方便地接收来自智能手机的即时通知。
· 低功耗(速度优势):更快的转输速度提高了响应能力。对于那些非数据密集型物联网设备来说,更快的速度意味着会带来更低的消耗及更长的使用寿命。例如,将传输速度增加两倍,发送/接收时间减少近一半。这样就可以减少功耗,因为设备可以迅速进入低功耗模式。此外,更高的传输速度支持周期性的设备软件更新,这将是物联网应用的一个重要功能。
· 无线连接服务(广播容量优势):广播容量的显著增加将使信息传输更加丰富和智能化,Beacon等无线连接服务将能够传输更多的信息。举例来说,Beacon可以传输实际内容,而不是通过URL指向内容。这可能将重新定义蓝牙设备传播信息的方式,因为它通过无需连接的物联网传输信息,而非蓝牙配对设备模式。这有可能让资产跟踪和智能垃圾管理等先进的应用更加智能地使用网状网络。
智能触摸界面:
正如第一部分中所讲到的,物联网设备跨越消费类、工业、汽车和商业应用领域。这些应用都能受惠于美观的的用户界面,且具备产品差异化,如触摸显示屏、按钮/滑块以及近距离感应。为了让用户享受最佳体验
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)