个人推荐:
📢📢📢 前些天发现了一个蛮有意思的人工智能学习网站,8个字形容一下
"通俗易懂,风趣幽默"
,感觉非常有意思,忍不住分享一下给大家。
点击跳转到教程。
一.物联网操作系统
(一).操作系统发展史与概述
1.什么是操作系统?
操作系统 (Operating System,简称OS) 是 管理计算机硬件与软件资源的计算机程序。
操作系统需要处理如管理与配置 内存、决定系统资源供需的优先次序、控制 输入设备与 输出设备、操作网络与管理文件系统等基本事务。操作系统也提供一个让用户与系统交互的操作界面。
操作系统管理所有计算机硬件与软件资源:
2.操作系统演进历程:
互联网时代
- 移动互联网时代
- 物联网时代
人工操作方式
-批处理操作系统
-分时操作系统
-分布式操作系统/网络操作系统
人工操作方式:
(二).物联网操作系统概述
1.物联网终端开发面临的挑战
- 物联网终端种类众多,存在芯片和硬件的差异,开发者需要自行适配硬件口。
- 物联网终端所采用的通信技术与协议多,同时通信模块迭代快,开发者需要自行选型和适配对接。
- 多传感器协同管理复杂
- 视频场景下性能、功耗要求高
2.华为终端智能感知解决方案
华为提供完整、标准化物联网操作系统LiteOS,加速终端智能化进程。
华为物联网操作系统LiteOS框架架构:
LiteOS框架架构:1个内核加N个中间件
3.关于智能化终端的标准:
联接智能
,组网智能
,管理智能
华为物联网操作系统LiteOS在智能终端的运用:
- 华为P/Mate系列旗舰手机
- 华为手环
- 华为MobileCam
- 华为智能家居
- 华为智能水表
- 华为智能停车
华为P/Mate系列旗舰手机:
- Huawei LiteOS运行于麒麟系列芯片的协处理器上。
采用Huawei LiteOS智能传感框架,智能传感框架与感光模块协同优化,降低计步能耗,提升测量精确度
。
华为手环:
- 华为B3手环是首款基于Huawei LiteOS自研构建的智能终端设备。
采用Huawei LiteOS智能传感框架,解决多传感器高精度采样、数据同步等疑难问题。运动检测的准确性进一步加强,抬腕亮屏响应时间进一步减少。
- 超低功耗,支撑设备更长待机。
华为MobileCam:
- 通过Huawei LiteOS支持快速启动。
- 通过Huawei LiteOS低功耗特性,实现电池供电工作,适用于室外和身体佩戴使用场景。
- 通过Huawei LiteOS智能休眠、快速唤醒等特性,实现省电、事件快速响应。
- 4G无线连接及传输,支持运动DV场景视频直播。
二.感知层开发介绍
(一).端到端集成开发概述
关于什么是端到端的开发?
终端侧开发和应用服务器侧开发
- 终端侧开发:硬件PCB设计、终端业务程序开发以及网络接入调试。
- 应用服务器侧开发:Profile文件开发、编解码库开发以及调用IoT平台北向接口开发应用服务器。
(二).硬件开发:单片机和传感器介绍
1.单片机基础:
微型计算机工作概述:寄存器:
用来存放数据(里面由可以保存电荷状态的电路或设备组成如:锁存器),里面存放电荷,单片机的编程实际上就是在操作单片机里的寄存器,修改寄存器里的对应位电荷的状态。程序:
有序的指令集合(底层的指令就是机器指令【有序的电平】)。
关于什么是指令集:
计算机指令就是指挥机器工作的指示和命令,程序就是一系列按一定顺序排列的指令,执行程序的过程就是计算机的工作过程。
指令集,就是CPU中用来计算和控制计算机系统的一套指令的集合,而每一种新型的CPU在设计时就规定了一系列与其他硬件电路相配合的指令系统。而指令集的先进与否,也关系到CPU的性能发挥,它也是CPU性能体现的一个重要标志。每款CPU在设计时就规定了一系列与其硬件电路相配合的指令系统。指令的强弱也是CPU的重要指标,指令集是提高微处理器效率的最有效的工具之一。
ARM(指的ARM处理器如:Stm32F103C6单片机)常用指令:
下面的MOV指令(数据传送指令)
和LDR指令(寄存器到寄存器的传送指令)
一定要记牢!(其他的指令就是算数逻辑指令和位运算逻辑指令)
处理单元分类:
分为下面二类:
- 微 处 理 器 (Microprocessor, MPU)
- 微 控 制 器(Microcontroller, MCU)
关于什么是微 处 理 器 (Microprocessor, MPU)?
微处理器通常就是一块CPU (Central Processing Unit),通常被放在电脑、服务器或游戏设备等当中用来处理高功耗、高复杂度的任务。
其特点在于微处理器只能用来处理数据,所有必要的存储器和外设都必须分别外接。
如:酷睿i99980,i711800,i512600
关于什么是微 控 制 器(Microcontroller, MCU)?
微控制器又可被成为单片机,其中包含CPU,存储器和一系列输入输出设备。通常被设计为MP3播放器、照相机、远程控制设备等低功耗嵌入式应用。
如:CC2530,ZiBee单片机,STM32F103C6
微控制器架构:
下图应该是单总线结构,意思就是CPU,存储器,外部设备使用一根总线(地址总线,控制总线,数据总线)
:
对于这个部分知识可以看看我写的这篇(最好把计算机组成原理学习一下)计算机组成原理学习-哈工大《计算机组成原理》第三章
关于什么是数字和模拟:
🔴计算机的世界由二进制数0、1构成,我们所能看到的所有与计算机相关的事物都可用二进制数来进行描述。然而我们的人类世界是一个“模拟”的世界,计算机所使用的数字信号虽然非常方便,但它在我们现实生活中无处可寻。
🔴例如亮度、温度、距离等这些属性在自然界当中都以模拟的形式存在,对于计算机来讲,最重要的事情莫过于如何使用数字信号来表示自然界当中的模拟数值。
关于什么是ADC/DAC
ADC(模数转换器,Analog to Digital Converter)来进行模拟信号和数字信号之间的转换。
DAC(数模转换器,Digital to Analog Converter)来进行数字信号和模拟信号之间的转换。
传感器介绍:
关于什么是传感器技术?
传感技术就是传感器技术,可以感知周围环境或者特殊物质
,比如气体感知、光线感知、温湿度感知、人体感知等等,把模拟信号转化成数字信号,给中央处理器处理。最终结果形成气体浓度参数、光线强度参数、范围内是否有人探测、温度湿度数据等等。
传感器及其分类:
(三).软件开发:Huawei LiteOS基础架构介绍
关于什么是Huawei LiteOS?
Huawei LiteOS是华为面向IoT领域,构建的轻量级物联网操作系统,遵循BSD-3开源许可协议,可广泛应用于智能家居、个人穿戴、车联网、城市公共服务、制造业等领域。
1.Huawei LiteOS Kernel
Huawei LiteOS Kernel是操作系统内核,其中基础内核是最精简的Huawei LiteOS 操作系统
,它包括任务管理
、内存管理
、时间管理
、通信机制
、中断管理
、队列管理
、事件管理
、定时器
等操作系统基础组件,可以单独运行,同时为了更好地支持低功耗场景,支持Tickless机制。
关于什么是内核?
百度百科内核:
内核是操作系统最基本的部分。它是为众多应用程序提供对计算机硬件的安全访问的一部分软件,这种访问是有限的,并且内核决定一个程序在什么时候对某部分硬件操作多长时间。
内核的分类可分为单内核和双内核以及微内核。严格地说,内核并不是计算机系统中必要的组成部分。
关于什么是Tickless 机制?
Tickless 机制是Linux 内核中引入的新定时机制,这一机制能够降低系统开销,并为高精度定时提供了实现基础。
本文将对这一机制的原理进行分析,归纳出基本模型,最后提出一种全新的具有一定普遍适用性的tickless实现方法。测试结果表明,这一新方法能够降低嵌入式系统能耗并提高操作系统定时精度。
内容来源:linux 定时机制 Tickless
Huawei LiteOS 内核特点(记住下面的第二条特点!)
- 低功耗,高实时性,高稳定性。
超小内核,基础内核体积可以裁剪至不到10KB。
- 支持动态加载、分散加载。
- 支持功能静态裁剪
内核模块-任务(下面红色部分一定要记住!):
任务是竞争系统资源的 最小运行单元。
任务可以使用或等待CPU、使用内存空间等系统资源,并独立于其它任务运行。- Huawei LiteOS的任务模块提供任务的创建、删除、延迟、挂起、恢复等功能,以及锁定和解锁任务调度。
任务的调度机制是 基于优先级抢占式的调度机制,同时支持同优先级的任务基于 时间片轮转调度方式。
Huawei LiteOS的任务一共有32个优先级(0-31),最高优先级为0,最低优先级为31;
高优先级的任务可打断低优先级任务,低优先级任务必须在高优先级任务阻塞或结束后才能得到调度。
任务编程实例:
接口的具体作用可以通过英文名进行理解如LOS_TaskCreate就可以翻译为LOS的任务创建。
内核模块 - 内存管理
内存管理模块管理系统的内存资源,主要负责内存的初始化、分配及释放,并且还提供内存统计、内存越界检测功能。
Huawei LiteOS的内存管理提供 静态内存和 动态内存两类算法,静态分配为membox,动态内存分配有:bestfit,bestfit_little和tlsf。
注意:在计算机中RAM断电后数据丢失,ROM断电后数据不丢失。
内核模块 - 内存管理(动态内存)
内核模块 - 内存管理(静态内存)
编程实例:
内核模块 - 中断
关于什么是中断?
中断是怎么执行的?
中断产生时, 处理机将按如下的顺序执行:
- 保存当前处理机状态信息
- 载入异常或中断处理函数到PC寄存器
- 把控制权转交给处理函数并开始执行
- 当处理函数执行完成时, 恢复处理器状态信息
- 从异常或中断中返回到前一个程序执行点
任务间通信
Huawei LiteOS的多任务同步、 互斥及通信主要包括:队列
,事件
,信号量
,互斥锁
关于什么是队列?
队列又称消息队列,是一种常用于任务间通信的数据结构,实现了接收来自任务或中断
的不固定长度的消息,并根据不同的接口选择传递消息是否存放在自己空间。
用户在处理业务时,消息队列提供了异步处理机制
,允许将一个消息放入队列,但并不立即处理它,同时队列还能起到缓冲消息作用。适合用来在任务间传递数据使用。 Huawei LiteOS的消息队列支持队列的创建、删除、发送和接收功能
。
关于什么是事件?
事件是一种实现任务间通信的机制,可用于实现任务间的同步,但事件通信只能是事件
类型的通信,无数据传输。
事件不与任务相关联,事件相互独立
,一个32位的变量,用于标识该任务发生的事件类
型,其中每一位表示一种事件类型
(0表示该事件类型未发生、1表示该事件类型已经发 生),一共31种事件类型(第25位保留)。
一个任务可以等待多个事件的发生:
- 可以是任意一个事件发生时唤醒任务进行事件处理。
- 也可以是几个事件都发生后才唤醒任务进行事件处理。
- 多次向任务发送同一事件类型,等效于只发送一次。
关于什么是信号量?
信号量 (Semaphore) 是一种实现任务间通信的机制,实现任务之间同步或临界资源的互
斥访问。常用于协助一组相互竞争的任务来访问临界资源。
信号量允许多个任务在同一时刻访问同一资源,但会限制同一时刻访问此资源的最大任
务数目。访问同一资源的任务数达到该资源的最大数量时,会阻塞其他试图获取该资源
的任务,直到有任务释放该信号量。
关于什么是互斥锁?
互斥锁又称互斥型信号量,是一种特殊的二值性信号量,用于实现对共享资源的独占式
处理。
任意时刻互斥锁的状态只有两种,开锁或闭锁
。
- 当有任务持有时,互斥锁处于闭锁状态,这个任务获得该互斥锁的所有权。
- 当该任务释放它时,该互斥锁被开锁,任务失去该互斥锁的所有权。当一个任务持有互斥锁时, 其他任务将不能再对该互斥锁进行开锁或持有。
内核模块 - 时间管理
时间管理以系统时钟为基础。 时间管理提供给应用程序所有和时间有关的服务。
关于什么是系统时钟?
系统时钟是由定时/计数器产生的输出脉冲触发中断而产生的,一般定义为整数或长整数。输出脉冲的周期叫做一个“时钟滴答”。系统时钟也称为时标或者Tick。一个Tick 的时长可以静态配置,用户是以秒、毫秒为单位计时,而芯片 CPU 的计时是以 Tick 为单位的
,当用户需要对系统操作时,例如任务挂起、延时等,输入秒为单位的数值,此时需要时间管理模块对二者进行转换。
内核模块 - 定时器
内核模块 - 软件定时器单次与周期模式
2.Huawei LiteOS 框架
Huawei LiteOS SDK介绍
LiteOS SDK是Huawei LiteOS软件开发工具包 (Software Development Kit),其包括端
云互通组件,FOTA升级,JS引擎、传感器框架等内容。
端云互通组件
- LiteOS SDK端云互通组件作为
独立的组件
,不依赖特定的芯片架构和网络硬件类型,可
以轻松地集成到各种通信模组上
,如NB-IoT模组、eMTC模组、Wi-Fi模组、GSM模组、
以太网硬件等。
- 端云互通组件
提供端云协同能力
,集成了LwM2M, CoAP, mbed TLS, LwIP
等全套 IoT
互联互通协议栈
。
端云互通组件软件架构
互联框架
传感框架
- 传感框架提供多传感器统一管理。
安全框架
JS运行引擎 - MapleJS
- 使能IoT高级动态语言,让开发者聚焦应用开发
3.Huawei LiteOS API
- 开放的API屏蔽底层差异,让
应用开发者只需关注上层应用开发
。 - 友好的兼容性使得已熟悉在 Linux 系统上开发应用的开发者,能够非常平滑的切换到Huawei LiteOS 系统上开发,同时由于Huawei LiteOS 系统的精简内核特性,
使得开发者更容易理解内核
。 - 例如基于端云互通组件提供的API,
开发者通过简单几个步骤就能快速地实现与华为云物 联网平台安全可靠连接。
三.通信模组AT指令介绍
(一).通信模组AT指令介绍
1.AT命令
AT命令是用来控制TE
(Terminal Equipment,终端设备)和MT
(Mobile Terminal,移
动终端)之间交互的规则
。
AT命令分类
AT命令中的4种命令:
- 设置命令
=XX
用来设置
AT命令中的属性 - 测试命令
=?
用来显示
AT命令设置的合法参数值有哪些 - 查询命令
?
用来查询
当前AT命令设置的属性值 - 执行命令
执行AT命令(不需要参数,例如查询版本号等)
NB-IoT AT指令集
MCU通过AT命令对通信模组进行控制。终端厂商除了实现相应业务功能的开发, 同时需要开发相关程序调用AT命令对通信模组进行控制。
Wi-Fi AT指令集
Wi-Fi作为非3GPP标准的短距无线通信技术,其AT指令相较NB-IoT有所不同。其指令更多是与网关进行交互,通过网关作为统一出口访问网络。故其不涉及SIM卡、无线及核心网等运营商相关数据。
华为认证模组AT指令
经过兼容性认证的模组,在AT命令以及格式规范上,基本和华为通用要求一致,部分模组厂家受限于自己的AT通道,实现稍有不同,可以参考模组厂家的特殊说明。
(二).通信模组端侧开发流程
NB-IoT终端对接流程
Wi-Fi终端对接流程