最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

HCIP

运维笔记admin32浏览0评论

HCIP

HCIP

一 华为云物联网解决方案

物联网(Internet of Things)简称:IoT,是新一代信息技术的重要组成部分,也是“信息化”时代的重要发展阶段。随着5G的商用和AI的快速发展,物联网正进入AIoT的时代,5G,IoT,AI,Cloud,真正驱动行业数字化变革,使能行业落地,实现商业闭环。华为云IoT云服务致力于“联万物、+智能、为行业”,打造极致体验的全栈全场景物联网云服务,聚合产业生态,使能客户商业成功。华为云IOT致力于“智简联接” ,以可信的端到端安全为基础,提供芯(5G+AI), 端(LiteOS轻量级系统),边(Iot边缘),云(华为云IOT),全栈全场景物联网云服务.华为云IOT使用极简联接,使城市基础设施智能化,让城市工作者从纷杂的工作中解放,也让安全隐患无处可藏,用数字化建模和智能分析接手低效的人工作业. 助力物流仓储行业实现降本增效。用工业智能边缘和工业数字孪生,增强机械与智慧的联接,让生产更加高效。用端边云协同,结合AI的智慧赋予,让前行的道路畅通无阻,也让每一次出行更加安心。万物互联,则万物协力。1 物联网的层次划分行业应用 数据呈现及客户交互 智慧园区 车联网 智慧城市 智慧工业云解决数据如何存储、检索、使用、业务规划、安全、维护、费用等云市场 产品中心 开发平台 运营中心管接入和传输网络2G/3G/4G NB-IoT/eMTC5G eLTE LoRa AR502 AR531端 信息收集和信号处理Huawei LiteOS / 芯片 / 模组在物联网的层次划分中,以下哪一项负责终端接入和数据传输?A 感知层B 网络层C 应用层D 平台层答案:B PLC通信技术是指利用电力线传输数据和媒体信号的一种通信方式。trueNB-IoT聚焦于物联网,具有覆盖广、功耗低、速率快、连接多的特点。false特点:覆盖广、功耗低、速率低、连接多、成本低、架构优下列描述属于物联网网络层功能的是?A.数据呈现及客户交互 应用层B.设备通信管理、数据存储与业务规划 平台层C.终端接入及数据传输 网络层D.信息收集与信号处理 感知层答案: C 下列通信技术的特点与业务应用场面描述错误的是?A.LTE-V带宽>10Mbps,适用于车联网场景B.视频监控通常通过GPRS来传输,它的带宽在1Mbps左右 5gC.eMTC的带宽在1Mbps,适用于智能穿戴设备的接入D.NB-IoT带宽<100kbps,但是它功耗低,覆盖范围广,适用于抄表业务答案:B下列关于M-BUS描述错误的是?A.M-BUS网络模型完全参照OSI模型 没有完全参照 具体详见(人人学IoT-稳定可靠的有线通信)B.M-BUS在远程抄表应用中可抄达300个节点C.M-BUS总线通讯距离可达1000米D.M-BUS串行通信方式采用总线型拓扑结构答案: A 下列关于ZigBee的描述错误的是A.ZigBee是一种长距离、低功耗的无线通信技术 短距离低功耗B.ZigBee基于IEEE802.15.4标准的低功耗局域网协议C.ZigBee工作在免授权频段D.ZigBee广泛应用于工业和智慧家庭领域答案:A 下列关于RS-232与RS-485的区别描述正确的是?A.RS-232采用单端通讯,RS-485采用平衡传输B.RS-232的传输距离不超过20米,RS-485的传输距离可达几十米到上千米C.RS-232在PC机是COM1,RS-485在PC机是COM2 232 DB-9 DB-25D.RS-232一对一通信,RS-485一对多通信答案: ABD下列通信技术哪些属于短距无线通信?A.PLC 有线通信B.ZigbeeC.Z-WaveD.RS-232 有线通信答案:BC下列通信技术属于LPWA的是A.NB-IoTB.SigFoxC.LoRaD.Zigbee 短距无线通信答案: ABC下列通信技术中,频段在Sub-G免授权频段的是A.NB-IoTB.Wi-FiC.LoRaD.SigFox答案: CD轻量级操作系统LiteOS传统嵌入式设备 + Huawei LiteOS ---》 物联网智能设备------------------------------------------------Open APIS------------------------------------------------互联互通框架 多传感框架 低功耗框架 安全 IDE工具AI引擎 JS 引擎 ...LiteOS StudioLiteOS Kernel------------------------------------------------ARM/X86/RISC-V工业物联网关Aglie AR 工业交换 | 工业路由 | 内置计算工业级设计 防震 防水 防尘 防电磁丰富接口支持 ZigBee RF Blue-Tooth RS485 RS232 DI/DO ...复杂协议适配 PLC RFID CAN M-Bus Wifi ...本地智能 本地计算与存储主流物联网接入技术应用场景划分特点业务应用4G/5GLTE-V传输速率 > 10Mbps; 功耗较高 车联网、视频监控、智能机器 ----------------------------------------------------------------------eMTCGPRS 传输速率 < 1Mbps; 成本较低; 功耗较低 穿戴、车辆调度、电子广告、无线ATM...----------------------------------------------------------------------NB-IOT 传输速率 < 100Kbps; 成本低;功耗低;覆盖广远程抄表、公共事业、农林渔牧...eMTC的基本特性第一,系统复杂性地大幅度降低,复杂程度及成本得到了极大的优化。第二,功耗极度降低,电池续航时间大幅度增强。第三,网络的覆盖能力大大加强。第四,网络覆盖的密度增强。eMTC具备LPWA基本的四大能力:一是广覆盖,在同样的频段下,eMTC比现有的网络增益15dB,极大地提升了LTE网络的深度覆盖能力;二是具备支撑海量连接的能力,eMTC一个扇区能够支持近10万个连接;三是更低功耗,eMTC终端模块的待机时间可长达10年;四是更低的模块成本,大规模的连接将会带来模组芯片成本的快速下降,eMTC芯片目标成本在1~2美金左右 。eMTC还具有四大优势:一是速率高,eMTC支持上下行最大1Mbps的峰值速率,远远超过GPRS、 ZigBee等物联技术的速率,eMTC更高的速率可以支撑更丰富的物联应用,如低速视频、语音等;二是移动性,eMTC支持连接态的移动性,用户可以无缝切换保障用户体验;三是可定位,基于TDD的eMTC可以利用基站侧的PRS测量,在无须新增GPS芯片的情况下就可进行位置定位,低成本的定位技术更有利于eMTC在物流跟踪、货物跟踪等场景的普及:四是支持语音,eMTC从LTE协议演进而来,可以支持 VOLTE语音,未来可被广泛应用到可穿戴设备中。设备接入IoTDA

华为云设备接入服务中提供了以下哪几项设备管理能力?A 设备联动规则B OTA 升级C 设备批量操作D 设备实时状态监控答案:ABCD 在华为云设备接入服务中,数据流转提供了以下哪一项能力?A 系列化SDK接入B 数据转发规则C 多协议接入D 多网络接入答案: B以下哪几项属于华为云设备接入服务提供的能力?A 模型B 设备影子C 订阅推送D 命令下发答案:ABCD华为云IoTDA服务提供设备同步与设备异步命令的接口,其中设备异步命令适用于NB-IoT设备异步命令下发,不支持其他协议类型设备命令下发。A TRUEB FALSE答案:B 数据分析IOTA

智慧城市

智慧园区

智慧消防

智能路灯

智慧路灯案例(基于NB-IOT):

实验准备 开发板:小熊派开发板(含 NB 卡、NB35-A 通信扩展板、E53_SC1 案例扩展板等)IDE:IoT Studio(安装资料包中的版本)平台:华为云账号(需完成实名认证)硬件连接:连接好 E53_SC1 案例扩展板和 NB35-A 通信扩展板,NB35-A 通信扩展板需要安装 SIM卡,并注意卡的缺口朝外插入。将串口选择开关拨到 MCU 模式,并用 USB 线将开发板与电脑连接什么是产品模型产品模型用于描述设备具备的能力和特性。开发者通过定义产品模型,在物联网平台构建一款设备的抽象模型,使平台理解该款设备支持的服务、属性、命令等信息,如颜色、开关等。当定义完一款产品模型后,在进行注册设备时,就可以使用在控制台上定义的产品模型。产品模型包括产品信息和服务能力:产品信息 描述一款设备的基本信息,包括厂商ID、厂商名称、设备类型、协议类型。例如:水表的厂商名称为“HZYB”,设备类型为“WaterMeter”,协议类型为“CoAP”。服务能力描述设备具备的业务能力。将设备业务能力拆分成若干个服务后,再定义每个服务具备的属性、命令以及命令的参数。以水表为例,水表具有多种能力,如上报水流、告警、电量、连接等各种数据,并且能够接受服务器下发的各种命令。产品模型文件在描述水表的能力时,可以将水表的能力划分五个服务,每个服务都需要定义各自的上报属性或命令基础(WaterMeterBasic) 用于定义水表上报的水流量、水温、水压等参数,如果需要命令控制或修改这些参数,还需要定义命令的参数。告警(WaterMeterAlarm) 用于定义水表需要上报的各种告警场景的数据,必要的话需要定义命令。电池(Battery) 定义水表的电压、电流强度等数据。传输规则(DeliverySchedule) 定义水表的一些传输规则,必要的话需要定义命令。连接(Connectivity) 定义水表连接参数。 物联网平台提供了多种定义产品模型的方法,您可以根据自己需求,选择对应的方法定义产品模型。自定义模型(在线开发):从零自定义构建产品模型.上传模型文件(离线开发):将本地写好的产品模型上传到平台.Excel导入:通过导入文件的方式快速定义产品功能。对于开发者来说,降低产品模型开发门槛,只需根据表格填写参数;对于高阶开发者和集成商来说,提升行业复杂模型开发效率。例如,楼宇自控空调模型包含的service条目超过100条,在表格中编辑开发产品模型,效率大大提升,可以随时编辑调整参数。导入库模型(平台预置产品模型):您可以使用平台预置的产品模型,快速完成产品开发。当前平台提供了标准模型和厂商模型。标准模型遵循行业标准的产品模型,适用行业内绝大部分厂商设备,而厂商模型针对设备类型发布的产品模型,适用于用行业内少量厂家设备。您可以根据实际需求选择相应的产品模型。智慧路灯案例的开发的整体流程:创建项目 通过开发中心在IoT 平台创建项目空间,供应用系统和终端设备接入1 使用华为云账号,登录物联网应用构建器2 选择右下角的“创建项目”,填写“创建项目”,单击“确定”3 创建完成后会生成自己建好的项目之后单击“进入开发”4 进入“IoT Studio”界面下单击“创建应用”填写参数后,单击“确认”应用名称:StreetLight创建产品 使用开发中心预置的快速集成模板,创建一款产品,含Profile和插件某一类具有相同能力或特征的设备的集合称为一款产品。除了设备实体,产品还包含该类设备在物联网能力建设中产生的产品信息、产品模型(Profile)、插件、测试报告 等资源。1 使用华为云账号,登录设备接入,选择页面左侧的产品,单击右上角下拉框,选择新建产品所属的资源空间,比如叫做:StreetLight2 单击右上角的“创建产品”,创建一个基于 CoAP 协议的产品,填写参数后,单击“立即创建”.产品名称 Easthome_StreetLight所属资源空间 StreetLight 设备类型 办公灯具协议类型 LWM2M/CoAP 数据格式 二进制码流 (只有这一种数据格式)3 Profile 定义在“功能定义”页面下,单击“自定义模型”,配置产品的服务服务ID: 1000服务类型: Button在“Button”的下拉菜单下点击“添加属性”属性名称: toggle 数据类型:int 访问权限: 可读 可写 取值范围: 0 - 65535新增服务名称 LED在“LED”的下拉菜单下点击“添加命令”填写相关信息服务ID: 1001命令名称 Set_Led 在“新增命令”里点击“新增输入参数”填写相关信息参数名称: led 数据类型 string (字符串)长度:3 枚举值:ON,OFF (使用英文逗号进行分割)同样在“新增命令”里点击“新增输出参数”填写相关信息参数名称:light_state 数据类型: string 长度:3 枚举值:ON,OFF新增服务名称 Sensor服务ID: 1002服务类型: Sensor在“Sensor”的下拉菜单下点击“添加属性”填写相关信息属性名称: luminance 数据类型: int 访问权限: 可读可写 取值范围:0~65535新增服务名称 connectivity在“功能定义”下点击“添加服务”填写相关信息 在“Connectivity”的下拉菜单下点击“添加属性”填写相关信息:SignalPower,ECL,SNR,CellIDSignalPower int 可读可写 -140 -- -44ECL int 可读可写 0 -- 2SNR int 可读可写 -20 -- 30CellD int 可读可写 0 -- 65535编解码插件开发在产品详情插件开发页面,选择“图形化开发”,单击“图形化开发”在“在线开发插件”区域,单击“新增消息”新增消息 Report_Connectivity消息名:Report_Connectivity消息类型:数据上报 添加响应字段:是 响应数据:AAAA0000(默认)在“新增消息”界面,单击“添加字段”。在“添加字段”界面,勾选“标记为地址域”,然后单击“确认”,添加地址域字段 messageId(数据类型 大端模式 int8u 长度 1 默认值 0x0 偏移量 0-1)......

拖动右侧“设备模型”区域的属性字段、命令字段和响应字段,与数据上报消息、命令下发消息和命令响应消息的相应字段建立映射关系

在线调试在“在线调试”下单击“新增调试设备”填写相关信息设备名称:TEST(自定义即可)设备标识码:该设备的 IMEI 号,可在设备上查看应用开发 打开华为“IoT Studio”里的“web 在线开发”单击之前创建好的应用,进入在“开发应用”界面,点击“开发应用”将鼠标移至“自定义页面 1”上,在弹出的列表中选择“修改”,修改页面信息。在弹出的窗口中,修改“菜单名称”为“路灯管理”,其他保持默认,然后点击“确定”选择“路灯管理”页面,设计页面组件布局。拖动 1 个“选择设备”组件、2 个“监控”组件和 1 个“命令下发”组件至页面中分别单击页面中的“监控”组件,在右侧“配置面板→样式”中设置组件的样式参数 光强监控 光强变化标题 光强监控 光强变化显示类型 简易 图表样式 保持默认分别单击页面中的“监控”组件,在右侧“配置面板→数据”中设置组件的数据源。因为 2 个“监控”组件都是用于监控路灯的光强,只是显示方式不同,所以“数据”页面参数设置一样产品:选择创建产品中已创建的产品服务:Sensor属性:luminance单击页面中的“命令下发”组件,在右侧“配置面板”设置对应功能的属性参数路灯管理页面构建完成,点击右上角“保存”,然后点击“预览”查看应用页面效果------------------------------观察光照强度 点击“预览”进入查看设备的参数,把设备切换到光暗程度不同的环境下,观察其参数变化在“预览”页面下“路灯管理”页面,选择“命令下发”,点击“设置参数”,“led”选择“ON”,单击“发送命令”,此时开发板的照明灯为打开状态关灯命令与开灯命令操作步骤一样,差别是“led”选择“OFF”。----------------------------设置自动开关灯规则1 新建两条规则,分别用于控制照明灯在不同条件下的开和关。 选择“规则”,单击“创建规则组”2 在“创建规则组”里填写名称(自定义),例如 LED,如图 11- 5 所示:创好后可以发现所有规则里多了一个 LED 组,之后点亮 LED 前的框,在点击右上角的“创建规则”选择“设备联动规则”在“创建规则”界面,分别填写开、关灯规则信息设备开发 使用LiteOS Studio 将预置的程序进行编译,并烧录到开发板中应用开发 通过华为IoT Booster平台或软件开发服务,构建和部署应用系统软件业务调试 使用完备的开发板和应用系统,进行智慧路灯业务功能的调试智慧按摩师----------------------------------------AI体验:语音、手机等AI交互操作,更简单,更随心 强决策:大数据、AI等先进技术辅助市场精准决策 高溢价:设备上云,杜绝假冒产品;加入华为生态圈,大品牌背书解决方案:AI分析:海量数据实时采集,AI算法分析,多样式报表呈现数据开放:华为开放用户数据,不拿数据变现生态共赢:借力“华为”品牌和持续演进技术能力,构建更强品牌影响力----------------------------------------下列选项中,在创建产品API的protocol_type参数取值范围内的有哪几项?A ONVIFB HTTPSC CoAPD MQTT答案: BCD下列选项中,关于华为云物联网平台中厂商名为manufacturerName命名不正确的是哪一项?A HuaweiB 华为C Hua-WeiD Huawei_China答案:B某开发者在使用华为云物联网平台进行开发时,想要根据光敏设备上传的光照值实时控制路灯的开和关,若开发者打算使用代码的方式实现该功能,则需要将创建规则API的rule_type参数值设置为以下哪一项?A DATA_FORWARDINGB DEVICE_LINKAGEC EDGED ACTIVE答案: B什么是物联网?就是物物相连的互联网。这有两层意思:其一,物联网的核心和基础依然是互联网。是在互联网的基础上的延伸和扩展的网络;其二,其用户端延伸和扩展到了任何物品与物品之间进行信息交换和通信,也就是物物相息物联网的层次架构可以分为四层感知 网络 平台 应用华为云物联网解决方案关键特性华为云物联网平台作为物联网的核心层,向下接入各种设备,向上通过开放API集成各种行业应用,并与其他配套服务组成华为云物联网解决方案。服务 分类描述设备接入设备连接提供支持设备接入平台的能力,支持多种协议接入及多种接入方式。 设备管理提供平台对设备和设备数据的操作管理能力。数据转发提供将数据转发至华为云其他服务的能力。应用集成提供行业应用接入平台的能力,通过API实现平台能力开放。IoT开发者服务提供无码化构建物联网应用的能力。IoT数据分析提供对物联网设备数据的分析能力。其他配套服务与物联网平台配套的其他物联网服务,与物联网平台无缝对接,共同构建解决方案。设备接入华为云IoT模式

产品开发

华为云物联网平台支持在线开发产品。在物联网平台中,某一类具有相同能力或特征的设备的合集被称为一款产品。产品主要包括产品模型和编解码插件。产品模型,即物模型,用于描述设备具备的能力和特性。开发者通过定义产品模型,在物联网平台构建一款设备的抽象模型,使平台理解该款设备支持的服务、属性、命令等信息,如颜色、开关等。编解码插件,是当设备与平台间使用二进制编码通信时,需要在平台侧部署编解码插件将设备上报的二进制编码的消息转换为JSON格式消息,以及将平台下发的JSON格式命令转换为二进制编码。 设备注册&设备接入鉴权

设备注册,指用户通过控制台或调用注册设备API在IoT平台中注册设备信息,平台中存在设备信息后,再接入真实的实体设备,这样平台与终端实体设备可以实现连接和通信。设备接入鉴权,是指IoT平台对接入平台的设备进行鉴权认证,用于保障设备接入信息的完整性和安全性、设备与平台消息传输完整性和安全性。以下哪几项是设备接入服务支持的设备通信协议?A RESTB SMTPC MQTTSD LwM2M 答案: C D 解析: 支持NB-IoT、2/3/4G、网关等方式接入,接入协议支持MQTT(S)、CoAP(S)、LWM2M协议. 设备数据采集

IoT平台提供设备数据采集功能。支持对设备数据的订阅,应用向IoT平台进行设备数据订阅,当设备上报数据时,平台会向应用推送消息。支持查看设备的当前的属性(最新上报值),可通过控制台查看或者调用接口进行查询。设备影子

IoT平台支持创建设备的“影子”,用于存储设备上报的最新数据(report区)和应用对设备属性的最新配置数据(desired区)。report区当IoT平台获取到设备真实数据时,会将真实数据同步到设备影子的report区。当设备不在线时,可以通过设备影子获取设备最新数据。desired区设备在线时,设备影子的desired区数据会即时同步到设备。设备不在线时,设备影子的desired区数据会在设备上线后同步到设备。仅LWM2M协议设备支持设备影子功能。仅支持修改LWM2M协议定义的属性信息,用户自定义的设备属性信息暂不支持修改。命令下发设备的产品模型中定义了IoT平台可向设备下发的命令,平台向设备下发命令,修改设备的服务属性,实现对设备的控制。

IoT平台提供两种命令下发机制:立即下发:IoT平台立即发送收到的命令,如果设备不在线则下发失败。立即下发适合对命令实时性有要求的场景。缓存下发:平台收到命令后放入队列。在设备上线的时候,平台依次下发命令队列中的命令。缓存下发适合对命令实时性要求不高的场景。设备联动规则设备联动规则是指用户可以对接入IoT平台的设备设定相应的规则,在条件满足所设定的规则后,平台会触发相应的动作来满足用户需求。

在下列产品生命周期的各个阶段中,哪一个阶段会使产品因缺陷带来最大的影响?A 生产B 市场C 设计D 测试答案: C 设备固件升级&设备软件升级

设备固件升级(FOTA)是通过OTA(Over the air)的方式对设备的模组进行升级,基于LWM2M标准协议实现。设备软件升级(SOTA)是通过OTA的方式对终端设备的MCU进行升级,基于华为定义的PCP升级协议实现。设备批量操作

IoT平台支持对设备的批量操作:批量注册设备:因注册设备数量过多而导致注册时间太长,可采用批量注册的方式注册设备。当前仅支持通过控制台批量注册。批量软固件升级:当IoT平台需要对批量设备进行软固件升级时,可创建批量软固件升级任务。数据转发IoT平台支持对接华为云其他服务,实现设备数据按需转发和处理,您无需线下购买和部署服务器,即可实现设备数据的存储、计算、分析的全栈服务。

应用注册鉴权

用户基于华为的IoT平台开发物联网应用,需要调用IoT平台提供的应用侧接口。为确保每一个用户合法的接入到平台,合法的享用平台资源,高效地利用平台提供的服务套件进行应用开发,IoT使用华为云统一身份认证服务(IAM)提供的token鉴权能力对接口调用者进行鉴权。行业应用在调用IoT平台接口前,需要先携带API凭证信息(账号名、用户名、密码等)调用IAM的接口获取token,然后携带token调用IoT平台的接口实现业务。token有效期24小时,过期后需要重新调用IAM的接口获取新的token。订阅通知

行业应用通过API接口向IoT平台进行订阅,告知IoT平台行业应用需要收到的通知类型,比如设备激活,设备数据变化,设备消息状态等。当平台中设备的相关信息有更新时,平台会通过HTTP/HTTPS协议向应用推送消息。在推送场景下,IoT平台是客户端,应用服务器是服务端,IoT平台调用应用服务器的接口,并向应用服务器推送消息。此时,如果订阅的回调地址为HTTPS地址,则需要在物联网上传CA证书,CA证书由应用服务器侧提供。应用侧Restful API (1)IoT平台开放了40+应用侧Restful API给第三方应用开发者,开发者通过调用开放的API,快速集成IoT平台的功能。当前IoT平台对外提供了如下几类开放API:接口分类 描述订阅管理 为应用提供对设备信息的订阅功能,若订阅的设备信息有变更,平台会推送消息至应用。标签管理 为应用提供对标签的操作管理功能。当前仅支持设备标签。批量任务 为应用提供批量任务功能,对接入IoT平台的设备进行批量操作,当前仅支持批量软固件升级。设备CA证书管理为应用提供对设备CA证书的操作管理功能。设备CA证书用于设备接入鉴权的证书认证方式。设备组管理 为应用提供对设备组和设备组成员的操作管理功能。设备组用于对设备进行分组管理。设备消息为应用提供对设备下发消息的能力。消息与命令的不同在于消息可自定义,无需在产品模型中定义。产品管理为应用提供对产品的操作管理功能。API创建的产品不包括编解码插件。设备管理为应用提供对设备的操作管理功能,除增、删、改、查设备外还支持重置设备秘钥。设备影子为应用提供对设备影子的操作管理功能,可以查询影子数据和配置期望值。设备命令为应用提供向设备下发命令的功能。下发的命令需要在设备的产品模型中定义。设备属性为应用提供对设备属性的操作管理功能,可以查询和修改设备属性。规则管理为应用提供对规则的操作管理功能。条件触发规则和定时规则需要使用不同的API创建。在下列应用侧API中, 属于产品管理类API的有哪几项?A 删除产品B 查询产品列表C 创建产品D 修改产品答案: ABCD在下列应用侧API中,不属于设备管理类API的是哪一项?A 查询设备列表B 重置设备秘钥C 下发设备消息D 创建设备答案:C 开发者在华为云物联网平台创建设备时,下列Body参数中,哪几项是必填的?A device_nameB device_idC node_idD product_id答案: ABCD某用户打算使用华为云对象存储服务来存储部分数据,这部分数据的内存为一些热点视频和社交图片,因此需要频繁地对数据进行访问。根据上述描述,以下哪一项存储类别最适合该用户使用?A 深度归档存储B 归档存储C 标准存储D 低频访问存储答案:ABCD以下哪几项是设备接入服务支持的设备通信协议?A LwM2MB SMTPC MQTTSD REST答案: A CIoT开发者服务企业痛点:初期投入有限,但希望快速构建应用尝试业务创新的中小企业客户中小型设备厂商软件开发人员不足,软件开发成本高,构建应用成本高,IoT业务上线困难,周期长。关键能力:快速构建: 5-10分钟快速构建IoT Web APP,提供30+可视化组件供开发者使用,自由灵活拖拽,可见即所得。成本低:结合行业实践,预制行业模板;按需使用,提供免费试用无运维负担:应用托管,华为提供专业运维服务

数据分析架构

资产模型构建物与物,物与空间,物与人等复杂关系,将物联网数据置于模型的上下文中去理解通过IoT+资产模型,在数字世界中构建与物理世界准实时同步的数字孪生基于模型抽象,为数据分析提供面向业务的统一一致的数据基础

时序分析物联网数据具备时间序列特征

具备如下关键信息,同时采样周期可能非常频繁时间戳-timestamp随时间变化的数值- fields附加信息-tags度量-MeasurementTSDB时序洞察系统 时序分析系统数据聚合引擎向量化查询引擎多维倒排索引 空间索引行列混合布局类型感知压缩TSDB 分布式时序数据库高压缩比针对时序数据的专用压缩算法,约20倍压缩率高查询性能多节点多线程并行查询,向量化查询引擎高写入性能每天处理万亿级时间点写入实时分析IOT实时算子基本算子高级算子IoT资产输入数据过滤 数据扁平 数据聚合数据采样IoT数据湖输出 数据转换 数据打包 状态推理地理围栏DIS 输出 流合并 ......异常检测......离线分析离线作业管理作业模板管理SQL作业开发作业管理 作业监控数据开放API存储管理存储表结构管理储存声明周期管理Spark数据湖存储Data Link StorageIoT边缘企业痛点:低时延:为满足低时延要求,需要在离业务现场最近的“边缘”构建解决方案,减少业务处理时延海量数据: 边缘数据爆炸性增长,直接回传至云端成本高昂,数据在本地进行分析和过滤,节省网络带宽隐私安全: 数据涉及企业生产和经营活动安全,在边缘处理企业保密信息、个人隐私本地自治: 不依赖云端的离线处理能力、自我恢复能力关键能力:边云协同:边缘和云端系统,统一部署、运维、业务管理开放架构:开放的架构支持第三方服务的集成,提供丰富的应用生态统一框架,与硬件松耦合:抽象屏蔽硬件接口,统一框架,边缘服务可插拔统一AI模型开发和流程调度:云上训练,边缘执行,云侧服务和逻辑按需推至边缘,服务协同、数据协同、Function协同

全球SIM联接企业痛点:周期长 管理难 成本高 信息安全关键能力:生命周期管理实时监控卡状态实时进行卡状态的控制管理智能网络切换空中动态写卡可根据网络状况智能切换运营商网络连接诊断功能一键式进行卡诊断自动化控制规则自由制定自动处理规则自助定制化平台能力SIM卡管理全网200+国家网络覆盖SIM生命周期管理eSIM/SOC SIM空中写卡,灵活选择最优网络设备发放生产过程无配置,设备上电动态选择接入点设备就近接入设备接入多协议接入(MQTT,CoAP)设备本地化接入设备/网络诊断网络增强多模多接入多路径监控多联接策略一机多卡管理 MQTT、CoAP、HTTP、HTTPS、TCP、UDP…… 行业套件:车联网服务 ICT技术驱动下的汽车产业变革需求: 交通工具 出行服务网联汽车 智慧汽车单车智能 车路协同 关键能力: 联接使能:为汽车提供安全可靠联接,支撑亿级海量连接和百万级高并发; 数据使能:通过对车况和驾驶行为等车辆大数据的采集与分析,使能智能内容分发和业务推荐 演进使能:车联网平台与V2X车路协同发展,从单车智能到车、路协同智能, 使能未来智能交通,提升社会交通整体的安全性和效率

产品模型和编解码的作用?编解码插件的工作包括对上行数据的解码和对下行命令的编码。也就是把设备上报的二进制数据解析为JSON消息,把平台下发的JSON格式的命令消息编码为二进制格式。因此,编解码插件需要对产品的每种上行和下行消息分别定义,逐条解析。编解码插件是使用二进制编码上报数据的设备和物联网平台之间的翻译。以NB-IoT为例,NB-IoT设备和物联网平台之间采用COAP协议通讯。COAP消息的payload为应用层数据,应用层数据的格式由设备自行定义。由于NB-IoT设备一般对省电要求比较高,所以应用层数据一般不采用流行的JSON格式,而是采用二进制格式。但是,物联网平台与应用侧使用JSON格式进行通信,因此需要开发编解码插件,供物联网平台调用,以完成二进制格式和JSON格式的转换。

产品模型物模型又称产品模型,用于描述设备具备的能力和特性。开发者通过定义Profile,在物联网平台构建一款设备的抽象模型,使平台理解该款设备支持的服务、属性、命令等信息,如颜色、开关等。

数据分析有哪几种分析模式?实时分析 离线分析 时序分析华为云物联网平台端到端开发介绍华为云物联网平台(简称物联网平台)提供海量设备的接入和管理,配合华为云其他产品同时使用,帮助快速构筑物联网应用。使用物联网平台构建一个完整的物联网解决方案主要包括3部分:物联网平台、业务应用和设备。物联网平台作为连接业务应用和设备的中间层,屏蔽了各种复杂的设备接口,实现设备的快速接入;同时提供强大的开放能力,支撑行业用户快速构建各种物联网业务应用。设备可以通过固网、2/3/4G、NB-IoT、Wifi等多种网络接入物联网平台,并使用LwM2M/CoAP或MQTT协议将业务数据上报到平台,平台也可以将控制命令下发给设备。业务应用通过调用物联网平台提供的API,实现设备管理、数据上报、命令下发等业务场景。整体方案介绍:

上行消息:解析CoAP报文得到应用层数据---》调用设备厂商的产品模型和插件解码---》 消息送达应用平台下行消息:下发消息--》调用设备厂商提供的产品模型和编解码插件编码--》组装CoAP消息发送到设备 产品模型介绍: 产品模型是用来描述设备能力的文件,通过JSON的格式定义了设备的基本属性、 上报数据和下发命令的消息格式。定义产品模型,即在物联网平台构建一款设备的抽象模型, 使平台理解该款设备支持的属性信息。

当定义完一款产品模型后,在进行设备注册时, 就可以使用在控制台上定义的产品模型在线开发产品模型登录华为云官方网站,访问设备接入服务。单击“立即使用”进入“设备接入”控制台。在左侧导航栏,选择“产品”,在产品列表,选择相应的产品,点击“详情”。自定义产品模型在产品详情的功能定义页面,单击“自定义功能”,配置产品的服务。配置属性各项参数属性名称:首位必须为字母,建议采用驼峰形式,如batteryLevel、internalTemperature。必选:设备上报的这个属性是不是必选。数据类型:配置可参考如下原则:int:当上报的数据为整数或布尔值时,可以配置为此类型。decimal:当上报的数据为小数时,可以配置为此类型。配置“经纬度”属性时,数据类型建议使用”decimal”。string:当上报的数据为字符串、枚举值或布尔值时,可以配置为此类型。如果为枚举值或布尔值,值之间需要用英文逗号(”,”)分隔。DateTime:当上报的数据为日期时,可以配置为此类型。jsonObject:当上报的数据为json结构体时,可以配置为此类型。访问权限:设置应用服务器通过接口访问数据的模式:可读:通过接口可以查询该属性。可写:通过接口可以修改该属性值。可执行:应用服务器订阅了数据变化通知后,设备上报了属性,应用服务器会收到推送通知。 当设备向华为云物联网平台上报可变长字符串时,编解码插件的对应的数据格式不能设置为以下哪几项? A int16u B string C intu8 D varstring 答案 A B C当设备向华为云物联网平台上报可变长数组时,编解码插件的相应数据格式不能设置为以下哪几项?A variantB varstringC arrayD int8u答案: B C Dint8u 8位无符号整形int8s 8位有符号整形int16u 16位无符号整形int16s 16位有符号整形int24u 24位无符号整形int24s 24位无符号整形string 字符串类型varstring 可变长度字符串类型array数组类型variant 可变长度数组类型 当开发者在华为云物联网平台开发时,若响应消息显示请求完全成功,同时HTTP响应不包含响应体,此时 响应消息的状态码为___。 答案: 200 OK华为云IoTDA服务提供设备同步命令

产品模型中文件的目录层级结构必须所示,不能增删例如:第二层级只能有“产品模型”和“service”两个文件夹,每个服务下面必须包含“产品模型”文件夹产品模型文件以zip形式压缩产品模型文件的命名必须按照deviceType_manufacturerld_model的格式命名,其中的deviceType、manufacturerId、model必须与devicetype-capablity.json中对应的字段的定义一致华为云物联网平台的服务能力描述文件必须命名为servicetype-capablity.jsonA TRUEB FALSE答案: A 华为云物联网平台的描述文件中,serviceType指示服务的类型,与devicetype-capablity.json中serviceId字段一致。A TRUEB FALSE 答案: B导出和导入产品模型在“产品详情”界面,单击“导出模型”,将产品模型下载到本地。编解码插件

数据上报流程

在数据上报流程中,有两处需要用到编解码插件将设备上报的二进制编码流解码成JSON格式的数据,发送给服务器将应用服务器响应的JSON格式数据编码成二进制码流,下发给设备命令下发流程:

在命令下发流程中有两处需要用到编解码插件:将应用服务器下发的JSON格式数据编码成二进制流,下发给设备将设备响应的二进制码流解码成JSON格式的数据,上报给应用服务器在华为云物联网平台中,编解码插件的功能可被分为编码和解码两个部分。在命令下发场景下,当设备收到命令后,需要将命令响应结果发送给应用服务器。此时编解码插件需要将命令响应__码成JSON格式数据再进行上报答案: 解 在华为云物联网平台中,编解码插件的功能可被分为编码和解码两个部分。在数据上报场景下, 当应用服务器收到数据后,需要将收到消息的响应下发给设备。此时编解码插件需要将应用服务器 发送的JSON数据__码成二进制数据进行输出。 答案:编华为云物联网解决方案中,当设备与平台间使用二进制编码通信时,需要在平台侧部署以下哪一项将设备上报的二进制编码的消息转换为JSON格式消息,以及将平台下发的JSON格式命令转换为二进制编码?A 应用B 模型定义C 编解码插件D profile 答案: C 由于NB-IoT设备对省电要求高,设备侧数据和应用侧分别采用以下哪一项中的数据格式与平台进行通信?A 二进制,JsonB 二进制,十六进制C Json, 二进制D 十六进制,二进制答案: A NB-IOT工作在哪种模式下是最省电的?A eDRXB RSRPC DRXD PSM答案: B图形化开发插件场景说明有一款烟感设备,具有如下特征:具有烟雾报警功能(火灾等级)和温度上报功能。支持远程控制命令,可远程打开报警功能。比如火灾现场温度,远程打开烟雾报警,提醒住户疏散。支持上报命令执行结果。产品模型定义在烟感产品的开发空间,完成产品模型定义。level:火灾级别,用于表示火灾的严重程度。temperature:温度,用于表示火灾现场温度。SET_ALARM:打开或关闭告警命令,value=0表示关闭,value=1表示打开。数据上报字段说明(1)单击“新增消息”,新增”smokerinfo”消息。配置此步骤的主要目的是,将设备上传的二进制码流消息解码成JSON格式,以便物联网平台理解。配置示例如下:消息名:smokerinfo消息类型:数据上报。添加响应字段:是。添加响应字段后,物联网平台在收到设备上报的数据后,会下发用户设置的响应数据到设备。响应数据:AAAA0000(默认) 数据上报字段说明 (2) 添加messageId字段,表示消息类型。在本场景中,上报火灾等级和温度的消息类型是0x0。 设备上报消息时,每条消息首个字段就是messageID。 如设备上报消息为0001013A,第一个字段00就是表示此条消息是上报火灾级别和温度的消息。 后续字段01和013A分别代表火灾级别和温度。如果只有一条数据上报消息和一条命令下发消息, 可以不添加messageID字段。“数据类型”根据数据上报消息种类的数量进行配置。 messageID字段默认的数据类型为int8u。“长度”是根据“数据类型”的配置自动填充的。“默认值”可以修改,但必须为十六进制格式,且设备数据上报消息的对应字段必须和此处的默认值保持一致。“偏移值”是根据字段位置和字段的字节数的配置自动填充的。messageId为此消息的第一个字段,起始位置为0,字节长度为1,终点位置为1。所以偏移值为0-1。 数据上报字段说明 (3) 添加level字段,表示火灾级别。“字段名”只能输入包含字母、数字、_和$,且不能以数字开头的字符。 “数据类型”根据设备上报数据的实际情况进行配置,需要和产品模型相应字段的定义相匹配。 产品模型中定义的火灾级别level属性的数据类型为int,最大值为9。所以选择的数据类型为int8u。 “长度”根据“数据类型”的配置自动填充。 “默认值”不填。此处火灾级别level不固定,无默认值。 “偏移值”是根据字段位置和字段的字节数的配置自动填充的。 ”level”字段的起始位置就是前一字段的终点,前一字段”messageID”的终点位置为1, 所以”level”字段的起始位置为1。”level”字段长度为1个字节,终点为2。所以“偏移值”为1-2。 数据上报字段说明 (4) 添加temperature字段,表示温度。“数据类型”,在产品模型中, temperature属性的“数据类型”为int,最大值1000,因此在插件中定义temperature字段的“数据类型”为”int16u”, 以满足temperature属性的取值范围。 “长度”根据数据类型的配置自动填充。 “默认值”不填,此处温度temperature的值不固定,无默认值。 “偏移值”是根据与首字段的间隔的字符数自动配置的。 ”temperature”字段的起始位置就是前一字段的终点,前一字段”level”的终点位置为2, 所以”temperature”字段的起始位置为2。”temperature”字段长度为2个字节,终点为4。所以“偏移值”为2-4。 命令下发字段说明 (1) 新增”SET_ALARM”消息,设置火灾告警的温度阈值。 例如超过60摄氏度,设备上报告警。配置此步骤的主要目的是, 将平台下发的JSON格式命令消息编码成二进制数据,以便烟感设备理解。配置示例如下: 消息名:SET_ALARM 消息类型:命令下发 添加响应字段:是。添加响应字段后,设备在接收命令后,可以上报命令执行结果。 用户可以根据自己的需求,自由选择是否添加响应字段 命令下发字段说明 (2) 单击“添加字段”,添加messageID字段,表示消息类型。例如,设置火灾告警阈值的消息类型为0x1。 命令下发字段说明 (3) 添加mid字段。这里的mid字段是由平台生成和下发的,用于将下发的命令和命令下发响应消息进行关联。 mid字段的数据类型默认为int16u。 命令下发字段说明 (4) 添加value字段,表示下发命令的参数值。例如,下发火灾告警的温度阈值。添加errcode字段,用于表示命令执行状态:00表示成功,01表示失败,如果未携带该字段,则默认命令执行成功。errcode字段的数据类型默认为int8u。添加result字段,用于表示命令执行结果。例如,设备向平台返回当前的告警阈值。在线调试 使用设备模拟器进行数据上报。十六进制码流示例:0008016B。 00为地址域meaasgeID,08表示火灾级别level,长度为1个字节;016B表示温度,长度为2个字节。在“应用模拟器”区域查看数据上报的结果:{level=8, temperature=363}。8为十六进制数08转换为十进制的数值;363为十六进制数016B转换为十进制的数值。在设备模拟器区域看到平台下发的响应数据AAAA0000。在华为云物联网平台上进行智慧农业开发时,开发者在完成编解码插件开发后会输入“00193C0064”进行验证。已知该数据各字段代表的含义如下图所示,则该上报数据中,上报的温度为__℃。

答案: 25 对应的字段转换为10进制即可开发者在华为云物联网平台进行智慧农业编解码插件开发时,当开发者输入“0025600100” 进行验证时,则该上报数据中的上报的温度值为__答案:37 开发者在华为云物联网平台进行智慧烟感编解码插件开发时,数据各字段代表的含义如下图所示。当开发者输入"05013A" 进行验证时,该上报数据中的上报的烟感值为__

答案: 314 将013A 转换为十进制即可北向接入机制REST(Representational State Transfer,简称REST)描述了一个架构样式的网络系统,即指的是一组架构约束条件和原则。满足这些约束条件和原则的应用程序或设计就是 RESTful。

构造请求 – 请求URI请求URI由如下部分组成。{URI-scheme} :// {Endpoint} / {resource-path} ? {query-string}例如您需要获取IAM在“华北-北京四”区域的Token,则需使用“华北-北京四”区域的Endpoint(iam-north-4.myhuaweicloud),并在获取用户Token的URI部分找到resource-path(/v3/auth/tokens),拼接起来如下所示REST API 请求的组成:请求URI包含在消息头中, 但大多数语言或框架都要求您从请求消息中单独传递它。URI-scheme:表示用于传输请求的协议,当前所有的API均采用HTTPS协议EndPoint:指定承载REST 服务端的服务器域名或IP,不同服务区域的Endpoint 不同,您可以从地区和终端节点中获取. 例如IAM服务在“华北-北京四”区域的Endpoint 为:iam-north-4.myhuaweicloudresource-path: 资源路径,也即API访问路径,从具体的API的URI模块获取,例如:“获取用户Token”API 的resource-path 为 “/v3/auth/tokens” query-string: 查询参数, 是可选部分,并不是每个API都有查询参数, 查询参数前面需要带一个“?”形式为参数名=参数取值, 例如“limit=10”,表示查询不超过10条数据构造请求 – 请求方法HTTP请求方法(也称为操作或动词),它告诉服务你正在请求什么类型的操作。GET:请求服务器返回指定资源。PUT:请求服务器更新指定资源。POST:请求服务器新增资源或执行特殊操作。DELETE:请求服务器删除指定资源,如删除对象等。HEAD:请求服务器资源头部。PATCH:请求服务器更新资源的部分内容。当资源不存在的时候,PATCH可能会去创建一个新的资源。在获取用户Token的URI部分,您可以看到其请求方法为”POST”,则其请求为:POST /v3/auth/tokens构造请求 – 请求消息头附加请求头字段,如指定的URI和HTTP方法所要求的字段。例如定义消息体类型的请求头”Content-Type”,请求鉴权信息等。如下公共消息头需要添加到请求中。Content-Type:消息体的类型(格式),必选,默认取值为”application/json”,有其他取值时会在具体接口中专门说明。X-Auth-Token:用户Token,可选,当使用Token方式认证时,必须填充该字段。用户Token也就是调用获取用户Token接口的响应值,该接口是唯一不需要认证的接口。对于获取用户Token接口,由于不需要认证,所以只添加”Content-Type”即可,添加消息头后的请求如下所示。构造请求 – 请求消息体请求消息体通常以结构化格式发出,与请求消息头中Content-type对应,传递除请求消息头之外的内容。若请求消息体中参数支持中文,则中文字符必须为UTF-8编码。每个接口的请求消息体内容不同,也并不是每个接口都需要有请求消息体(或者说消息体为空),GET、DELETE操作类型的接口就不需要消息体,消息体具体内容需要根据具体接口而定。RESTful请求头包含方法信息,方法有哪些?A. POSTB. GETC. PUTD. DELETEA B C D产品模型文件的作用是什么?描述设备能力的文件编解码插件中decode和encode接口的功能是什么?DeCode接口的入参binary Data为设备发过来的CoAP 报文的payload 部分,EnCode接口的入参是Json格式数据, 是平台下发的消息或应答某开发者编写了如下代码用于在华为物联网上创建设备:"POST https://{endpoint}/v5/iot/{project_id}/devices"{"device_id": "d4922d8a-6c8e..."..."auth_info":{"auth_type":"SECRET"......}"showdow": {}}下列关于上述代码的描述中,正确的是哪一项?A 该设备是一个电表B 该设备使用秘钥认证方式进行接入C 该设备通过非安全协议方式进行接入D 该设备的设备标识码为dianadevice答案:B 开发者在应用服务器上调用IoTDA的删除产品API时,下列哪几项请求参数是必填的?A product_idB X-Auth-tokenC app_idD project_id答案:ACDIoT相关云服务介绍华为云用在线的方式将华为30多年在ICT基础设施领域的技术积累和产品解决方案开放给客户,致力于提供稳定可靠、安全可信、可持续创新的云服务,做智能世界的“黑土地”,推进实现“用得起、用得好、用得放心”的普惠AI。华为云作为底座,为华为全栈全场景AI战略提供强大的算力平台和更易用的开发平台。弹性云服务器ECS弹性云服务器(Elastic Cloud Server)是华为云推出的一种可随时获取、弹性可扩展的计算云服务器,帮助您打造可靠、安全、灵活、高效的应用环境,确保业务持久稳定运行。数据接入服务DIS数据接入服务(Data Ingestion Service,简称DIS)可让您轻松收集、处理和分发实时流数据,以便您对新信息快速做出响应。DIS对接多种第三方数据采集工具,提供丰富的云服务Connector及Agent/SDK。适用于IoT、互联网、媒体等行业的设备监控、实时推荐、日志分析等场景。

对象存储服务OBS对象存储服务(Object Storage Service)是一款稳定、安全、高效、易用的云存储服务,具备标准Restful API接口,可存储任意数量和形式的非结构化数据。稳定可靠:OBS提供数据检查、分片冗余、自动修复,使数据持久性高达99.9999999999%(12个9),业务连续性大99.995%安全可信:SSL传输加密、服务端加密、身份鉴权等多重安全防护。智能高效:大并发、大带宽、低时延的访问体验。友好易用:与自建存储相比成本下降20%~80%AI开发平台ModelArtsModelArts是面向开发者的一站式AI开发平台,为机器学习与深度学习提供海量数据预处理及半自动化标注、大规模分布式Training、自动化模型生成,及端-边-云模型按需部署能力,帮助用户快速创建和部署模型,管理全周期AI工作流。数据准备效率百倍提升40TB数据处理:8,000人天80人天模型训练耗时大幅度降低1000GPU集群,训练加速比0.8 模型一键部署至云、边、端华为云 - 站式API ExplorerAPI快速检索:支持全局/按产品检索、产品和API中英文检索、快速查看最近搜索/使用的产品或API,同时还支持关注常用产品API。API文档查询:能快捷查询API详情和参数说明,具备规范的API文档结构、接口说明、请求参数/示例、 返回参数/示例、错误码、SDK等。API参数辅助填写:支持OpenAPI参数表格化、可视化;详细的API参数描述及示例说明,让参数填写更简单;同时支持Region、Token、Project_id自动获取,自动填写。API可视化调试:支持API在线调试及自动获取错误码详情,从发现问题到解决问题。API错误码在线搜索:在API错误中心能查看产品全部错误码,并对错误码进行全局搜索和产品内搜索。判断题:弹性云服务器(Elastic Cloud Server)是华为云推出的一种可随时获取、弹性可扩展的计算云服务器,帮助您打造可靠、安全、灵活、高效的应用环境,确保业务持久稳定运行.答案:T华为云一站式API Explorer提供哪些能力?A. API快速检索 B. API参数辅助填写 C. API可视化调试 D. API错误码在线搜索答案:ABCDNB-IoT标准及解决方案介绍NB-IoT(窄带蜂窝物联网)产业正在迅速崛起。该技术在有效地提供深度室内覆盖的同时,可以支持大量的低吞吐率、超低成本设备连接,并且具有低功耗、优化的网络架构等独特优势。未来IoT连接应用分类

我们通常把这块市场称为LPWA市场, 即Low Power Wide areaLPWA这个名字很好突出了这块市场中的两个典型需求:一个是低功耗, 另一个是广覆盖实际上,这块市场中的应用还有第三个需求, 即低成本这个也比较好理解,因为这块市场的链接需求太大了,一颗植物,一个动物,甚至一块仪表上都需要安装一个终端, 显然终端的成本不能太高全球第一款NB-IoT芯片

BB:BaseBand, 基带RF:Radio frequency, 射频PMU: Power Monitoring unit ,电源监控单元 AP/SP/CP: 应用核,安全核, 通信核,芯片定义的三个核AP:应用核处理器(Application):应用核心支持用户在应用程序上执行第三方应用代码SP:安全核处理器(Security Core):安全核心通过验证系统上运行的代码来维护Hi2115的安全性和完整性,也会生成随机数并控制其他两个核心的内存访问。CP:协议核心充当通信处理器,构成实现通信协议栈所有层的基础。它包括一个专用的ARM Cortex M0核和一个具有专用片上RAM的Dual-MAC DSP。有一个USIM接口允许与外部SIM操作,以及一个MIPI RFFE接口用于与外部射频电路接口连接。eFlash: Embedded Flash, 嵌入式闪存FOTA: firmware over the air 固件空中软件推送LWM2M 是一种基于Client-Server 的DM设备管理协议,主要用于受限设备Hi2115芯片有三种工作模式,这三种模式确定了不同节电级别的可用功能。1.活跃模式(Active)在此模式下,芯片的所有功能均可用,并且所有处理器都在正常运行。无线电的传输和接收均是在这种模式下执行的。同时待机模式和深度睡眠模式只能在活动模式下进行转换。2.待机模式(Standby)在待机模式下,所有的处理器处于非活跃状态,但所有的外围设备(包括DMA和嵌入式Flash)均处于活跃状态。系统时钟处于活跃状态并通过时钟门控与电源门控降低功耗。当所有处理器执行等待中断(WFI)指令时,进入待机模式。3.深度睡眠模式(Deep-Sleep)处于此模式时只有32.768kHz的RTC和某些外围设备运行。芯片可以通过RTC中断或者通过外围设备的外部事件发送消息,唤醒处于深度睡眠模式的模块。此模式需要所有处理器输入设置成深度睡眠模式才能进入,然后执行等待中断(WFI)指令。Hi2115芯片的__核允许用户执行特定的第三方应用程序代码答案: A Hi2115芯片共有__个GPIO口答案:40 在下列Hi2115的各个模块中,哪一项用于实现各层通信协议的协议栈?A C核 B 电源管理模块 C A核 D S核答案:C核 当Hi2115芯片处于Standby模式下时,下列哪几项仍将处于活动状态?A 应用处理器(A核)B 嵌入式闪存C 系统时钟D DMA(Direct Memory Access)答案: BCDNB-IoT解决方案总体架构

Uu: UE和E-UTRAN之间的接口, 网络中终端与基站之间的无线接口E-UTRAN:演进型通用陆地无线接入网,3GPP R8 版本提出的一种新型的无线接入架构具有高传输速率,低延迟和数据包最优化等特点。E-UTRAN包含了若干个E-NodeB,提供了终止于UE 的E-UTRA用户面,(PHY/MAC)和控制面(RRC)协议UE: User Equipment, 用户设备NAS: non-access, 非接入层,UE和核心网之间的一个功能层。非接入层支持核心网和UE 之间的业务和信令消息的传输EPC核心网:演进型分组核心网,一种演进型的3GPP系统框架, 关注更高的数据速率,更低的延迟,分组优化,支持多重无线接入技术NB-IoT技术优势

NB-IOT标准演进

NB-IoT标准介绍NB-IoT聚焦于低功耗广覆盖物联网(IoT)市场,是一种可在全球范围内广泛应用的新兴技术。相关主要协议如下:

3GPP工作组并不制定标准,而是提供技术规范(TS)和技术报告(TR),并由TSG批准,一旦TSG批准了,就会交到组织的成员,在进行各自的标准化处理流程。3GPP TS和TR 使用四位或者五位的编号,即“xx.yyy”,前两位数字“xx”代表序列号,后两位或者3位数字“yy” 或“yyy”代表一个系列中的一个特定规范NB-IoT物理层介绍物理层设计系统带宽: 180 kHz下行技术:OFDMA,子载波间隔达15kHZ,共12个子载波上行技术:SC-FDMA(单载波频分多址)物理信道与物理信号为了减少实现的复杂性,NB-IoT精简了不必要的物理信道,在下行只有三种物理信道和三种参考信号,在上行只有两种物理信道和一种参考信号。两种上行物理信道:NPUSCH(窄带物理上行共享信道)NPRACH(窄带物理随机接入信道)一种上行物理信号:NDMRS(窄带参考信号)三种下行物理信道:NPBCH(窄带物理广播信道)NPDCCH(窄带物理下行控制信道)NPDSCH(窄带物理下行共享信道)三种下行物理信号:NRS(窄带参考信号)NPSS(窄带同步信号)NSSS(窄带辅同步信号)总之,NB-IoT的物理信道通过降低目标速率、多次传输、采用低阶调制方式等措施,以达到增加覆盖、降低成本、降低功耗的目的。上行传输技术有单载波与多载波两种传输技术单载波single-tone:3GPP标准中定义了NB-IOT上行支持的Single-tone和Multi-tone传输,Single-tone作为UE的必备功能,Multi-tone为可选功能应用于NB-IOT的上行物理信道,表示UE上行发送仅占一个子载波多载波multi-tone:Multi-tone包括3tone, 6tone, 12tone 这3个场景,分别代表eNodeB 可一次分配3,6和12个15KHz子载波用于UE上行数据传输下列关于NPBCH(窄带物理广播信道)描述正确的有哪几项?A NPBCH 信道采用BPSK调制方式B NPBCH信道能够传递接入限制和操作模式等信息C NPBCH信道能够传递系统帧号D NPBCH信道能够传递调度信息答案: BCDNPUSCH可以使用Single-Tone和Multi-Tone两种载波策略A 正确B 错误答案: A在NB-IOT技术中,对于Multi-tone而言,可以采用的子载波间隔为()答案: 15KHzNPRACH采用Single-tone发送,子载波间隔()答案:3.75KHzNB-IoT部署方式介绍NB-IoT支持基于目前LTE制式平滑演进,并根据不同运营商的需求,支持灵活的频段部署。NB-IoT构建于蜂窝网络,可采取带内、保护带或独立载波等三种方式,与现有网络共存,支持SingleRAN的平滑演进。只消耗大约180KHz频段,可直接部署于GSM网络,UMTS网络或者LTE网络以降低部署成本、实现平滑升级

支持三种部署方式:独立部署(Stand-alone)可以利用单独的频带,适合用户GSM频段的重耕保护带部署模式(Guard-band) 可以利用LTE系统中边缘无用频带带内部署(Inband)可以利用LTE载波中间的任何资源块NB-IoT在GSM频段上的重耕部署需要采用哪种部署方式?A 独立部署B 保护带部署C 带内部署D 带外部署答案: A下列选项中,哪项不是小包数据快传技术的优点?A.提升上行传输效率B.缩短终端发送数据时间C.降低终端功耗D.提升数据传输距离 时域重传技术答案: DeLTE-IoT网管设备不可以管理下列哪个网元?A.业务引擎B.AirNodeC.eLTE-IoT通信模组D.CPE(用户接入终端)答案: C下列选项中,哪些网元属于NB-IoT核心网的网元?A.MME(移动管理性实体)B.HSS(归属用户服务器)C.SGW(服务网关)D.PGW(PDN网关)答案: ABCD下列选项中,关于NB-IoT上下行通信技术描述正确的是?A.NB-IoT上行采用SC-FDMA,下行采用OFDMAB.相同功率的前提下Multi-tone比Single-tone拥有更高的功率谱密度增益C.OFDMA技术是OFDM和FDMA的技术融合D.Multi-tone作为终端设备的必备功能,而Single-tone为可选功能答案: AC相同功率的前提下Multi-tone比Single-tone拥有更高的功率谱密度增益答案:FALSE相关部署特性:RF带宽180KHz (上行、下行)下行:OFDMA, 子载波间隔15KHz上行:SC-MDFA, single-tone 3.75KHz、15KHz, Multi-tone: 15KHz仅需支持半双工终端支持对Single-tone和Multi-tone的能力指示NB-Iot 关键特性超强覆盖:NB-IoT专门为物联网特别是LPWA连接进行设计,通过空口重传和超窄带宽,相比GSM有20dB+增益,意味着更少站点可以覆盖更广区域和穿透性,可穿透楼层达到地下室,这将使隐蔽位置的设备如水电表,以及要求广覆盖的宠物跟踪等业务得到应用超低成本:华为提供SingleRAN解决方案,支持在现有网络设备上升级改造,从而降低网络建设和维护成本NB-Iot的芯片是专门为物联网设备设计的,只针对窄带、低速率、并针对物联网需求只支持单天线、半双工方式,另外简化了信令处理,大幅降低终端芯片价格到几美金。超低功耗:针对小包、偶发的物联网应用场景,NB-Iot设计独立的PSM和eDRX特性,终端在发送数据包之后,立刻进入一种休眠状态,不再进行任何通信活动,等到它有上报数据的请求的时刻,它会唤醒自己,随后发送数据,然后又进入到睡眠状态。按照物联网终端的行为习惯,将会达到99%的时间在休眠状态,使得功耗非常低,实现了设备超低功耗。超大连接:由于NB-Iot的终端便宜,能够支持大量部署,特别是各类仪表行业,在同一基站的情况下,NB-IoT可以比现有无线接入技术提供50-100倍的接入数。一个扇区能够支持10万个连接,支持低延时敏感度超低的设备成本,低设备功耗和优化的网络结构超低功耗:PSM省电模式

物联网设备的通信需求和手机不同,物联网通常只会做上行数据发送数据包,而且是否发送数据包由它自身决定,不需要随时standby的等待其他终端的呼叫,而手机无时无刻的在等待网络发起的呼叫请求如果按照2G/3G/4G的方式去设计物联网的通信,那么意味着物联网的设备的行为也如同手机一样,会浪费大量的功耗在侦听网络随时可能发起的请求上,无法做到低功耗基于NB-IoT技术,物联网终端在发送数据包之后,立即进入一种休眠状态,不再进行任何通信活动,等到它有上报数据的需求的时刻,它会唤醒自己,随后发送数据,然后又进入休眠状态。按照物联网终端的行为习惯,将会达到99%的时间在休眠状态,使得功耗非常低,实现了设备超低功耗。超低功耗:eDRX扩展非连续接收定义: 3GPP协议定义空闲态eDRX功能,将寻呼周期从传统的2.56秒扩展到最大2.92小时,减少空闲态UE周期监听寻呼信道的次数,能长时间处于低功耗深睡眠状态,节省UE耗电。

增益:相比传统寻呼DRX,UE休眠周期更长,更省电场景:适用使用LTE IOT业务且对于UE有节能需求的场景,比如Smart Meter、下水道监测老年人及儿童守护小区下有支持空闲态eDRX能力的UE接入下列选项中,哪些技术和因素使得NB-IoT具备超低功耗特性?A.PSM模式B.功率谱密度提升 超强覆盖C.eDRX模式D.重复发送 超强覆盖答案 ACeLTE-IoT可以应用在下列哪些场景?A.制造行业生产状态可视化及能效管理B.电网实时状态监控C.水务公司远程智能抄表D.智慧城市公共设施入网答案: ABCD3GPP协议定义空闲态eDRX功能减少空闲态UE周期监听寻呼信道的次数,能长时间处于低功耗深睡眠状态,节省UE耗电答案:TURE超低成本:终端芯片低至$1

低成本芯片关键技术180kHz窄带宽,基带复杂度低。低采样率,缓存Flash/RAM要求小(28kByte)。单天线,半双工,RF成本低。峰均比低,功放效率高,23dBm发射功率可支持SoC内置功放PA。协议栈简化(500kByte),减少片内FLASH/RAM。 超强覆盖:相对GSM/LTE覆盖增益高20dB

MCL: Max Coupling Loss, 最大耦合损耗,以此衡量覆盖范围(穿透范围), 数值越大,覆盖范围越大针对物联网的部署特点,现有接入技术不足以满足深度覆盖的要求,3GPP在技术规范TS45.820中针对水表,电表等物联网业务部署特点提出LPWA技术满足很对GSM/LTE 网络的MCL增强20dB的要求 NB-Iot比LTE和GPRS基站提升了20dB的增益,能覆盖到地下室,地下车库,地下管道等信号难以到达的地方 提升频率谱密度: 通过上下行物理通道格式、调制规范重新定义,使得上下行控制信息与业务信息可以在相对LTE更窄的带宽中 发送,相同发射功率下的PSD(Power Spectrum Density)增益更大,降低接受放的解调要求 重复发送:引入重复发送的编码,通过重复提升信道条件恶劣时的传输可靠性 NB-IoT的MCL值为164,相较于GPRS多增加30dB的增益。 答案:错误 跳频技术通过上行数据发送时使用的物理信道不断变化,来避免持续干扰。 答案:正确 超大连接技术:50k+用户容量*/200kHz小区

关键技术1:上行业务调度单元较小:NB-Iot : 15KHz LTE:180kHz 关键技术2:减小空口信令开销关键技术3:PSM/eDRX 降低了每个设备的资源使用情况关键技术4:基站优化 独立的准入拥塞控制终端上下文信息存储关键技术5:核心网优化终端上下文存储下行数据缓存首先,NB-IoT的基站是基于物联网的模式进行设计的。物联网的话务模型和手机是不同的,它的话务模型是终端很多,但是每个终端发送的包小,发送包对时延的要求不敏感。当前的2G/3G/4G基站是设计保障用户可以同时做业务并且保障时延,基于这样的方式,用户的连接数或者接入数目是控制在1K左右的。但是基于NB-IoT,基于对业务时延不敏感,可以设计更多的用户接入,保存更多的用户上下文,这样可以让100K作用的终端同时在一个小区,大量终端处于休眠状态,但是上下文信息由基站和核心网维持一旦有数据发送,可以迅速进入激活状态另外,2G/3G/4G的调度颗粒较大,NB-IoT因为基于窄带,调度颗粒小很多,在同样资源的情况下,资源的利用率会更高。在同样覆盖增益的情况下,重传的次数少或者没有,频谱效率也更高。NB-IoT的系统带宽是多少?180KHzNB-IoT的部署方式有哪几种?带内部署,独立部署,保护带部署NB-IoT的四大关键技术有哪些?超低成本超低功耗超强覆盖超大连接华为NB-IoT芯片与模组介绍业界NB-IoT芯片介绍

华为NB-IoT芯片介绍Hi2110全球第一款正式商用的NB-IoT芯片90nm81管脚,20GPIOs3GPP Rel-13Single ToneDL 21.2Kbps/UL 15.6Kbps 频段: 698~960MHzBand: 5/8/20/285.3x5.3 BGASoc(CP, SP, AP, Flash/SRAM,PMU,RF)Active、Standby、Deep-SleepIn-Band、Guard-Band、Stand-AlonePA not includedHi2115定位、多播、速率提升、非锚点载波增强、移动性、UE功率等级90nm121pin,40 GPIOs3GPP Rel-13/14Single Tone/Multi-toneDL 80Kbps/UL106Kbps频段: 698~960/1800/2100MHzBand: 1/3/5/8/20/285.8x5.8 BGA256KB apps memory PositioningSoc(CP, SP, AP, Flash/SRAM,PMU,RF)Active、Standby、Deep-SleepIn-Band、Guard-Band、Stand-AlonePA not included芯片整体框架介绍 (1)Boudica芯片拥有3个CPU,分别为安全核(S核)、协议核(C核)、应用核(A核),采用共享内存方式实现核间通信。S核:负责启动A、C核,拥有擦除和写内置flash的权限。C核:当前运行FreeRTOS(后面会切LiteOS),主要包含NB-IoT及LWIP协议栈A核:当前运行FreeRTOS(后面会切LiteOS),主要负责AT命令解析、外置flash读写以及其他上层应用、协议等( LwM2M、FOTA )。芯片整体框架介绍 (2)

AT模块分布在APP核和Protocol核,核间采用RPC通信RPC(Remote Procedure Call)--远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些协议存在,如TCP/UDP,为通信程序之间携带信息数据APP核负责启动任务,监听队列从UART中接收到的AT命令,并且负责字符解析,参数检查以及执行结果打印,并且通过RPC通信的方式将信息传递给Protocol核150芯片 - 功能列表 (Hi2115)全频段支持: 698~2180MHz,只需一套模组硬件基于ARM Cortex-M0架构的,带有片上存储空间的专用应用处理器(Application Processor):支持二次开发更大存储空间:256KB Flash,64KB RAM更多外设资源:温度传感器、电容型触摸传感器、ADC/DAC、可编程的电流源和中断比较器等; 40个GPIO口,可以被SPI/UART/I2C/PWM等外设复用更低功耗:芯片sleep态约2.5uA;模组sleep态约3.6uA关键特性高集成度NB IoT单芯片解决方案• 单Die集成射频、基带、应用处理器及电源管理等功能;• 易于连接外部FEM模块或 PA/滤波器/开关等器件;• 支持通过MIPI/GPIO控制射频前端• 频段范围:698-960 MHz和1695-2180 MHz• 3 个 ARM M0 处理器,分别为应用处理器、协议处理器和安全处理器• 支持多种发射功率等级:14dBm,20dBm和23dBm• 芯片集成 flash, SRAM, ROM 及 OTP 安全单元• 集成 PMU,电池可以直接为芯片供电• 集成温度传感器及连接外部设备的接口;• 极低功耗;数字接口• 40个可配置的GPIO接口• UARTs*4• SPI *2• I2C *2• PWM*2• 低功耗UART• SIM 和SWD模拟接口• 10-bit ADC• 10-bit DAC• 2 x 电平比较器• 电容触摸传感器• 3位的可编程电流源• 温度传感器• 电池电压传感器Hi2115软件特性及SDK RDK• 3GPP R13/14 NB-IoT通信协议• IPv4, IPv6 及 Non-IP data• UDP/TCP/CoAP/LwM2M/MQTT/DTLS/PPP• 支持安全启动、安全FOTA及安全升级• 完整SDK/RDK开发环境• 方便易用的校准、下载、验证及调测工具Hi2115需要一个低相位噪声参考时钟为PLL和ADC提供频率参考,并且该芯片还需要32.768 kHz的晶振用于定时和深度睡眠唤醒。处理器由内部生成的时钟驱动,不依赖两个参考时钟启动。NB-IoT模组 - 总体框图选择增加Load Switch开关,PSM状态关闭射频及其余耗电组件;为了满足后续日志记录及版本升级,模组可选择增加SPI Flash;其他具体CASE应用,参考hi2110器件手册和参考原理图。

NB-IoT模组 - 接口设计

可靠性设计 - 基本理念准则1:器件是会失效的,设计中需重点关注电源、晶振、新器件、存储器等高失效率器件;准则2:设计中应避免因器件选型不当、应用不规范、降额不足等导致单板返修率升高 ;准则3:海量上网设备,需采用必要的设计进行故障检测、隔离和恢复,以减少或消除故障影响 ;准则4:单点故障是系统可靠性的薄弱环节,设计中应通过可靠性FEMA分析等方法来识别单点故障,进行设计优化。可靠性测试验证研发阶段可靠性试验总体可分为四大类,包括环境适应性试验、可靠性极限测试、长期可靠性测试、小批量可靠性测试,分别说明如下:环境适应性试验:包括高温存储、低温存储、运输试验、高温工作、低温工作、太阳辐射等,主要是保障产品设计满足业界的相关标准,是产品设计的底线。可靠性极限测试:包括HALT、温度应力极限、电应力极限等测试,主要是保障产品设计有一定裕度,提升产品市场竞争力,同时也可以避免硬件离散性导致的质量问题。长期可靠性测试:包括长期温循、长期湿热、长期高温、盐雾腐蚀、气体腐蚀等。 小批量可靠性测试:主要指小批量温循(高温、低温、温变结合的综合应力),小批量温循的主要目的是发现容差设计类问题下列选项中,属于环境适应性试验的有哪几项?A 运输试验B 高温存储测试C 高温工作测试D 温度应力测试答案: A B C 可靠性设计 - 需求和目标在规定条件下、规定时间内,完成规定功能的能力产品在使用开始之后表现的特性在规定时间内,NB-IoT物联网硬件可靠运行,不出现批量故障10年内,单板故障返还率<X%可靠性不是一个单一的技术领域,它涵盖了电路、软件、器件、工艺、材料…等各个方面,更重要的是,需要基于这些技术之上的一种综合思维。可靠性设计 - 异常处理异常场景1:软件程序异常:措施:Boudica内部有软件看门狗,可软复位;异常场景2:芯片硬件状态异常挂死、软件看门狗不起作用:措施:模组内部如果有MCU,访问Boudica无响应,通内部MCU硬件复位Boudica;异常场景3:模组不带MCU场景、芯片硬件异常挂死:措施:模组对外提供硬件复位管脚、异常状态由应用Device进行模组复位;异常场景4:模组自身运行正常、业务断链场景:措施:数据上传有应答,业务断链情况会进行一次重传;无应答场景,模组在下一次休眠重启后,会继续上传数据。NB-IoT模组电池面临的挑战电池要求高:可靠性、安全性、环境适应性等。

电池选型

电池方案设计步骤

电池方案选型过程

NB-IoT模组天线目前面临的挑战天线形态多样化:PCB天线、金属天线、陶瓷天线、LDS天线、鞭状天线…终端形式多样化,应用场景多,环境复杂:智能水表、智能路灯、共享单车、智能跟踪等NB-IoT频段:天线需要支持单频、多频宽频带NB-IoT天线应用场景及诉求分解

PCB天线设计原则根据天线技术发展及工艺技术的成熟,PCB类别的天线在终端射频类天线中占重大比例,印制电路板工艺技术的成熟发展,精度的加工技术及高度的一致性,PCB类天线在终端射频天线中占比很大,本文提供几条PCB天线设计的基本原则如下:确保传输线的线特性阻抗是50ohm。PCB走线尽可能短,以减小天线线路损耗。PCB尽可能走直线,避免直角走线,减少或避免通过过孔连接到不同层的情况出现。PCB走线周围要有良好的参考地,避免其它信号线靠近天线走线而没有地隔离。内置天线对于终端整体设计的通用要求走线:在关联RF的布线时要注意转弯处运用45度角走线或圆弧处理以减小寄生电容,做好铺地隔离和走线的特性阻抗仿真;RF地要合理设计,RF信号走线的参考地平面要找对,并保证RF信号走线时信号回流路径最短,且RF信号线与地之间的相应层没有其它走线影响它(主要是方便PCB布线的微带线阻抗的计算和仿真)。布局:布板RF模块附近避免安置一些零散的非屏蔽元件,屏蔽盒尽量规整一体,同时少开散热孔,最忌讳长条形状孔槽。壳体:外壳的表面喷涂材料不能含有金属成分,壳体靠近天线的周围不要设计任何金属装饰件或电镀件。若有需要,应采用非金属工艺实现。干扰:为减少其他信号及器件对射频的干扰,射频走线应该远高速数字信号、开关电源、振荡器、滤波器或其他射频器件,射频走线下方严禁有电源走线穿越。材料:外壳的表面喷涂材料不能含有金属成分,壳体靠近天线的周围不要设计任何金属装饰件或电镀件。若有需要,应采用非金属工艺实现NB终端天线使用示例:水表+单极子天线红色框选区域,在某水表结构件顶层上做局部长条凸起处理,水表外壳材料是不屏蔽天线辐射信号的塑料材料。此应用case,天线可推荐使用文中3.31节所示的金属棒/片实现的1/4波长单机子天线。在凸起处使用内置PCB载体的单极子天线,微带走线折叠可减小天线体积,结构件局部变形要求小。若垂直表盘面方向有足够空间可操作,建议结构件占用更小的水平方向面积但在垂直方向上局部凸起更高,此种case可配合使用弹簧天线。辐射面原理射频板,电性能更优。NB终端天线使用示例:路灯+外置胶棒天线在路灯罩顶部使用外置胶棒天线,也可在灯罩下方垂直放置。此种空间布局充足,对环境要求相对略低,不要求天线一定内置的case情况下,推荐优选外置胶棒天线,可实现最优的辐射性能。设计需注意外部接口的预留。NB终端天线使用示例:电表+PIFA天线是电柜上的电表,圆柱形状,此种case可以使用金属片+塑胶材质支撑件来的PIFA天线,可充分利用三维立体布局以节省空间。若射频板对面积限制要求不高但对产品高度方向尺寸有要求,则推荐使用微带PCB的PIFA天线形式。Boudica 芯片拥有几个CPU?分别是哪些?拥有3个Cpu.分别是安全核(S核)、协议核(C核)、应用核(A核)研发阶段可靠性试验分别可以分为哪几大类?环境适应性试验,可靠性极限测试,长期可靠性测试,小批量可靠性测试LwM2M协议技术原理LwM2M(Lightweight Machine-To-Machine)协议是由OMA提出并定义的一个适用于资源有限的终端设备的轻量级物联网协议。LwM2M协议是什么?LwM2M(Lightweight M2M,轻量级M2M),由开发移动联盟(OMA)提出,是一种轻量级的、标准通用的物联网设备管理协议,可用于快速部署客户端/服务器模式的物联网业务。LwM2M为物联网设备的管理和应用建立了一套标准,它提供了轻便小巧的安全通信接口及高效的数据模型,以实现M2M设备管理和服务支持。LwM2M协议特性基于资源模型的简单对象资源操作:创建/检索/更新/删除/属性配置资源的观察/通知支持的数据格式:TLV/JSON/Plain Text/Opaque传输层协议:UDP/SMS安全协议:DTLSNAT/防火墙应对方案: Queue模式支持多LwM2M Server基本的M2M功能:LwM2M Server,访问控制,设备,网络连接监测,固件更新,位置和定位服务,统计LwM2M 支持的数据格式有?A TLVB JsonC Plain Text D Opaque答案: ABCD LwM2M体系架构

LwM2M协议采用了具备REST的风格的CoAP来完成消息和数据传递,同时使用了基于UDP和DTLS安全传输协议。协议最主要的实体包括LwM2M Server 和 LwM2M Client LwM2M Server 作为服务器,部署在M2M服务供应商处或网络服务商处LwM2M Client 作为客户端,部署在各个LwM2M设备上LwM2M 有三个设备(或者叫做逻辑实体)LwM2M Server 工作服务器LwM2M Client 客户端 负责执行服务器的命令和上报执行结果LwM2M Bootstrap server 引导服务器负责配置LwM2M 客户端这3个逻辑实体有4组通信的交互Device Discovery and Registration,这是客户端和工作服务器之间的注册接口这个接口让客户端注册到服务器并通知服务器客户端所支持的能力(简单说就是支持哪些资源Resource和对象Object)Bootstrap,这是客户端和引导服务器之间的通信接口Bootstrap server通过这个接口来配置Clinet - 比如说LWM2M server的URL地址Device Management and Service Enablement,这是客户端和工作服务器之间的设备管理接口这个就是最主要的业务接口了。 LWM2M Server 发送指令给 Client 并受到回应.Information Reporting,这是客户端和工作服务器之间的上报接口这个接口是 LWM2M Client 来上报其资源信息的,比如传感器温度。上报方式可以是事件触发,也可以是周期性的LwM2M为客户端和服务器提供了哪几种接口?A 设备管理和服务实现B 信息上报C 设备发现注册D 引导程序 答案: ABCD LwM2M客户端不可以拥有任意数量的资源?A 正确B 错误答案:B在LwM2M服务器启动的引导过程中,LwM2M客户端必须忽略信息上报接口上的LwM2M服务器操作?A TrueB False答案: B 下列选项中,哪一项的接口可以实现LwM2M客户端与LwM2M服务器互联?A 客户端注册接口B 信息上报接口C 设备管理和服务启用接口D 引导接口答案: A 客户端和引导服务器之间的通信接口 (Bootstrap)

客户端和工作服务器之间的注册接口(Registration)

客户端和工作服务器之间的设备管理接口(Object/Resource Access)

客户端和工作服务器之间的上报接口(Reporting)

LwM2M逻辑接口Bootstraping:引导接口,可以向客户端提供注册到服务器的必要信息,如服务器访问信息、客户端支持的资源信息等,这些引导信息可以是由生产厂家预先存储在设备中,也可以通过上文提到的LwM2M引导服务器或者智能卡提前写入设备。Registration:客户端注册接口,实现客户端与服务器互联,通知服务器客户端的“存在”和支持的功能。支持FOTA和SOTA。Object/Resource Access :设备管理和服务启用接口,LwM2M允许提供程序访问对象实例和资源,从而使他可以更改设备设置和参数。设备管理与服务实现接口的主控方为LwM2M服务器,服务器向客户端发送指令,客户端对指令做出回应并将回应消息发送给服务器。Reporting:信息上报接口,用于客户端上报资源信息。用户能够从设备获取日志以及发送设备的状态。接口的具体功能是由一系列的操作来实现的,LwM2M的4中接口被分为上行和下行操作上行操作:LwM2M Client -> LwM2M Server下行操作:LwM2M Server -> LwM2M ClientLwM2M接口模型

Bootstrap是什么,类似于引导程序客户端有4个引导方式,其中后面两种需要LWM2M 引导服务器 Bootstrap serverFactory BootstrapBootstrap from SmartcardClient Initiated BootstrapServer Initiated Bootstrap下列选项中,哪几项属于LwM2M信息上报接口可以执行的操作?A ReadB ObserveC DiscoverD Notify答案:BDLwM2M接口在上行方向上执行的操作是()答案: Notify下列选项中,哪一项的LwM2M接口只包含下行操作?A 客户端注册接口B 设备管理和服务启用接口C 信息上报接口D 引导接口答案: B 下列选项中,哪一项的LwM2M接口只包含上行操作?A 客户端注册接口B 设备管理和服务启用接口C 信息上报接口D 引导接口答案: A下列选项中,哪几项属于LwM2M支持的数据格式?A Plain TextB BinaryC JSOND TVL答案:ACD LwM2M协议是基于CoAP协议实现的?A 正确B 错误答案: A LwM2M协议模型由以下哪几项组成?A 客户端B 设备端C 服务器D 通信端答案: AC关于LwM2M协议,以下说法正确的是?A LwM2M协议的全称是 Lightweight Man-To-MachinB LwM2M协议基于CoAP协议传输信息C LwM2M协议基于REST架构D LwM2M协议定义了4个主要接口答案:BCDLwM2M定义了一个资源模型,所有信息都可以抽象为资源以提供访问A TRUEB FALSE答案: A UDP属于()协议?A 物理层B 应用层C 传输层D 平台层答案: C 以下哪些是LwM2M协议定义的逻辑实体?A ServerB ClientC Bootstrap ServerD Proxy Server答案:ABC 下列选项中,哪几项属于LwM2M定义的协议接口?A 引导接口B 客户端注册接口C 设备管理和服务启用接口D 信息上报接口答案: ABCD当LwM2M客户端到LwM2M服务器注册之前,需要调用以下哪一项的接口获取注册的必要信息?A 引导接口B 设备管理和服务启用接口C 客户端注册接口D 信息上报接口答案: A 支持LwM2M网关功能,这允许非LwM2M物联网设备以及网关后面的LwM2M设备连接到LwM2M生态系统,并远程管理这些设备A TRUEB FALSE答案:A 下列选项中,哪几项属于LwM2M协议支持的数据格式?A Plain Text B BinaryC JSOND TLV答案:ACD (不确定)OMA LwM2M 协议1.2版本除了支持基于CoAP协议进行传输之外,还支持MQTT和HTTP协议进行传输数据A TRUEB FALSE答案: B UDPUDP 用户数据报协议(UDP,User Datagram Protocol) 传输层协议1、是无连接的,即发送数据之前不需要建立连接。2、尽最大努力交付,即不保证可靠交付3、传输效率高,适用于对高速传输和实时性有较高的通信或广播通信。4、支持一对一,一对多,多对一和多对多的交互通信。 TCP tcp传输控制协议 (Transmission control Protocol) 传输层协议 通过TCP 连接传输的数据,无差错,不丢失,不重复,且按序到达。传输效率低 连接只能是点到点的,一对一的DTLSDTLS使用一个简单的重传定时器来处理包的丢失。

一旦客户端发送了ClientHello 消息,它会等待从服务器发来的HelloVerify Request 消息,如果没有收到这个消息,客户端就会知道ClientHello或者HelloVerify Request已经丢失,然后会重新发送ClientHello消息。当服务端收到重传的数据包时,它就会知道发送了重新传输,服务端也维持了一个重传定时器,当其重传后会重传消息需要注意的是超时和重传并不应用于Hello VerifyRequest, 也就是说当服务器发送了这个消息后,不会为其设置一个单独的重传定时器,HelloVerifyRequest 被设计的足够小,以避免自身被分片,因此可以不用考虑多个HelloVerifyRequest交叉的情况DTLS协议在报文中对报文长度进行了限制,这可以有效解决UDP报文在向IP层传输时,被强制分片的问题A TRUEB FALSE答案:A TCP协议天然的重传机制保证了信息不会丢失,而UDP对此没有任何保证。所以DTLS协议额外增加了超时__的机制来确定握手消息到达。答案: 重传CoAPCoAP 约束应用协议(CoAP The Constrained Application Protocol)应用层协议基于REST架构的CoAP协议工作在 UDP协议族CoAP是二进制格式的HTTP是文本格式的,CoAP比HTTP更加紧凑轻量化,CoAP最小长度仅仅4B,一个HTTP的头都几十个B支持可靠传输,数据重传,块传输确保数据可靠到达支持IP多播, 即可以同时向多个设备发送请求非长连接通信,适用于低功耗物联网场景CoAP可完全替代HTTP协议()答案: FALSECoAP协议逻辑分层模型CoAP协议模型如下图所示:

CoAP逻辑上分为两层:资源请求/响应层(Request/Response)和消息层(Messages)。Messages层只负责控制端到端的报文交互;资源请求/响应层负责传输资源操作的请求和响应。基于UDP的类似HTTP的Client/Server交互模型Client发送request(携带不同method)请求对资源(通过URI)的操作,Server返回Response(携带资源的representation)和状态码在物联网应用场景中,EndPoint 既可以是Server,也可以是ClientCoAP的双层处理方式,使得CoAP没有采用TCP协议,也可以提供可靠的传输机制。通过消息(Messages)层的重传机制实现数据的可靠传输注:CoAP 协议通信是通过UDP 上传输消息完成的UDP比作公路的话,消息Message就是公路上的汽车,资源请求及响应层好比汽车上的货物。资源请求及响应内容最终会被放到CoAP消息包中REST(Representational State Transfer)是一种设计风格而不是标准,如果一个架构符合REST原则,我们就称它为RESTful架构,REST可以直译为表现层状态转化,表现层其实指的是资源的表现层。通俗来讲就是:资源在网络中某种表现形式进行状态转移。分解开来看:Resource:资源,即数据representational:某种表现形式,比如用JSON,XML等State Transfer:状态变化。通过动词(如POST,GET,PUT,DELETE)实现CoAP报文结构简介和其他TCP IP协议簇中的协议一样,CoAP协议总是以“头”的形式出现在负载之前,而负载和CoAP头之间使用单字节0xFF‘分离CoAP协议报文第一行是消息头,必须有,固定4个byte,其它字段为可选:Ver:2bits,版本编号,指示CoAP协议的版本号。类似于HTTP 1.0 HTTP 1.1。版本编号占2位T:2bits,报文类型,CoAP协议定了4种不同形式的报文,包括CON,NON,ACK,RST这4种TKL:Token length,4bits,token长度Code:8bits,Code在CoAP请求报文和响应报文中具有不同的表现形式Message ID:16bits,报文编号,用于重复消息检测、匹配消息类型等。 每个CoAP报文都有一个ID,在一次会话中ID总是保持不变。但是在这个会话结束之后,该ID会被回收利用Token:标识符具体内容,是ID的另一种表现,通过TKL指定Token长度Option:报文选项,通过报文选项可设定CoAP请求参数和负载媒体类型等1111 1111:CoAP报文和具体负载之间的分隔符,固定一个字节 Payload:真正有用的被交互的数据 下列CoAP协议的报头字段中,哪一项被用来表示协议请求报文和响应报文的不同表现形式? A Code B Ver C TKL D T 答案: A LwM2MLwM2M 轻量级机器到机器 (Lightweight Machine-To-Machine)应用层协议协议基于REST架构。协议的消息传递是通过CoAP协议来达成的。协议定义了一个紧凑高效又不乏扩展性的数据模型协议最主要的实体包括LwM2M Server和LwM2M Client。LwM2M Serve作为服务器,部署在M2M服务供应商处或网络服务供应商处。LwM2M Client作为客户端,部署在各个LwM2M设备上。LwM2M对象定义 (1)对象是逻辑上用于特定目的的一组资源的集合。例如固件更新对象,它就包含了用于固件更新目的的所有资源,例如固件包、固件URL、执行更新、更新结果等。使用对象的功能之前,必须对该对象进行实例化,对象可以有多个对象实例,对象实例的编号从0开始递增。OMA定义了一些标准对象,LwM2M协议为这些对象及其资源已经定义了固定的ID。例如:固件更新对象的对象ID为5,该对象内部有8个资源,资源ID分别为0~7,其中“固件包名字”这个资源的ID为6。因此,URI 5/0/6表示:固件更新对象第0个实例的固件包名字这个资源。LwM2M对象定义 (2)OMA的LwM2M规范中定义了8个标准对象:

在OMA预定义的LwM2M协议8个标准对象中,设备对象的对象ID为 ()答案:3在下列对象ID中,哪一项是OMA预定义的LwM2M安全对象的ID ()A 0B 5C 2D 7答案: A LwM2M资源定义LwM2M定义了一个资源模型,所有信息都可以抽象为资源以提供访问。资源是对象的内在组成,隶属于对象,LwM2M客户端可以拥有任意数量的资源。和对象一样,资源也可以有多个实例。LwM2M客户端、对象以及资源的关系如图所示:

MQTT协议技术原理物联网(Internet of Things,IoT)最近曝光率越来越高。虽然HTTP是网页的事实标准,不过机器之间(Machine-to-Machine,M2M)的大规模沟通需要不同的模式:之前的请求/回答(Request/Response)模式不再合适,取而代之的是发布/订阅(Publish/Subscribe)模式。这就是轻量级、可扩展的MQTT(Message Queuing Telemetry Transport)可以施展拳脚的舞台。MQTT简介MQTT (Message Queuing Telemetry Transport,消息队列遥测传输协议),运行在TCP协议栈之上,为其提供有序、可靠、双向连接的网络连接保证。

MQTT协议的发展历程1999 IBM和合作伙伴共同发明了MQTT协议。2004 MQTT开放了论坛,供大家广泛参与2011 IBM和Eurotech公司对外宣布加入Eclipse M2M industry工作组,并贡献了MQTT代码给Eclipse Paho项目组。2013 OASIS MQTT技术规范委员会成立2014 MQTT正式成为推荐的物联网传输协议标准。MQTT 有Andy stanford-Clark (IBM) 以及Arlen Nipper 发明于1999年, 当时他们为了创造一种新的协议以应用在要求低功耗,低带宽的石油管道和卫星通信的场景中。他们制定了需要在将来的协议中实现的技术目标易于实施和部署提供高质量的服务器消息分发功能轻量高效低带宽数据不可探听 (数据加密)可持续会话MQTT特点由于物联网的环境是非常特别的,所以MQTT遵循以下设计原则:1、精简,不添加可有可无的功能2、发布/订阅(Pub/Sub)模式,方便消息在传感器之间传递。3、允许用户动态创建主题,零运维成本。4、把传输量降到最低以提高传输效率。5、把低带宽、高延迟、不稳定的网络等因素考虑在内。6、支持连续的会话控制。7、理解客户端计算能力可能很低。8、提供服务质量管理。9、假设数据不可知,不强求传输数据的类型与格式,保持灵活性。MQTT业务模式运用MQTT协议,设备可以很方便地连接到物联网云服务,管理设备并处理数据,最后应用到各种业务场景。

发布/订阅模式01 发布者与订阅者不必了解彼此,只要认识同一个消息代理即可。02 发布者和订阅者不需要交互,发布者无需等待订阅者确认而导致锁定。03 发布者和订阅者不需要同时在线,可以自由选择时间来消费消息。MQTT采用的是异步的模式与请求回答这种同步模式不同,发布/订阅模式解耦了发布消息的客户(发布者)与订阅消息的客户(订阅者)之间的关系,这意味着发布者和订阅者之间并不需要直接建立联系。打个比方,你打电话给朋友,一直要等到朋友接了电话才能够交流,是一个典型的同步请求/应答的场景;而给一个好友列表发电子邮件就不一样,你发好了电子邮件之后该干嘛干嘛,好友们到有空了去查看邮件就是了,是一个典型的异步发布/订阅场景。主题MQTT是通过主题对消息进行分类的,本质上就是一个UTF-8的字符串,不过可以通过反斜杠表示多个层级关系。主题并不需要创建,可以直接使用。主题还可以通过通配符进行过滤。其中,+可以过滤一个层级,而#只能出现在主题最后表示过滤任意级别的层级。building-b/floor-5:代表B楼5层的设备。+/floor-5:代表任何一个楼的5层的设备。building-b/#:代表B楼所有的设备。注意:MQTT允许使用通配符订阅主题,但是不允许使用通配符广播单级:+只能用于单个主题层级匹配的通配符对于“huawei/+/humdity” 的订阅匹配“huawei/livingroom/humdity” 和“huawei/bathroom/humdity” 但是不匹配“/huawei/home/livinghome/humdity”多级:#用于匹配主题中任意层级的通配符它都必须是主题过滤器中的最后一个字符,并且确保它前面是正斜杠订阅主题:“huawei/home/#” ,它会收到使用下列主题名发布的消息:“huawei/home/livingroom” 和"huawei/home/bathroom" 服务质量为了满足不同的场景,MQTT支持三种不同级别的服务质量(Quality of Service,QoS)为不同场景提供消息可靠性:级别0:尽力而为。消息发送者会想尽办法发送消息,但是遇到意外并不会重试。级别1:至少一次。消息接收者如果没有知会或者知会本身丢失,消息发送者会再次发送以保证消息接收者至少会收到一次,当然可能造成重复消息。级别2:恰好一次。最高等级的服务质量,消息丢失或者重复消息是不可接受的,在可以减少并发或者增加延时的情况下,级别2是最合适的。级别2所提供的不重不丢很多情况下是最理想的,不过往返多次的确认一定对并发和延迟带来影响。级别1提供的至少一次语义在日志处理这种场景下是完全可以的,所以像Kafka这类的系统利用这一特点减少确认从而大大提高了并发。级别0一般是在数据不怎么重要,或者发送周期比较短暂的情况,这种情况下丢帧是无所谓的。"至多一次" QoS == 0消息发布完全依赖底层 TCP/IP网络,会发生消息丢失。这一级别可用于如下情况,环境传感器数据,丢失一次传感器数据无所谓,因为不久后传感器数据还会进行第二次数据发送。“至少一次” QoS ==1 确保消息到达,但消息重复可能发生“只有一次” QoS == 2确保消息到达一次,这级别可用于如下情况,在计费系统中,消息重复或者丢失会导致不正确的结果。下列选项中,哪几项属于华为云弹性云服务器提供的计费?A 竞价计费B 包年计费C 包月计费D 按需计费答案:BCD消息类型CONNECT 客户端连接到MQTT代理CONNACK 连接确认PUBLISH 新发布消息PUBACK 新发布消息确认,是QoS 1给PUBLISH消息的回复PUBREC QoS 2消息流的第一部分,表示消息发布已记录PUBREL QoS 2消息流的第二部分,表示消息发布已释放PUBCOMP QoS 2消息流的第三部分,表示消息发布完成SUBSCRIBE 客户端订阅某个主题SUBACK 对于SUBSCRIBE消息的确认UNSUBSCRIBE 客户端终止订阅的消息UNSUBACK 对于UNSUBSCRIBE消息的确认PINGREQ 心跳PINGRESP 确认心跳DISCONNECT 客户端终止连接前通知MQTT代理客户端、代理客户端(Client)包括发布者或订阅者,两者都是MQTT客户端,分别负责发布或订阅。可以是从微控制器到一个完全成熟的服务器,在设备上运行着MQTT库并且可以通过任何网络连接到MQTT代理服务器。代理服务器(Broker)是任何发布/订阅协议的核心,可以处理多达成千上万的MQTT客户的并发连接。代理服务器主要负责接收所有消息,将消息发送给所有订阅的客户端。一个职责是保持所有持续连接的客户端的会话,包括订阅和丢失的消息。另一个职责是对客户端的认证和授权。 MQTT控制报文MQTT控制报文的结构:在MQTT协议中,一个MQTT数据包由:固定头(Fixed header)、可变头(Variable header)、消息体(payload)三部分构成。MQTT数据包结构如下:Fixed header固定报头, 所有控制报文都包含Variable header可变报头,部分控制报文包含Payload有效载荷,部分控制报文包含固定报头的格式:

剩余长度等于可变报头长度(10字节)加上有效荷载的长度MQTT控制报文的类型

有效载荷

报文标识符

MQTT连接MQTT协议是基于TCP/IP之上的,客户端和代理服务器都需要TCP/IP栈。

MQTT连接是在客户端和代理服务器之间。连接是通过客户端向代理发送连接消息(CONNECT)发起的。代理会响应一个CONNACK消息和状态码。一旦连接建立,只要客户端不发送断开连接的命令或失去联系,代理将使连接保持。

CONNECT消息 (1)ClientId客户端标识符(简称ClientID)是每个连接到MQTT代理服务器的MQTT客户端的编号 Clean SessionClean Session标志位向代理服务器表明客户端是否要建立持续的会话。Clean Session设置为false是代理将存储所有服务质量 (QoS) 为1或2的客户端的订阅信息以及所有错过的消息。Clean Session设置为true是代理将不会存储客户端的任何信息,并将清除之前持续会话的所有信息。初始化一个连接是客户端发到代理服务器的,如果connect消息不正确,或者从网络服务socket打开到消息发出花费太多时间的话,代理服务器将关闭连接。为了避免那些恶意的客户端拖垮代理服务器,这样的行为也是合理的。(用户名/密码)Username/PasswordMQTT允许发送用户名和密码以便验证客户端的身份和进行授权。(遗嘱消息)Will Message当某个客户端恶意断开连接时,遗嘱消息将通知其他客户端。一个连接着的客户端将在CONNECT消息中以MQTT消息和主题的形式提供其遗嘱。如果客户端恶意断开了连接,代理将发送此消息来代表客户端。(心跳)KeepAlive心跳是一个时间间隔,客户端有规律地向代理服务器发送PING Request消息。CONNECT可变报头的字节构成CONNECT报文的可变报头按下列次序包含四个字段:协议名(Protocol Name),协议级别(Protocol Level),连接标志(Connect Flags)和保持连接(Keep Alive)。

代理响应CONNACK消息会话表示标志(Session Present flag)会话表示标志表示,代理和客户端之间自从前面的交互以来是否是持久会话。确认连接标志(Connect acknowledge flag)尝试连接是否成功,如果不成功存在的问题是什么?返回代码 返回代码响应0 连接接受1 连接拒绝,不可接受的协议版本2 连接拒绝,标识符拒绝3 连接拒绝,服务器不可用4 连接拒绝,错误的用户名和密码5 连接拒绝,未授权MQTT保留消息保留消息是一条将保留标志(retained flag)置为true的普通MQTT消息。broker会针对主题依照QoS级别保留最后一条保留消息。保留消息存在的意义是为了订阅者能够立即收到消息而无须等待发布者发布下一条消息。一个主题的保留消息是最新的可知的有效数据,它不必是最新的数据,但它一定是将保留标志置为true的最新消息。当使用保留消息时,此主题的一个新订阅者会在订阅后立即收到设备的当前状态。对于那些周期性的发送数据,如温度,GPS坐标或其他用户数据的客户端也一样。如果不使用保留信息,订阅者在发布者发布间隔期将对当前状态一无所知。而使用保留信息可以立即提供一个有效数据给新客户端。MQTT遗嘱LWTMQTT使用遗嘱(LWT)功能通知其他客户端某个客户端意外断开连接了。每个客户端都可以在连接broker时指定其最新的遗嘱(一个具备主题,保留标志,QoS的普通MQTT消息)。broker将会在以下情况分发遗嘱消息。服务器发现一个I/O错误或者网络错误;客户端没有按时发送心跳包;客户端没有在断开连接前发送DISCONNECT包;服务器因为协议错误而断开连接。遗嘱是发布者在连接丢失时通知订阅者而设计的。在实际使用中,遗嘱经常和保留消息一起使用,以便于通过主题来存储客户端当前的状态。例如,在客户端刚连上broker时,它会向主题client/status发送一个消息体为“online”的保留消息。然后在连接过程中,客户端再发送一个消息体为“offline”的遗嘱消息,并将此消息设为保留消息。如果客户端此时意外断开连接,那么broker将发布此消息体为“offline”的保留消息。这种模式允许其他客户端通过一个主题来观察此客户端的状态,并且因为它是个保留消息,所以新连接上来的客户端也会立刻就知道此设备的状态。MQTT心跳包什么是半开连接(half-open)?MQTT是基于TCP,并且它可以保证数据包在网络传输时的“可靠,有序,错误可查”这些特性。当客户端与服务器建立起正常的TCP连接后,在某些情况下一个传输端点可能会无法和其他传输端点同步,这常常是因为一方出现问题,比如客户主机掉线(网线断开)、电源掉电、或系统崩溃,或者传输过程中出现问题这种情况被叫做半开(half-open)连接。重点是仍在正常工作的一方并不知道对方出现了什么问题,它会不断尝试发送信息并等待对方回应。为了应对半开连接问题,或至少可以知道连接是否还在,MQTT提供了心跳(keep alive)机制。MQTT客户端向服务器发起CONNECT请求时,通过KeepAlive参数设置保活周期。客户端在无报文发送时,按KeepAlive周期定时发送2字节的PINGREQ心跳报文,服务端收到PINGREQ报文后,回复2字节的PINGRESP报文。服务端在1.5个心跳周期内,既没有收到客户端发布订阅报文,也没有收到PINGREQ心跳报文时,主动心跳超时断开客户端TCP连接并且发送遗嘱消息(前提是客户端已经指定了遗嘱)。客户端可以在任何时间发送PINGREQ来确认网络连接是有效的。PINGREQ包不含任何包体(payload)。心跳机制可以确认连接依然是打开的,并且borker和客户端都连接上了对方。因此客户端可以设定一个几秒钟的时间间隔,并在建立连接后按此间隔来发送消息给broker, 心跳的时间间隔是borker和客户端所能接受的最长的通信周期。最长的心跳周期是18小时12分15秒。如果心跳周期为0,那么心跳机制就是无效的客户端发送PINGREQ报文给服务端的。用于:1 在没有任何其他控制报文从客户端发送给服务的时候,告知服务端,客户端还活着;请求服务端发响应确认它还活着。2 使用网络以确认网络连接没有断开基于WebSockets的MQTTMQTT协议除支持TCP传输层外,还支持WebSocket作为传输层。通过WebSocket浏览器可以直连MQTT消息服务器,发布订阅模式与其他MQTT客户端通信。MQTT协议的WebSocket连接,必须采用binary模式,并携带子协议Header:Sec-WebSocket-Protocol: mqttv3.1 或 mqttv3.1.1MQTT它构建于( )协议上基于( )模式的消息协议。答案:TCP 发布/订阅MQTTCONNACK控制报文的报文流动方向( )。A客户端到服务器 B. 服务器到客户端 C. 两个方向都允许 D. 禁止流动答案:B 服务质量(QoS)有哪几个级别?A. QoS 0:最多分发一次 B. QoS 1: 至少分发一次 C. QoS 2: 仅分发一次答案: ABC 一个客户端不可以既是发布者也是订阅者。答案:错在MQTT协议中,如果客户端发送到服务器的发布数据包中的保留标志设置为0,则该消息不能作为保留信息被保存在服务器中,同时也不能清除或者替换现有的保留信息。A TRUEB FALSE答案: A MQTT工作在()协议簇上?A TCP/IPB PF_OSIC rfc/draftD PF_INET答案:A MQTT的消息类型有几种?A 8B 16C 14D 6答案:CMQTT协议提供一对多的消息发布,当发布者发布消息时,所有订阅者都可以同时接收到发布者发布的消息。A TRUEB FALSE答案: BMQTT报文结构应符合MQTTV3.1协议规范要求,一个MQTT数据包由()三部分构成A 固定报文头B 可变报文头C 消息体答案:ABC在MQTT协议中,客户端与服务器建立网络连接之后,从客户端发送到服务器的第一个数据包必须是CONNECT包A TRUEB FLASE答案: A 在MQTT协议中,如果客户端发送到服务器的发送数据包中的保留标志设置为为0,则该消息不能作为保留消息被保存在服务器中,同时也不能清除或替换现有的保留消息A TRUEB FLASE答案:B在MQTT协议中,如果客户端发送到服务器的发布数据包中的保留标志设置为0,则服务器必须替换此主题的任何现有保留消息并存储应用消息()A TRUEB FALSE答案:B 不确定在下列MQTT主题的表示方法中,哪一项与huawei/+/temperature不匹配?A huawei/livingroom/temperatrueB huawei/bashroom/temperatureC huawei/livingroom/sensor-1/temperatureD huawei/bedroom/tempreature答案:C 在下列MQTT协议的控制报文类型中,哪一项的载荷内容是必需的?A PUBRELB DISCONNECTC CONNECTD PUBLISH答案:C在下列MQTT协议的控制报文类型中,报文流动方向从服务器到客户端的是哪一项?A DISCONNECTB SUBACKC CONNECTD SUBSCRIBE答案:B MQTT协议规范中定义了多种不同类型的控制报文,其中一个用于传输()的是PUBLISH答案: 应用消息在MQTT协议的CONNECT 报文中,Keep Alive 字段所表示的时间间隔,其单位为哪一项?A TickB 毫秒C 微秒D 秒答案:D MQTT协议的心跳保活机制最长时间间隔为____秒?答案: 65535物联网常用模组AT指令AT指令是应用于终端设备与PC应用之间连接与通信的指令。AT即Attention,AT指令集是从TE(Terminal Equipment,终端设备)或DTE(Data Terminal Equipment,数据终端设备)向TA(Terminal Adapter,终端适配器) 或DCE(Data Circuit Terminal Equipment,数据电路终端设备) 发送的。通过发送AT指令来控制移动台的功能,与各种网络业务进行交互。端到端集成开发概述端到端开发:终端侧开发和应用服务器侧开发。终端侧开发:硬件PCB设计、终端业务程序开发以及网络接入调试。应用服务器侧开发:Profile文件开发、编解码库开发以及调用IoT平台北向接口开发应用服务器。

AT命令本节学习AT命令,用来控制TE(Terminal Equipment)和MT(Mobile Terminal)之间交互的规则,如下图所示:

AT命令分类AT命令中的4种命令:设置命令 =XX 用来设置AT命令中的属性测试命令 =? 用来显示AT命令设置的合法参数值有哪些查询命令 ? 用来查询当前AT命令的设置的属性值执行命令 执行AT命令(不需要参数,例如查询版本号等)

NB-IoT AT指令集MCU通过AT命令对通信模组进行控制。终端厂商除了实现相应业务功能的开发,同时需要开发相关程序调用AT命令对通信模组进行控制。操作目的AT命令关闭功能AT+CFUN=0查询软件版本AT+CGMR查询设备号AT+CGSN = 1设置平台地址AT+NCDP=xx.xx.xx.xx设置APNAT+CGDCONT=1,"IP","xxxx"模组重启AT+NRB功能开启AT+CFUN=1查询sim卡imsiAT+CIMI基站连接通知AT+CSCON=1核心网连接通知AT+CEREG=2下行数据通知AT+NNMI=1数据发送成功通知AT+NSMI=1网络附着AT+CGATT=1查询UE状态AT+NUESTATS查询核心网分配ip地址AT+CGPADDR发送数据AT+NMGS=1,11查询发送缓存AT+NQMGS查询接收缓存AT+NQMGRAT+CGSN(查询模块序列号)执行该命令会返回IMEI(国际移动设备标识)序列号,这个序列号每个模块都是唯一的,它是由GSM(GlobalSystemforMobileCommunications,全球移动通信协会)统一分配的,很多物联网平台都是以IMEI号来区分不同的设备,例如华为云物联网平台就是通过在的平台上注册设备IMEI号来区分不同的设备终端。例:查询模块序列号发送指令:AT+CGSN=1模块返回:+CGSN:868744036640526OKAT+CEREG(查询网络注册状态)该指令用于查询终端 EPS 网络注册状态。当使能提示时,终端的网络注册状态信息有变化,会主动上报给用户终端。通过不同的设置可以上报EPS注册状态、位置区码、小区ID、服务小区的接入技术等信息,通常情况下只需要设置为自动上报EPS注册状态。例:设置网络注册状态上报信息发送指令:AT+CEREG=1模块返回:OK设置成功后,当网络注册状态信息有变化,会主动上报给用户终端,如:+CEREG:1,1OK第一个1表示使能网络注册状态自动上报”+CEREG:<stat>”,第二1表示已经注册上网络,如果是2的话表示未注册,但终端目前正试图注册或搜寻注册网络。AT+CSCON(查询终端与基站连接状态)该指令用于查询终端与基站的连接状态。当使能提示时,终端与基站的连接状态信息有变化,会主动上报给用户终端。连接状态包括连接态和空闲态。例:设置终端与基站连接状态上报发送指令:AT+CSCON=1模块返回:OK设置成功后,当终端与基站的连接状态有变化,会主动上报给用户终端,如:+CSCON:1,1OK第一个1表示使能连接状态自动上报”+CSCON:<stat>”,第二1表示CONNECT连接状态,如果是2表示IDLE睡眠状态如果没有数据交互,在CONNECT状态持续20秒,之后进入IDLE状态;如果仍然没有数据交互,10秒之后从IDLE状态进入PSM深度睡眠状态,此时模块不在接收任何下行数据,如果需要下行传输数据必须在CONNECT 和 IDLE状态下进行。AT+CGPADDR(显示PDP地址)该指令用于查询核心网给终端分配的IP地址,该IP地址的为一个动态IP,每次设备接入网网络后核心网都会给终端随机分配一个IP,这个IP地址为内部地址,它是通过NAT方式的方式访问外部网络,对上行数据,NAT负责将UE的内部地址转换为外部地址(公网地址);对下行数据,NAT负责将外部地址替换为UE的内部地址。故服务器端不可通过核心网给模组分配的IP与模块进行通信。例:查询IP地址发送指令:AT+CGPADDR=0模块返回:+CGPADDR:0,10.176.69.232OKAT+CMEE(报告终端错误)该指令用于设置终端错误报告,使能后当发送AT执行错误时终端会返回错误编码,这样便于定位问题。例:开启错误码上报发送指令:AT+CMEE=1模块返回:OKAT+CFUN(设置模块射频功能)该指令用于设置和查询模块的射频功能是否开启例:AT+CFUN=0 //关闭射频功能OKAT+CFUN=1 //开启模块射频功能OKAT+CFUN? //查询模块的射频开启状态+CFUN:1 //射频功能已打开成功,若回复0通常是因为卡的电路与模块没有连接成功 开发者发送AT+CFUN?命令后,模组接收到的返回值为:CFUN:1, 该返回值表示的含义为哪一项?A 关闭射频功能B 射频功能已打开成功C 射频功能未打开D 开启错误上报答案: B 重启模块发送指令AT+NRB模块返回: REBOOTING****Boot: UnsignedSecurity B.. VerifiedProtocol A.. VerifiedApps A...... VerifiedREBOOT_CAUSE_APPLICATION_ATNeul OK设置频段发送指令:AT+NBAND=5模块返回:OK此处5表示电信的Band5频段,移动和联通共用Band8频段,更多频段信息请参考当地运营商能提供的频段。查询模块射频功能状态发送指令:AT+CFUN?模块返回:+CFUN:1OK查询模块射频功能状态发送指令:AT+CFUN?模块返回:+CFUN:1OK返回:+CFUN:1表示射频已经打开,若返回:+CFUN:0则表示射频未打开,通常需要检查SIM卡是否正确安装。开启射频功能发送指令:AT+CFUN=1模块返回:OK返回:OK表示射频已打开,可以继续使用查询指令来验证。若返回:ERROR,通常因为射频已经开启或者SIM卡未正确安装。查询模块信号强度发送指令:AT+CSQ模块返回+CSQ:31,99OK+CSQ 格式如下:+CSQ:<rssi>,<ber>,字段的含义为:rssi= 0,表示信号质量为-113dBm 或者以下,信号非常差 ;rssi= 1,表示信号质量为-111dBm ;rssi= 2~30,对应信号值为-109dBm 到-53dBm;rssi=31,对应信号值为-51dBm 或者更高;ber 字段未使用,恒等于 99。CSQ 中的rssi和dBM 换算公式如下:dBM = rssi * 2 - 113例如: 当rssi 等于30时,对应的dBM 为-53dBM 查询网络是否激活发送指令:AT+CGATT?模块返回:+CGATT:1OK返回:+CGATT:1 表示网络已激活,若返回:+CGATT:0,则表示网络未激活。请尝试重启模组激活网络。查询NB-IoT模组是否连接网络成功的AT指令为以下哪一项?A AT+CGATT?B AT+CGSN=3C AT+CGSN=2D AT+CGATT=1答案: A 查询网络是否注册发送指令:AT+CEREG?模块返回:+CEREG:0,1OK返回格式为:+CEREG:<n>,<stat> <n>是通知设置;当 n 为 0 时,表示网络注册状态变化时,不会主动发送+CEREG 通知,用户发送查询命令 时才会返回;当 n 为 1 时,表示网络注册状态变化时,模块会主动下发+CEREG 通知; <stat>是网络注册状态; 当 stat 为 0 时,表示模块未注册到网络 ;当 stat 为 1 时,表示模块已注册到网络。查询当前网络连接状态发送指令:AT+CSCON?模块返回:+CSCON:0,1OK返回格式为:+CSCON:<n>,<mode> <n>是通知设置。取值和说明如下: 0 取消异步通知,当网络连接后,串口不会主动上报+CSCON 指令;1 使能异步通知,串口主动上报+CSCON; <mode>是当前模块连接状态,取值和说明如下; 0 处于 IDLE 状态 ;1 处于已连接状态;当处于 IDLE 状态时,只要发送数据或者重启设备,就会变成已连接状态。Wi-Fi AT指令集Wi-Fi作为非3GPP标准的短距无线通信技术,其AT指令相较GPRS与NB-IoT有所不同。其指令更多是与网关进行交互,通过网关作为统一出口访问网络。故其不涉及SIM卡、无线及核心网等运营商相关数据。操作目的AT命令重启模块AT+RST查询版本信息AT+GMR扫描附近的AP信息AT+CWLAP连接APAT+CWJAP与AP断开连接AT+CWQAP查询⽹网络连接信息AT+CIPSTATUS域名解析功能AT+CIPDOMAIN建立连接AT+CIPSTART设置透传模式AT+CIPMODE发送数据AT+CIPSEND查询本地IP地址AT+CIFSRPing功能AT+PING扫描当前可⽤用的APAT+CWLAP恢复出⼚厂设置AT+RESTORE查询系统当前剩余内存AT+SYSRAMWi-Fi终端对接流程终端对接流程终端上电,执行”AT+CWMODE=3”复位终端。如果返回OK,表示终端已配置Wi-Fi模式。执行”AT+CWJAP=”SSID“,”password“”联接路由器。如果执行成功,返回OK。执行”AT+CIFSR”查询 ESP8266 设备的 IP 地址。如果执行成功,返回OK,详细可参考附录。执行”AT+CIPSTART="TCP",“IP”,PORT”设置需要对接IoT平台的地址,端口为5683。如果执行成功,返回OK。执行”AT+CIPSEND=<length>”开始执行发送数据命令,返回“>”输入数据。如果执行成功,返回SEND OK。NB-IoT芯片的AT指令分为几类?测试指令、查询指令、执行指令(有参数)、执行指令(无参数)、设置指令AT+CSCON?用于查询什么状态?查询当前网络连接状态开发者发送AT+CGATT?,模组返回+CGATT:1, 该返回值表示的含义为以下哪一项?A 网络未激活B 射频已打开C 网络已激活D 射频未打开答案:C 在试验中,NB-IOT和Wifi 模组与单片机是通过以下哪一项进行通信的?A SPI协议B 串口协议C I2C协议D CAN总线协议答案: B AT+CGPADDR指令用于查询核心网给终端分配的IP地址A TRUEB FALSE答案: A 下列选项中,哪一项为执行指令(有参数)?A AT+<x>B AT+<x>?C AT+<x>=?D AT+<x>=<....>答案: D物联网操作系统概述Huawei LiteOS为开发者提供“一站式”完整软件平台,使物联网终端开发更简单、互联更容易、业务更智能、体验更顺畅、数据更安全。RTOS 概念RTOS ( Real-time operating system , 实时操作系统),又称实时操作系统,是管理系统硬件和软件资源的系统软件,以方便开发者使用,操作系统管理的资源包括处理器、存储器、外设、甚至包括文件系统等等。实时操作系统最大的特色就是其“实时性”。也就是说,如果有任务需要执行,实时操作系统会立即(在较短时间内)执行该任务,保证了任务在指定时间内完成。实时操作系统根据任务执行的实时性,分为“硬实时”操作系统和“软实时”操作系统,“硬实时”操作系统比“软实时”操作系统响应更快、实时性更高,“硬实时”操作系统大多应用于工业领域。“硬实时”操作系统必须使任务在确定的时间内完成。“软实时”操作系统能让绝大多数任务在确定时间内完成。在硬实时操作使用RTOS的好处Huawei LiteOS 是一款“软实时”操作系统。降低开发难度,直接使用系统API,即可完成系统资源的申请、多任务的配合(基于优先级的实时抢占调度,同优先级的时间片调度),以及任务间的通信等(如锁、事件等机制)。增加代码可读性,易于维护和管理。提升可移植性,对接不同芯片的工作由操作系统完成,应用开发者只需要关注OS 层接口。千亿物联时代需要物联网操作系统10亿连接PC时代x86架构电脑 Windows150亿连接移动互联网时代ARM架构手机 Android/iOS1000亿连接物联网时代x86/ARM/DSP/MIPS/FPGA… 各种终端物联网操作系统Huawei LiteOS概述Huawei LiteOS基础内核是最精简的Huawei LiteOS操作系统代码,包括任务管理、内存管理、时间管理、通信机制、中断管理、队列管理、事件管理、定时器等操作系统基础组件,可以单独运行。Huawei LiteOS Kernel的优势高实时性,高稳定性。超小内核,基础内核体积可以裁剪至不到6KB。低功耗。支持功能静态裁剪。动态加载:在程序需要执行所依赖的模块中的代码时,动态的将外部模块加载链接到内存不需要该模块时可以卸载,可以提供公共代码的共享以及模块的平滑升级等功能。分散加载:被应用来实现关键业务的快速启动 (分散加载,分阶段,第一阶段加载关键业务)静态剪裁:对于不用的功能和模块,静态剪裁后,可以降低特定单板的bin 和软件包的大小降低内存开销。静态剪裁,通过编译开关(如,配置项)解除符号依赖,使在链接时不链接功能或模块的编译单元。物联网操作系统需求连接需求:不同类型通信协议的互通互联;组网需求:自发现、自连接、自组网,网络可快速自愈;管理要求:不同类型传感器接入和算法开发的统一管理。LiteOS 物联网操作系统概览

轻量级:可伸缩内核 uA级功耗 uS级响应联接智能:Wifi、ZigBee、NB-IOT等短距、长距协议设备的互联互通组网智能:优化的Mesh自组网,组网块,组网稳,组网多管理智能:不同类型、不同接口传感器的统一管理,即插即用 端管云协同的安全管理,降低中断被攻击的风险LiteOS 以模块化设计灵活支持多种部署场景对LPWA端侧产业伙伴提供三种方案:场景1:基于MCU的设备开发(A + B + C)场景2:集成到NB-IoT SoC(A + C)场景3面向运营商云平台,提供SDK供模组厂商快速对接(C)IoT终端在不同领域中需解决的问题1. Connectivity:部署分散,无线覆盖不够2. 互通、互操作:不同厂家的设备3. 能耗:使用电池,能耗要严格控制4. 安全:无安全的网络5. 简易配置:没有输入和显示设备6. 远程操控:NAT和防火墙后的设备物联网操作系统面临的挑战多传感器协同管理复杂视频场景下性能、功耗要求高终端之间通信协议复杂多样开发语言编程效率低、上手难度大硬件、协议、标准和应用场景高度碎片化1 多行业&多应用简单易用的开放API2 多芯片/硬件跨芯片快速移植3 多标准影响业务互操作4 多协议影响互联互通资源受限、超低功耗和高实时响应要求极致化1 受限资源: KB级2 超低功耗: uA级3 实时响应: ms级(自动驾驶和工业控制等)简易规模部署和安全连接安全连接70%的物联网设备缺乏有效的安全措施DIY规模部署简单快捷零配置: 无屏幕和输入自由动态组网有线+无线 Mesh组网入网、离网网络拓扑自动快速愈合LiteOS的网络架构M2M GW:第3方设备的接入和互通统一到IP的Mesh自组网两级LiteServer稀疏型和密集型兼顾的部署

LiteOS的软件架构组件跨OS重用,保证大小设备互通。组件相互解耦,可自由裁剪。

LiteOS的低功耗设计调度机制LiteOS采用了集中式任务调度

传输机制轻量级网络协议栈: 利用Mesh网络的特点优化协议栈,在无线网络丢包较高时,减少发送端的重传次数(在15%的丢包网络中,总传输量可降低62%),降低功耗。路由算法改进: 多路由的负载均衡,丢包率降低57%,从而降低功耗。Sleeping Router:没有数据传输时,Router节点自动Sleeping。LiteOS的安全设计内核层:SafeArea: 使得进程之间相互隔离。保护敏感数据(如密钥,证书),只能通过保护API访问。区分用户态和内核态:限制应用对硬件和资源的访问。安全加载:对可信应用和非可信应用采取不同的加载和资源分配机制。传输层:基于TLS/DTLS的加密传输应用层:可信应用签名API认证LiteOS的Connectivity和互通互操作设计LiteOS自带BLE和ZigBee协议栈;支持6LoWPAN over 802.15.4 和6LoWPAN over BT;BLE、802.15.4、WiFi统一到IPv6,在IP层互通;实现BLE、Zigbee和 IPv6( BLE、802.15.4、WiFi)在应用层的互通互操作。Open CPU架构BC35-G模组是由移远发布的一款基于海思Hi2115(又称:Boudica150)芯片的NB-IoT通信模组。BC35-G的运行方式支持以下两种:NB-IoT+MCU模式、OpenCPU模式NB-IOT+MCU 模式是我们常见的一种组合方式 (小熊派IOT既是此种组合方式)用MCU作为主控,进行数据采集及控制,MCU向模组发送AT命令来实现设备与互联网的数据交互。OpenCPU是利用模组自身处理能力来完成MCU工作,从而省去MCU。

对设备厂商的价值:省去外置微控制器,降低成本,缩小设备尺寸,提升电池续航充分利用芯片的能力,例如控制RF的开关运行定制化软件,灵活增加新业务功能优化业务逻辑,实现产品差异化芯片优势(vs. Boudica V120):全频段支持: 698~2180MHz,只需一套模组硬件基于ARM Cortex-M0架构的,带有片上存储空间的专用应用处理器(Application Processor):支持二次开发更大存储空间:256KB Flash,64KB RAM更多外设资源:温度传感器、电容型触摸传感器、ADC/DAC、可编程的电流源和中断比较器等; 40个GPIO口,可以被SPI/UART/I2C/PWM等外设复用更低功耗:芯片sleep态约2.5uA;模组sleep态约3.6uAMIPI RFFE接口用于与外部射频电路接口连接1个通用UART (最高1.5Mbits),2个低功耗UART (支持低功耗下异步操作),2个I2C(最高1Mbits/s)2个SPI (最高24Mbit/s) 1个10bit ADC (818ksps) ,1个10bit DAC, 1个高速模拟比较器。22个可编程IO Hi2115 芯片的40个GPIO中,有24个GPIO在应用核上可用。对于每个GPIO的IO引脚功能均有软件进行控制,包括:方向,中断配置、驱动强度、以及集成的上拉下拉电阻。LiteOS支持的芯片和硬件平台芯片海思IPC芯片Hi3516A/Hi3516c/Hi3518e等海思多媒体芯片 Hi3798C等STM32F4/STM32L4/ STM32F103 MCU联盛德WM500 WiFi SoCIntel Quark C1000 MCUMTK MT7697 WiFi/BLE SoCSynopsys ARC EM 处理器兆易创新 GD32F4 MCU硬件开发板秉火STM32F103开发板STM Nucleo-F411RE评估板STM32F429 评估板STM32F103RET6+Marvell 8686 MR09(WiFi模块)WRTNode-HiCam16 开源硬件(Hi3516c)WRTNode开源硬件 (MTK7620N)华为旗舰手机采用LiteOS提升性能计步能耗从1mA降低到0.1mA;与感光模块协同优化,能耗降低10%;支持多摄像头,相机热启动更快,响应时间减少30ms;测量精确度提升20%。基于LiteOS的智能Camera解决方案特点:1S以内的快速启动冷启动到预览<400ms,冷启动到录制<800ms低CPU消耗,低功耗支持1080P@60fps,40M码流持续录制时,CPU使用率约为50%; 比Linux系统支持码流高1倍,CPU使用率低45%待机功耗从400mA(Linux)降到2mA(Liteos)整体工作功耗(1080P@60fps录制场景)比Linux系统低10-15%最小体积可工作包约300KB(驱动+Liteos内核+协议栈+FS等),约为Linux系统的1/4、所有组件均可裁剪。基于LiteOS的智能家居解决方案特点:快速自连接、自发现、自组网自连接+自发现+自组网时延<3s设备离网,网络拓扑愈合时延<20s支持多种连接协议混合组网ZigBee、BT、WiFi、6LowPan等统一APP控制一个APP控制不同厂家的设备Liteos与第三方硬件集成STM32,MKT,Ti CC253xHuawei LiteOS Kernel的优势有哪些?高实时性,高稳定性。超小内核,基础内核体积可以裁剪至不到10KB。低功耗。支持动态加载,分散加载。支持功能静态剪裁。LiteOS的低功耗设计有哪些机制?调度机制:任务集中式调度传输机制:轻量级网络协议栈,路由算法改进,Sleeping Router所有的嵌入式操作系统都是实时操作系统?A TRUEB FALSE 答案:B 下列选项中,哪几项属于物联网操作系统需要解决的碎片化问题?A 行业标准多:影响业务互操作B 芯片架构多:需跨芯片移植C 应用多:需要有简单易用的开发接口D 协议多:影响互联互通答案: ABCDHuawei LiteOS基础架构Huawei LiteOS为开发者提供“一站式”完整软件平台,使物联网终端开发更简单、互联更容易、业务更智能、体验更顺畅、数据更安全。Huawei LiteOS关键技术及总体架构

下列选项中,哪几项属于物联网操作系统需要支持的芯片架构?A DSPB Cortex-MC Cortex-AD MIPS答案: ABCD轻量级内核:更小体积、更低功耗、更快响应轻量级内核小体积:可伸缩,最小到 6KB低功耗:uA 级功耗强实时:us 级响应广适配:支持多种芯片架构兼容性:提供标准接口Huawei LiteOS 基础内核时间管理 系统时间 Sys时间 tick软件定时器 Swtmr硬件相关硬中断 Hwi异常 Exception硬件定时器 Hwtmr 内存动态内存 Memory静态内存 MemBoxIPC 通信消息队列 Queue事件Event任务同步信号量 Sem互斥锁 Mutex任务任务调度 TaskLiteOS源码核心文件夹分析文件夹描述atAT指令框架实现driver驱动框架inc存放内核内部使用头文件network/coapCoAP的适配及协议实现network/dtlsLwM2M的开源协议栈wakaama的适配network/lwm2mLwM2M的开源协议栈wakaama的适配network/mqttMQTT的适配及协议实现network/tcpipTCPIP适配及协议栈实现、lwIP驱动、OS适配及协议栈实现、MacOS_socket适配及协议栈实现oc/oc_lwm2mLwM2M协议适配华为OCoc/oc_mqttMQTT协议适配华为OCos/osalIoT Device SDK Tiny的OS适配os/os_imp目前系统适配层适配的操作系统任务概念从系统的角度看,任务是竞争系统资源的最小运行单元。任务可以使用或等待CPU、使用内存空间等系统资源,并独立于其它任务运行。Huawei LiteOS的任务模块可以给用户提供多个任务,实现了任务之间的切换和通信,帮助用户管理业务程序流程。这样用户可以将更多的精力投入到业务功能的实现中。Huawei LiteOS是一个支持多任务的操作系统。在Huawei LiteOS中,一个任务表示一个线程。Huawei LiteOS中的任务是抢占式调度机制,同时支持时间片轮转调度方式。高优先级的任务可打断低优先级任务,低优先级任务必须在高优先级任务阻塞或结束后才能得到调度。Huawei LiteOS的任务一共有32个优先级(0-31),最高优先级为0,最低优先级为31。任务状态就绪态(Ready):该任务在就绪列表中,就绪的任务已经具备执行的能力,只等待调度器进行调度,新创建的任务会初始化为就绪态。运行态(Running):该状态表明任务正在执行,此时它占用处理器,LiteOS调度器选择运行的永远是处于最高优先级的就绪态任务,当任务被运行的一刻,它的任务状态就变成了运行态。阻塞态(Blocked):如果任务当前正在等待某个时序或外部中断,我们就说这个任务处于阻塞状态,该任务不在就绪列表中。包含任务被挂起、任务被延时、任务正在等待信号量、读写队列或者等待读写事件等。退出态(Dead):该任务运行结束,等待系统回收资源。

任务状态迁移说明状态迁移迁移说明就绪态-》运行态任务创建后进入就绪态,发生任务切换时,就绪列表中最高优先级的任务被执,从而进入运行态,但此刻该任务依旧在就绪列表中。运行态->阻塞态任务运行因挂起、读信号量等待等,在就绪列表中被删除进入阻塞。阻塞态->就绪态阻塞态->运行态阻塞的任务被恢复后(任务恢复、延时时间超时、读信号量超时或读到信号量等),此时被恢复的任务会被加入就绪列表,从而由阻塞态变成就绪态;此时如果被恢复任务的优先级高于正在运行任务的优先级,则会发生任务切换,将该任务由就绪态变成运行态。就绪态->阻塞态任务也有可能在就绪态时被阻塞(挂起)。运行态->就绪态有更高优先级任务创建或者恢复后,发生任务切换而进入就绪列表。运行态->退出态任务运行结束,内核自动将此任务删除,此时由运行态变为退出态。阻塞态->退出态阻塞的任务调用删除接口,任务状态由阻塞态变为退出态。任务管理简介任务管理简介任务ID在任务创建时通过参数返回给用户,作为任务的一个非常重要的标识。任务优先级优先级表示任务执行的优先顺序。任务入口函数每个新任务得到调度后将执行的函数。任务控制块TCB每一个任务都含有一个任务控制块(TCB)。TCB包含了任务上下文栈指针(stack pointer)、任务状态、任务优先级、任务ID、任务名、任务栈大小等信息。TCB可以反映出每个任务运行情况。任务栈每一个任务都拥有一个独立的栈空间,我们称为任务栈。任务上下文任务在运行过程中使用到的一些资源,如寄存器等,我们称为任务上下文。Huawei LiteOS在任务挂起的时候会将本任务的任务上下文信息,保存在自己的任务栈里面,以便任务恢复后,从栈空间中恢复挂起时的上下文信息,从而继续执行被挂起时被打断的代码。任务切换任务切换包含获取就绪列表中最高优先级任务、切出任务上下文保存、切入任务上下文恢复等动作。任务的运作机制Huawei LiteOS任务管理模块提供任务创建、任务删除、任务延时、任务挂起和任务恢复、更改任务优先级、锁任务调度和解锁任务调度、根据任务控制块查询任务ID、根据ID查询任务控制块信息功能。在任务模块初始化时,系统会先申请任务控制块需要的内存空间,如果系统可用的内存空间小于其所需要的内存空间,任务模块就会初始化失败。如果任务初始化成功,则系统对任务控制块内容进行初始化。用户创建任务时,系统会将任务栈进行初始化,预置上下文。此外,系统还会将“任务入口函数”地址放在相应位置。这样在任务第一次启动进入运行态时,将会执行“任务入口函数”。操作系统抽象层简介 为了让SDK能够更广泛的应用,所以提出了OSAL。 SDK内部集成的组件以及SDK本身使用的OS功能,都调用的是OSAL接口,因为SDK要运行起来, 必须注册相关的OS进OSAL才行。 OSAL使用说明:osal的api接口声明在<osal.h>中,使用相关的接口需要包含该头文件,关于函数的详细参数请参考该头文件的声明。目前已经适配了LiteOS/LINUX/MACOS等,SDK可以在这些系统下运行。如果你需要在非上述系统下运行SDK,您需要将新系统适配进OSAL,保障SDK需要的OS功能正常。适配OSAL:您需要在您的系统初始化完毕之后,调用osal_install接口将您的系统注册进SDK即可。使用该接口需要包含<osal_imp.h>,相关的宏定义在<osal_type.h>中。详情参考该头文件。以下属于Huawei LiteOS 操作系统抽象层的是哪一项?A MQTT ALB HALC OCALD OSAL答案: D LiteOS不支持ARM架构的芯片。A TRUEB FALSE答案: B 操作系统抽象层简介 (1)OSAL的API任务接口简介:接口名功能描述代码样例osal_task_create创建任务void* osal_task_create(const char *name,int (*task_entry)(void *args),void *args,int stack_size,void *stack,int prior);osal_task_kill删除某个任务int osal_task_kill(void *task);(一般是对非自任务操作)osal_task_exit任务退出(不会再恢复)void osal_task_exit();osal_task_sleep任务休眠void osal_task_sleep(int ms);创建任务接口参数说明:name任务名称task_entry任务入口函数的函数指针args 任务入口函数的参数列表stack_size任务栈大小stack任务栈地址prior任务优先级返回值任务ID在Huawei LiteOS中,在任务中删除其他任务的接口名为以下哪一项?A osal_task_exitB osal_task_createC osal_task_sleepD osal_task_kill答案:D 在Huawei LiteOS的任务管理模块中,在删除任务时要保证申请的资源 (如互斥锁\信号量等)已被释放A TRUEB FALSE答案: A 实现任务的创建 static int user_task1_entry() //任务1{ int n = 0; for(n = 0; n < 5; n++) { printf("task1: my task id is %ld, n = %d!\r\n", user_task1_id, n); osal_task_sleep(2*1000); } printf("user task 1 exit!\r\n"); return 0;}static int user_task2_entry() //任务2{ while (1) { printf("task 2: my task id is %ld!\r\n", user_task2_id); osal_task_sleep(2*1000); }}int standard_app_demo_main(){ user_task1_id = osal_task_create("user_task1",user_task1_entry,NULL,0x400,NULL,USER_TASK1_PRI); user_task2_id = osal_task_create("user_task2",user_task2_entry,NULL,0x400,NULL,USER_TASK2_PRI); return 0;} 信号量简介信号量(Semaphore)是一种实现任务间通信的机制,实现任务之间同步或临界资源的互斥访问。常用于协助一组相互竞争的任务来访问临界资源。在多任务系统中,各任务之间需要同步或互斥实现临界资源的保护,信号量功能可以为用户提供这方面的支持。通常一个信号量的计数值用于对应有效的资源数,表示剩下的可被占用的互斥资源数。其值的含义分两种情况:1)0,表示没有积累下来的Post操作,且有可能有在此信号量上阻塞的任务。2)正值,表示有一个或多个Post下来的释放操作。以同步为目的的信号量和以互斥为目的的信号量在使用有如下不同:1)用作互斥时,信号量创建后记数是满的,在需要使用临界资源时,先取信号量,使其变空,这样其他任务需要使用临界资源时就会因为无法取到信号量而阻塞,从而保证了临界资源的安全。2)用作同步时,信号量在创建后被置为空,任务1取信号量而阻塞,任务2在某种条件发生后,释放信号量,于是任务1得以进入READY或RUNNING态,从而达到了两个任务间的同步。Post操作:释放信号量的操作在Huawei LiteOS中,以下哪一项用于表示信号量没有可用的资源数?A 2 B 0 C 1D 3答案: B 信号量运作机制信号量初始化为配置的N个信号量申请内存(N值可以由用户自行配置,受内存限制),并把所有的信号量初始化成未使用,并加入到未使用链表中供系统使用。信号量创建从未使用的信号量链表中获取一个信号量资源,并设定初值。信号量申请若其计数器值大于0,则直接减1返回成功。否则任务阻塞,等待其它任务释放该信号量,等待的超时时间可设定。当任务被一个信号量阻塞时,将该任务挂到信号量等待任务队列的队尾。信号量释放若有任务阻塞于指定信号量,则唤醒该信号量阻塞队列上的第一个任务。该任务进入就绪态,并进行调度;如果没有任务阻塞于指定信号量,释放信号量成功。信号量删除将正在使用的信号量置为未使用信号量,并挂回到未使用链表信号量允许多个任务在同一时刻访问同一资源,但会限制同一时刻访问此资源的最大任务数目。访问同一资源的任务数达到该资源的最大数量时,会阻塞其他试图获取该资源的任务,直到有任务释放该信号量。

公共资源有四个任务数,信号量都分别被线程1,2,3,4获取后,此时资源就会锁定而不让线程5及后面的线程都进入阻塞模式,当线程1工作完成而释放出信号量,线程五立马获得信号而执行。信号量的使用场景互斥锁信号量创建后记数是满的,在需要使用临界资源时,先申请信号量,使其变空,这样其他任务需要使用临界资源时就会因为无法申请到信号量而阻塞,从而保证了临界资源的安全。任务间同步信号量在创建后被置为空,任务1申请信号量而阻塞,任务2在某种条件发生后,释放信号量,于是任务1得以进入 READY 或 RUNNING 态,从而达到了两个任务间的同步。资源计数信号量的作用是一个特殊的计数器,可以递增或者递减,但是值永远不能为负值,典型的应用场景是生产者与消费者的场景。中断与任务的同步可以在中断未触发时将信号量的值置为0,从而堵塞中断服务处理任务,一旦中断被触发,则唤醒堵塞的中断服务处理任务进行中断处理。操作系统抽象层简介OSAL的API信号量接口简介:接口名功能描述代码样例osal_semp_create信号量创建bool_t osal_semp_create(osal_semp_t *semp,int limit,int initvalue)osal_semp_del信号量删除bool_t osal_semp_del(osal_semp_t semp)osal_semp_pend信号量申请bool_t osal_semp_pend(osal_semp_t semp,int timeout)osal_semp_post信号量释放bool_t osal_semp_post(osal_semp_t semp)*semp 信号量索引ID的地址limit: 信号量计数值的最大值initvalue: 信号量计数值的初始值返回值:false 创建失败 true 创建成功在Huawei LiteOS中,信号量的创建需要指定以下哪几项参数?A 计数值初值B 超时时间C 最大计数值D 信号量索引ID地址答案: A C D实现信号量功能 static int user_task1_entry() //任务1{ while(1) { printf("task 1 post a semp!\r\n"); osal_semp_post(sync_semp); osal_task_sleep(2*1000); }}static int user_task2_entry() //任务2{ while (1) { printf("task2 is waiting for a semp...\r\n"); osal_semp_pend(sync_semp,cn_osal_timeout_forever); printf("task 2 access a semp!\r\n"); }}int standard_app_demo_main(){ osal_semp_create(&sync_semp, 1, 0); printf("sync_semp semp create success.\r\n"); osal_task_create("user_task1",user_task1_entry,NULL,0x400,NULL,USER_TASK1_PRI); osal_task_create("user_task2",user_task2_entry,NULL,0x400,NULL,USER_TASK2_PRI); return 0;} 任务1释放信号量之后, 休眠两秒,然后任务2获取信号量互斥锁简介1、互斥锁又称互斥型信号量,是一种特殊的二值性信号量,用于实现对共享资源的独占式处理。2、任意时刻互斥锁的状态只有两种:开锁或闭锁。3、当有任务持有时,互斥锁处于闭锁状态,这个任务获得该互斥锁的所有权。4、当该任务释放时,该互斥锁被开锁,任务失去该互斥锁的所有权。5、当一个任务持有互斥锁时,其他任务将不能再对该互斥锁进行开锁或持有。6、多任务环境下往往存在多个任务竞争同一共享资源的应用场景,互斥锁可被用于对共享资源的保护从而实现独占式访问。另外,互斥锁可以解决信号量存在的优先级翻转问题。互斥锁的运作机制用互斥锁处理非共享资源的同步访问时,如果有任务访问该资源,则互斥锁为加锁状态。此时其他任务如果想访问这个公共资源则会被阻塞,直到互斥锁被持有该锁的任务释放后,其他任务才能重新访问该公共资源,此时互斥锁再次上锁,如此确保同一时刻只有一个任务正在访问这个公共资源,保证了公共资源操作的完整性。

线程1访问公共资源,互斥锁上锁,线程2被挂起线程1释放互斥锁,此时线程2才能访问公共资源1 两个任务不能同时对同一把互斥锁加锁。如果某任务对已被持有互斥锁加锁,则该任务会被挂起,直到持有该锁的任务对互斥锁解锁,才能执行对这把互斥锁的加锁操作2 互斥锁不能在中断服务程序中使用3 Huawei LiteOS 作为实时操作系统需要保证任务调度的实时性,尽量避免任务的长时间阻塞,因此在获得互斥锁之后,应该尽快释放互斥锁4 持有互斥锁的过程中,不得再调用优先级调整等接口函数更改持有互斥锁任务的优先级OSAL的API互斥锁接口简介:接口名功能描述代码样例osal_mutex_create创建互斥锁bool_t osal_mutex_create(osal_mutex_t *mutex);osal_mutex_del删除互斥锁bool_t osal_mutex_del(osal_mutex_t mutex);osal_mutex_lock获取互斥锁bool_t osal_mutex_lock(osal_mutex_t mutex);osal_mutex_unlock释放互斥锁bool_t osal_mutex_unlock(osal_mutex_t mutex);*mutex 互斥锁的索引ID地址mutex 互斥锁索引ID在Huawei LiteOS中,释放互斥锁的接口名为以下哪一项?A osal_mutex_unlockB osal_mutex_createC osal_mutex_nolockD osal_mutex_lock答案:A 在Huawei LiteOS中,删除互斥锁的接口名为以下哪一项?A osal_mutex_createB osal_mutex_delC osal_mutex_lockD osal_mutex_unlock答案:B #include <osal.h>#define USER_TASK1_PRI 12 //低优先级#define USER_TASK2_PRI 11 //高优先级uint32_t public_value = 0;osal_mutex_t public_value_mutex;static int user_task1_entry()//任务1{ while(1) { if(true == osal_mutex_lock(public_value_mutex)) { printf("\r\ntask1: lock a mutex.\r\n"); public_value += 10; printf("task1: public_value = %ld.\r\n", public_value); printf("task1: unlock a mutex.\r\n\r\n");// osal_mutex_unlock(public_value_mutex); if(public_value > 100) break; } } return 0;}static int user_task2_entry()//任务2{ while (1) { if(true == osal_mutex_lock(public_value_mutex)) { printf("\r\ntask2: lock a mutex.\r\n"); public_value += 5; printf("task2: public_value = %ld.\r\n", public_value); printf("task2: unlock a mutex.\r\n\r\n"); osal_mutex_unlock(public_value_mutex); if(public_value > 90) break; osal_task_sleep(10); } } return 0;}创建互斥锁任务:int standard_app_demo_main(){ /* 创建互斥锁public_value_mutex */osal_mutex_create(&public_value_mutex); /* 创建任务task1 */ osal_task_create("user_task1",user_task1_entry,NULL,0x400,NULL,USER_TASK1_PRI); /* 创建任务task2 */ osal_task_create("user_task2",user_task2_entry,NULL,0x400,NULL,USER_TASK2_PRI); return 0;} Kernel模块 - 内存概念内存管理模块管理系统的内存资源,它是操作系统的核心模块之一。主要包括内存的初始化、分配以及释放。在系统运行过程中,内存管理模块通过对内存的申请/释放操作,来管理用户和OS对内存的使用,使内存的利用率和使用效率达到最优,同时最大限度地解决系统的内存碎片问题。Huawei LiteOS的内存管理分为静态内存管理和动态内存管理,提供内存初始化、分配、释放等功能。动态内存:在动态内存池中分配用户指定大小的内存块。 优点:按需分配。 缺点:内存池中可能出现碎片。静态内存:在静态内存池中分配用户初始化时预设(固定)大小的内存块。 优点:分配和释放效率高,静态内存池中无碎片。 缺点:只能申请到初始化预设大小的内存块,不能按需申请。Huawei LiteOS 中由于中断不能被阻塞,因此在申请信号量时,阻塞模式不能在中断中使用。A TRUEB FALSE答案: A

初始化内存:在内存使用之前,必须首先初始化内存池,LiteOS 在内核初始化的时候,就已经将管理的内存进行初始化了,内存的起始地址是 _LOS_HEAP_ADDR_START_ , 内存的结束地址是 _LOS_HEAP_ADDR_END_内存池的大小是OS_SYS_MEM_SIZE, 用户可以在分散加载文件中修改内存池的大小,但是最大不能超过芯片的RAM区域。申请内存:当系统初始化完毕之后,用户就可以从LiteOS 所管理的内存中申请内存了,在LiteOS 中,主要利用LOS_MemAlloc() 来申请内存,应用程序会根据所需要的内存的大小,从指定的内存池中申请内存,其大小不能超过当前系统管理的可用内存大小,调用三次LOS_MemAlloc () 函数可以申请3个内存空间,假设名称分别为UsedA, UsedB, UsedC, 大小分别为sizeA, sizeB,sizeC 剩下的内存则被标记为FreeNode, 因为刚初始化内存池的时候,只有一个大的FreeNode.所以这些内存块是从这个FreeNode 中切割出来的。释放内存:因为在嵌入式系统中,内存是系统的紧缺资源,当引用不再需要使用所申请的内存时,应该及时释放内存,在LiteOs中,主要利用LOS_MemFree ()来释放不再使用的内存,在此过程中,LiteOS会自动将不需要的内存释放到系统管理的内存池中,假设调用LOS_MemFree() 释放内存块UsedB,并且将其标记为FreeNode功能分类接口名描述初始化内存池LOS_MemInit初始化一块指定的动态内存池,大小为size删除内存池LOS_MemDeInit删除指定内存池,仅打开LOSCFG_MEM_MUL_POOL时有效显示系统内存池LOS_MemPoolList打印系统中已初始化的所有内存池,包括内存池的起始地址、内存池大小、空闲内存总大小、已使用内存总大小、最大的空闲内存块大小、空闲内存块数量、已使用的内存块数量,仅打开LOSCFG_MEM_MUL_POOL时有效为指定模块申请、LOS_MemMalloc从指定动态内存池分配size长度的内存给指定模块释放动态内存,LOS_MemMfree释放指定模块的内存块并纳入模块统计LOS_MemMallocAlign从指定动态内存池中申请长度为size且地址按boundary字节对齐的内存给指定模块LOS_MemMrealloc按size大小重新分配内存块给指定模块,并将原内存块内容拷贝到新内存块。如果新内存块申请成功,则释放原内存块获取指定模块的LOS_MemMusedGet获取指定模块的内存使用量,单位为Byte内存使用量动态内存运作机制 - DLINK(BEST-FIT)DLINK动态内存管理结构如下图所示:

运作机制:动态内存管理,即在内存资源充足的情况下,从系统配置的一块比较大的连续内存(内存池),根据用户需求,分配任意大小的内存块,当用户不需要该内存块时,又可以释放回系统供下一次使用。与静态内存相比,动态内存管理的好处是按需分配,缺点是内存池中容易出现碎片。LiteOS 动态内存支持DLINK和BEST LITTLE两种标准算法第一部分:堆内存(也称内存池)的起始地址及堆区域大小。第二部分: 本身是一个数组,每个元素是一个双向链表,所有free节点的控制头都会被分类挂在这个数组的双向链表中。每次申请内存的时候,会从这个数组检索最合适大小的free节点,进行内存分配。每次释放内存时,会将该内存作为Free 节点存储至这个数组,以便下次再利用。第三部分: 占用内存池极大部分的空间,是用于存放各个节点的实际区域。动态内存运作机制 - BEST LITTLEBEST LITTLE动态内存管理1)LiteOS的动态内存分配支持最佳适配算法,即BEST LITTLE,每次分配时选择内存池中最小最适合的内存块进行分配。LiteOS动态内存管理在最佳适配算法的基础上加入了SLAB机制,用于分配固定大小的内存块,进而减小产生内存碎片的可能性。LiteOS内存管理中的SLAB机制支持可配置的SLAB CLASS数目及每个CLASS的最大空间。2) 每次申请内存时,先在满足申请大小的最佳SLAB CLASS中申请。3) 释放内存时,先检查释放的内存块是否属于SLAB CLASS,如果是SLAB CLASS的内存块,则还回对应的SLAB CLASS中,否则还回内存池中。比如用户申请了20个字节内存,就在SLAB 块大小为32字节的SLAB CLASS 中申请,如果申请成功,就将SLAB内存块整块返回给用户,释放时整块回收,如果满足条件的SLAB CLASS中无可用SLAB 块了,则直接向内存池申请,而不会继续向有着更大的SLAB块空间的SLAB CLASS 申请。运作机制 - 动态内存

Kernel模块 - 静态内存静态内存实质上是一块静态数组,静态内存池内的块大小需要用户在初始化时设定,初始化后块大小不可变更。静态内存池由一个控制块和若干相同大小的内存块构成,控制块位于内存池头部,用于内存块管理,内存块的申请和释放以块大小为粒度。

内存管理应用场景与开发流程动态内存使用场景:1、内存管理的主要工作是动态的划分并管理用户分配好的内存区间。2、动态内存管理主要是在用户需要使用大小不等的内存块的场景中使用。3、当用户需要分配内存时,可以通过操作系统的动态内存申请函数索取指定大小内存块,一旦使用完毕,通过动态内存释放函数归还所占用内存,使之可以重复使用。静态内存使用场景:当用户需要使用固定长度的内存时,可以使用静态内存分配的方式获取内存,一旦使用完毕,通过静态内存释放函数归还所占用内存,使之可以重复使用。动态内存开发流程配置LOSCFG_MEMORY_BESTFIT:置为YES,选中内存管理算法中的BESTFIT算法。LOSCFG_KERNEL_MEM_SLAB:置为YES,打开内存管理中的SLAB机制。初始化调用函数初始化用户指定的动态内存池,若用户使能了SLAB机制并且内存池中的可分配内存大于SLAB需要的最小内存,则会进一步初始化SLAB CLASS。申请任意大小的动态内存调用函数从指定的内存池中申请指定大小的内存块,申请时内存管理先向SLAB CLASS申请,申请失败后继续向堆内存空间申请,最后将申请结果返回给用户。在向堆内存空间申请时,会存在内存块的切分。释放动态内存调用函数向指定的动态内存池释放指定的内存块,释放时会先判断该内存块是否属于SLAB CLASS,若属于,则将该内存块还回SLAB CLASS。否则,向堆内存空间释放内存块。在向堆内存空间释放时,会存在内存块的合并。静态内存应用场景与开发流程1、规划一片内存区域作为静态内存池。2、系统内部将会初始化静态内存池。将入参指定的内存区域分割为N块(N值取决于静态内存总大小和块大小),将所有内存块挂到空闲链表,在内存起始处放置控制头。3、系统内部将会从空闲链表中获取第一个空闲块,并返回该块的用户空间地址。4、将该块内存加入空闲块链表。5、系统内部清零静态内存块,将入参地址对应的内存块清零。OSAL的API内存管理接口简介:接口名功能描述代码样例osal_malloc按字节申请分配动态内存空间void *osal_malloc(size_t size);osal_free释放已经分配的动态内存空间void osal_free(void *addr);osal_zalloc按字节申请分配动态内存空间,void *osal_zalloc(size_t size);分配成功则初始化这块内存所有值为0osal_realloc重新申请分配动态内存空间void *osal_realloc(void *ptr,size_t newsize);osal_calloc申请分配num个长度为size的动态内存空间void *osal_calloc(size_t n, size_t size)size: 申请分配的内存大小,单位Byte, 返回值:分配成功 - 返回内存块指针 , 分配失败,返回NULLaddr: 动态分配内存空间的指针,返回值:无ptr: 已经分配了内存空间的指针n: 申请分配内存的数目在Huawei LiteOS中,申请重新分配内存调用的接口名为以下哪一项?A osal_reallocB osal_callocC osal_zallocD osal_malloc答案: A 在下列内存分配算法中,哪一项可以从全部空闲区中找到能满足作业要求的,且大小最小的空闲分区,使得碎片尽量小?A worst fit B next fit C first fitD best fit答案: D 解析:Firstfit:从低地址向高地址查找,一旦找到可以满足要求的内存块,即将该内存块分配出去即可。best-fit: 总是选择可以满足条件的最小的内存块,而worst-fit总是选择可以满足条件的最大块。实现内存管理功能 /* 使用osal接口需要包含该头文件 */#include <osal.h>static int mem_access_task_entry() //任务入口函数 { uint32_t i = 0; //循环变量 size_t mem_size; //申请的内存块大小 uint8_t* mem_ptr = NULL; //内存块指针 while (1) { mem_size = 1 << i++; //每次循环将申请内存的大小扩大一倍 mem_ptr = osal_malloc(mem_size); //尝试申请分配内存 if(mem_ptr != NULL) { printf("access %d bytes memory success!\r\n", mem_size); // 申请成功 osal_free(mem_ptr); //释放申请的内存,便于下次申请 mem_ptr = NULL; //将内存块指针置为NULL,避免称为野指针 printf("free memory success!\r\n"); } else { /* 申请失败,打印信息,任务结束 */ printf("access %d bytes memory failed!\r\n", mem_size); return 0; } }}int standard_app_demo_main(){osal_task_create("mem_access_task",mem_access_task_entry,NULL,0x400,NULL,11); return 0;} 中断机制简介中断是指出现需要时,CPU暂停执行当前程序,转而执行新程序的过程。即在程序运行过程中,系统出现了一个必须由CPU立即处理的事务。此时,CPU暂时中止当前程序的执行转而处理这个事务,这个过程就叫做中断。

中断机制相关的名词解释终端机制名词解释中断号每个中断请求信号都会有特定的标志,设备提出的中断请求让计算机判断,这个标志为中断号。中断需求“紧急事件”需向CPU提出申请(发一个电脉冲信号),要求中断,及要求CPU暂停当前执行的任务,转而处理该“紧急事件”,这一申请过程称为中断申请。中断优先级为使系统能够及时响应并处理所有中断,系统根据中断时间的重要性和紧迫程度,将中断源分为若干个级别,称作中断优先级。Huawei LiteOS支持中断控制器的中断优先级及中断嵌套,同时中断管理未对优先级和嵌套进行限制。中断处理程序当外设产生中断请求后,CPU暂停当前的任务去响应中断申请,即执行中断处理程序。中断触发中断源发出并送给CPU控制信号,将接口卡上的中断触发器置“1”,表明该中断源产生了中断,要求CPU去响应该中断,CPU暂停当前任务,执行相应的中断处理程序。中断触发类型外部中断申请通过一个物理信号发送到NVIC,可以是电平触发或边沿触发。中断向量中断服务程序的入口地址。中断向量表存储中断向量的存储区,中断向量与中断号对应,中断向量在中断向量表中按照中断号顺序存储。Kernel模块 - 中断运作机制当中断产生时,处理机将按如下的顺序执行:保存当前处理机状态信息载入异常或中断处理函数到PC寄存器把控制权转交给处理函数并开始执行当处理函数执行完成时,恢复处理器状态信息从异常或中断中返回到前一个程序执行点当中断产生时,中断运作将被分为如下几个步骤:1. 载入异常或中断处理函数到PC寄存器2. 当前处理函数执行完成时,恢复处理器状态信息3. 保存当前处理机状态信息4. 从异常或者中断中返回到前一个程序执行点5. 把控制权转交给处理函数并开始执行以下选项中,关于上述步骤排序正确的是哪一项?A 1-> 2 -> 3 -> 4 -> 5B 3-> 1 -> 2 -> 5 -> 4C 3-> 5 -> 1 -> 2 -> 4D 3 -> 1 ->5 -> 2 -> 4答案: D 在以下Huawei LiteOS的接口中,用于设置中断优先级的是哪一项?A LOS_HwiEnable()B LOS_HwiSetPriority()C LOS_HwiCreate()D LOS_HwiDelete()答案: B Kernel模块 - 中断发生在任务上下文任务在工作的时候,如果此时发生了一个中断,无论中断的优先级是多大,都会打断当前任务的执行,从而转到对应的中断服务函数中执行。

1,3 在任务运行的时候发生了中断,那么中断会打断任务的运行,那么操作系统将先保存当前任务的上下文环境转而去处理中断服务函数2,4 当且仅当中断服务函数处理完的时候才恢复任务的上下文,继续运行任务。Kernel模块 - 中断嵌套发生在执行中断服务例程的过程中,如果有更高优先级别的中断源触发中断,由于当前处于中断处理上下文环境中,根据不同的处理器构架可能有不同的处理方式。

当中断1的服务函数在处理的时候发生了中断2,由于中断2的优先级比中断1更高,所以发生了中断嵌套,那么操作系统将先保存当前中断服务函数的上下文环境,并且转向处理中断2,当且仅当中断2执行完的时候,才继续执行中断1。中断机制应用场景与开发流程当有中断请求产生时,CPU暂停当前的任务,转而去响应外设请求。根据需要,用户通过中断申请,注册中断处理程序,可以指定CPU响应中断请求时所执行的具体操作。开发流程1、修改target_config.h中的配置项打开硬中断裁剪开关LOSCFG_PLATFORM_HWI定义为YES配置硬中断使用最大数LOSCFG_PLATFORM_HWI_LIMIT2、初始化硬件中断。3、调用中断创建接口函数创建中断,根据需要使能指定中断。根据具体硬件,配置支持的最大中断数及中断初始化操作的寄存器地址中断处理程序耗时不能过长,影响CPU对中断的及时响应。关中断后不能引起调度的函数Cortex-M 系列处理器中的1~15 中断为内部使用,因此不建议用户去申请和创建。操作系统抽象层简介OSAL接口函数说明:接口名描述形参说明osal_int_connect 硬中断创建,注册硬中断处理程序形参有:中断号、优先级、模式、中断函数、中断函数形参。 int osal_int_connect(int intnum,int prio,int mode,fn_interrupt_handle callback,void *arg) 本实例实现功能如下,1 初始化硬件中断: 自己根据硬件情况来添加2 中断注册: 选择需要注册的中断号,优先级,中断入口函数,中断入口函数形参3 触发中断: 需要内部或者外部触发,中断函数才会执行4 查看打印结果: 中断函数中实现打印功能中断机制功能实现 #include <stdint.h>#include <stddef.h>#include <string.h>#include <osal.h>#include "stm32l4xx_hal.h"uint32_t sum1;uint32_t sum2;static int app_hello_world_entry(){ while (1) { printf("Hello World! This is Bearpi!\r\n"); osal_task_sleep(4*1000); }}static Key1_interrupt_entry(){ printf("KEY1 Interrupt entry OK!,sum1:%d\r\n",sum1++); __HAL_GPIO_EXTI_CLEAR_FLAG(GPIO_PIN_2);}static Key2_interrupt_entry(){ printf("KEY2 Interrupt entry OK!,sum2:%d\r\n",sum2++); __HAL_GPIO_EXTI_CLEAR_FLAG(GPIO_PIN_3);}int standard_app_demo_main(){ osal_task_create("helloworld",app_hello_world_entry,NULL,0x400,NULL,2); osal_int_connect( EXTI2_IRQn, 3, NULL, Key1_interrupt_entry, NULL); osal_int_connect( EXTI3_IRQn, 4, NULL, Key2_interrupt_entry, NULL); return 0;} Kernel模块 - 队列概念队列又称消息队列,是一种常用于任务间通信的数据结构,实现了接收来自任务或中断的不固定长度的消息,并根据不同的接口选择传递消息是否存放在自己空间。任务能够从队列里面读取消息,当队列中的消息是空时,挂起读取任务;当队列中有新消息时,挂起的读取任务被唤醒并处理新消息。Kernel模块 - 消息队列运作过程LiteOS的消息队列采用两个双向链表来维护,一个链表指向消息队列的头部,一个链表指向消息队列的尾部(stReadWriteList[QUEUE_HEAD_TAIL]),通过访问这两个链表就能直接访问对应的消息空间,并且通过消息队列控制块中的读写类型(usReadWriteableCnt[QUEUE_READ_WRITE])来操作消息队列。

Kernel模块 - 队列读写数据

队列运作原理:创建队列时,根据用户传入队列长度和消息节点大小来开辟相应的内存空间以供该队列使用,返回队列ID在队列控制块中维护一个消息头节点位置Head 和一个消息尾节点Tail 来表示当前队列中消息存储情况Head表示队列中被占用消息的起始位置。Tail 表示队列中被空闲消息的起始位置。刚创建时Head和Tail均指向队列起始位置写队列时,根据Tail 找到被占用消息节点末尾的空闲节点,作为数据写入对象如果Tail已经指向队尾则采用回卷方式,根据usWritableCnt判断队列是否可以写入,不能对已满(usWritableCnt为0)队列进行写队列操作读队列时,根据Head找到最先写入队列中的消息节点进行读取。如果Head已经指向队尾则采用回卷方式,根据usReadableCnt 判断队列是否有消息读取,对全部空闲(usReadableCnt为0)队列进行读队列操作会引起任务挂起。删除队列时,根据传入的队列ID寻找对应的队列,把队列状态置为未使用,释放原队列所占空间,对应的队列控制头置为初识状态。创建/删除消息队列LOS_QueueCreate创建一个消息队列,由系统动态申请队列空间LOS_QueueCreateStatic创建一个消息队列,由用户分配队列内存空间传入接口LOS_QueueDelete根据队列ID删除一个指定队列读/写队列(不带拷贝)LOS_QueueRead读取指定队列头节点中的数据(队列节点中的数据实际上是一个地址)LOS_QueueWrite向指定队列尾节点中写入入参bufferAddr的值(即buffer的地址)LOS_QueueWriteHead向指定队列头节点中写入入参bufferAddr的值(即buffer的地址)读/写队列(带拷贝)LOS_QueueReadCopy读取指定队列头节点中的数据LOS_QueueWriteCopy向指定队列尾节点中写入入参bufferAddr中保存的数据LOS_QueueWriteHeadCopy向指定队列头节点中写入入参bufferAddr中保存的数据获取队列信息LOS_QueueInfoGet获取指定队列的信息,包括队列ID、队列长度、消息节点大小、头节点、尾节点、可读节点数量、可写节点数量、等待读操作的任务、等待写操作的任务、等待mail操作的任务在以下Huawei LiteOS的接口中,用于创建消息队列的有哪几项?A LOS_QueueWriteHead ()B LOS_QueueCreate ()C LOS_QueueCreateStatic ()D LOS_QueueDelete ()答案: B C Kernel模块 - 时间管理时间管理以系统时钟为基础。时间管理提供给应用程序所有和时间有关的服务。系统时钟是由定时/计数器产生的输出脉冲触发中断而产生的,一般定义为整数或长整数。输出脉冲的周期叫做一个“时钟滴答”。系统时钟也称为时标或者Tick。一个Tick的时长可以静态配置。用户是以秒、毫秒为单位计时,而芯片CPU的计时是以Tick为单位的,当用户需要对系统操作时,例如任务挂起、延时等,输入秒为单位的数值,此时需要时间管理模块对二者进行转换。Tick与秒之间的对应关系可以配置。Huawei LiteOS的时间管理模块提供时间转换、统计、延迟功能以满足用户对时间相关需求的实现。Kernel模块 - 软件定时器软件定时器,是基于系统Tick时钟中断且由软件来模拟的定时器,当经过设定的Tick时钟计数值后会触发用户定义的回调函数。定时精度与系统Tick时钟的周期有关。硬件定时器受硬件的限制,数量上不足以满足用户的实际需求,因此为了满足用户需求,提供更多的定时器,Huawei LiteOS操作系统提供软件定时器功能。软件定时器扩展了定时器的数量,允许创建更多的定时业务。Kernel模块 - 软件定时器单次与周期模式

互联框架解决不同协议终端的互联互通

提供IP TCP/UDP COAP 完整协议栈,降低开发门槛,实现互联提供可灵活配置的应用Profile实现不同设备的互通优化Mesh自组网能力,满足海量终端组网

传感框架提供多传感器统一管理

安全框架提供端管云协同安全能力

LwM2M/CoAP系统方案Huawei LiteOS SDK端云互通组件针对“单模组、单MCU”和“外置MCU+模组”两种应用场景,提供了不同的软件架构。

LiteOS SDK 端云互通组件层次构成开放API层: LiteOS SDK端云互通组件的开放API为应用程序定义了通用接口,终端设备调用开放API能快速完成华为云物联网平台的接入、业务数据上报、下发命令处理等。对于外置MCU+模组的场景,LiteOS SDK端云互通组件还提供了AT 命令适配层,用于对AT命令做解析。协议层: LiteOS SDK端云互通组件集成了LwM2M/CoAP/DTLS/TLS/UDP等协议。驱动及网络适配层: LiteOS SDK端云互通组件为了方便终端设备进行集成和移植,提供了驱动及网络适配层,用户可以基于SDK提供的适配层接口列表,根据具体的硬件平台适配硬件随机数、内存管理、日志、数据存储以及网络Socket等接口。LiteOS基础内核 : 为用户终端设备提供RTOS特性。集成策略可集成性:LiteOS SDK端云互通组件作为独立的组件,不依赖特定的芯片架构和网络硬件类型,可以轻松地集成到各种通信模组上,如NB-IoT模组、eMTC模组、WIFI模组、GSM模组、以太网硬件等。可移植性:LiteOS SDK端云互通组件的Adapter层提供了常用的硬件及网络适配接口,终端或者模组厂家可以根据自己的硬件实现这些接口后,即可完成LiteOS SDK端云互通组件的移植。Huawei LiteOS Kernel的优势有哪些?答:高实时性,高稳定性,超小内核,基础内核体积可以剪裁至不到10KB低功耗,支持动态加载,分散加载,支持功能静态剪裁。分别简述互联框架、传感框架和安全框架的作用。互联框架解决不同协议终端的互联互通。传感器框架提供多传感器统一管理。安全框架保证LiteOS安全性能任务有哪几种状态?4中,就绪态 运行态 阻塞态 退出态Huawei LiteOS的作用是将“哑终端”变为物联网智能设备。A TRUEB FALSE答案: A 在Huawei LiteOS中,GPIO初始化的接口名为以下哪一项?A HAL_GPIO_InitB HAL_GPIO_WritePinC HAL_GPIO_ReadPinD OSAL_GPIO_Init答案: A Huawei LiteOS基础内核包含以下哪几项模块?A 互联框架B IPC通信C 传感框架D 内存管理答案: BD在以下Huawei LiteOS的接口中,用于创建消息队列的有哪几项?A LOS_QueueDelete ()B LOS_QueueCreateStatic ()C LOS_QueueCreate ()D LOS_QueueWriteHead ()答案: BC在下列Huawei LiteOS的接口中,用于向队列中写入数据的有哪几项?A LOS_QueueWriteHead ()B LOS_QueueWriteHeadCopy ()C LOS_QueueWriteCopy ()D LOS_QueueWrite ()答案:ABCD在以下Huawei LiteOS的接口中,用于打开和关闭所有中断的有哪几项?A LOS_HwiDelete()B LOS_IntRestore()C LOS_IntUnLock()D LOS_IntLock()答案:C D HalHwiCreate中断创建,注册中断号、中断触发模式、中断优先级、中断处理程序。中断被触发时,会调用该中断处理程序。HalHwiDelete根据指定的中断号,删除中断。LOS_IntUnLock 开中断,使能当前处理器所有中断响应。LOS_IntLock关中断,关闭当前处理器所有中断响应。LOS_IntRestore恢复到使用LOS_IntLock、LOS_IntUnLock操作之前的中断状态。常见传感器介绍运动类传感器传感器说明用途加速度传感器测量三个物理轴(x、y 和 z)上,施加在设备上的加速度(包括重力加速度)检测运动状态线性加速度传感器测量三个物理轴(x、y 和 z)上,施加在设备上的线性加速度(不包括重力加速度)检测每个单轴方向上的线性加速度重力传感器测量三个物理轴(x、y 和 z)上,施加在设备上的重力加速测量重力大小陀螺仪传感器 测量三个物理轴(x、y 和 z)上,设备的旋转速率测量旋转速率计步器传感器统计用户的行走步数用于提供用户行走的步数数据环境类传感器传感器说明用途环境温度传感器测量环境温度,单位 : 摄氏度测量环境温度磁场传感器测量三个物理轴向(x、y、z)上,环境地磁场创建指南针湿度传感器测量环境的相对湿度,以百分比 (%) 表示 监测露点、绝对湿度和相对湿度气压计传感器测量环境气压,单位 : hPa 或 mbar测量环境气压方向类传感器

光线类传感器

健康类传感器

其他类传感器

下列选项中,对Properties字段分析正确的是哪一项?“Properties”:[{“paraName”: "TemperatureCur""dataType":"int""required": true"min":0"max":100"step":1"maxLength" : null"method" : "R""unit" :"℃""enumlist": null}]分析:1. maxLength不能为null;2. paraName应该为"propertyName";3. unit 可以是"℃"4. 没有错误A 4 B 1 3 C 2,3D 1,2答案: C 以下哪几项属于运动类传感器?A 气压传感器B 加速度传感器C 重力传感器D 方向传感器答案: BC 智慧农业场景中可以使用到的传感器有以下哪几项?A 温度传感器B 环境光传感器 C 湿度传感器D 磁场传感器答案: A B C

HCIP_IOT

发布评论

评论列表(0)

  1. 暂无评论