腾讯自研轻量级物联网操作系统正式开源,最小体积仅1.8 KB

物联网0146

腾讯自研轻量级物联网操作系统正式开源,最小体积仅1.8 KB,第1张

TencentOS tiny 提供业界最精简的RTOS内核,最少资源占用为RAM 06 KB,ROM 18 KB。对于复杂的任务管理、实时调度、时间管理、中断管理、内存管理、异常处理等功能,TencentOS tiny都可支持。

腾讯 科技 讯 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已支持意法半导体、恩智浦、华大半导体、瑞兴恒方、国民技术等主流厂商多种芯片和模组。

简介:  没有设备,也能立刻体验物联网平台的功能:使用物联网平台提供的“在线调试”功能,体验虚拟设备上云&设备数据存储分析的功能。

产品推荐:阿里云物联网开发者工具( IoT Studio ), 立刻免费体验吧!

你可能遇到以下情况:

1、手头没有开发板

2、还不懂“物联网云服务”怎么玩,想体验一下

3、设备端开发跟物联网云服务没跑通,不确定哪个环节出现问题

这时,你就需要用到“在线调试”功能来虚拟一个设备,详细步骤如下:

1、登陆物联网平台控制台 , 现在登入

2、左侧导航栏中,找到在线调试功能

3、开始设备上云开发,这个环节分为3个步骤:创建产品→创建设备→激活设备(使用在线调试)

31 创建产品

下方的都是默认选项,不用改动,点击完成,成功创建1个产品

32 产品和设备是包含与被包含的关系,我们创建成功产品后,即可在这个产品下添加设备

设备添加成功后,即弹出设备的三元组(设备证书),这个三元组是全网唯一的设备身份校验要素

ProductKey:是物联网平台为产品颁发的全局唯一标识。该参数很重要,在设备认证以及通信中都会用到,因此需要您保管好。

DeviceName:在注册设备时,自定义的或自动生成的设备名称,具备产品维度内的唯一性。该参数很重要,在设备认证以及通信中都会用到,因此需要您保管好。

DeviceSecret:物联网平台为设备颁发的设备密钥,和DeviceName成对出现。该参数很重要,在设备认证时会用到,因此需要您保管好并且不能泄露。

考虑设备实际生产时对安全和成本的不同需求,我们可以选择“一机一密”,或者“一型一密”。

一机一密:每个设备烧录其唯一的设备证书(ProductKey、DeviceName和DeviceSecret)。当设备与物联网平台建立连接时,物联网平台对其携带的设备证书信息进行认证。

一型一密:同一产品下所有设备可以烧录相同产品证书(即ProductKey和ProductSecret)。设备发送激活请求时,物联网平台进行产品身份确认,认证通过,下发该设备对应的DeviceSecret。

33 激活设备

我们发生几个开灯关灯的指令,就可以看到设备上报的数据:

4、使用物联网平台的“数据分析”功能存储数据

点击确定后,设备数据即成功存储

再点击“查看”,即可看到数据的存储

查看表结构

查看表数据

查询表数据

了解更多数据分析能力:

1、阿里云物联网平台数据分析服务主页

2、技术文档

本实验采用W25Q64芯片

W25Q64是华邦公司推出的大容量SPI

FLASH产品,其容量为64Mb。该25Q系列的器件在灵活性和性能方面远远超过普通的串行闪存器件。W25Q64将8M字节的容量分为128个块,每个块大小为64K字节,每个块又分为16个扇区,每个扇区4K个字节。W25Q64的最小擦除单位为一个扇区,也就是每次必须擦除4K个字节。所以,这需要给W25Q64开辟一个至少4K的缓存区,这样必须要求芯片有4K以上的SRAM才能有很好的操作。

W25Q64的擦写周期多达10W次,可将数据保存达20年之久,支持27~36V的电压,支持标准的SPI,还支持双输出/四输出的SPI,最大SPI时钟可达80Mhz。

一。SPI接口原理

(一)概述

高速,全双工,同步的通信总线。

全双工:可以同时发送和接收,需要2条引脚

同步: 需要时钟引脚

片选引脚:方便一个SPI接口上可以挂多个设备。

总共四根引脚。

(二)SPI内部结构简明图

MISO: 做主机的时候输入,做从机的时候输出

MOSI:做主机的时候输出,做从机的时候输入

主机和从机都有一个移位寄存器,在同一个时钟的控制下主机的最高位移到从机的最高位,同时从机的最高位往前移一位,移到主机的最低位。在一个时钟的控制下主机和从机进行了一个位的交换,那么在8个时钟的控制下就交换了8位,最后的结果就是两个移位寄存器的数据完全交换。

在8个时钟的控制下,主机和从机的两个字节进行了交换,也就是说主机给从机发送一个字节8个位的同时,从机也给主机传回来了8个位,也就是一个字节。

(三)SPI接口框图

上面左边部分就是在时钟控制下怎么传输数据,右边是控制单元,还包括左下的波特率发生器。

(四)SPI工作原理总结

(五)SPI的特征

(六)从选择(NSS)脚管理

两个SPI通信首先有2个数据线,一个时钟线,还有一个片选线,只有把片选拉低,SPI芯片才工作,片选引脚可以是SPI规定的片选引脚,还可以通过软件的方式选择任意一个IO口作为片选引脚,这样做的好处是:比如一个SPI接口上挂多个设备,比如挂了4个设备,第二个用PA2,第三个用PA3,第四个用PA4作为片选,我们

跟第二个设备进行通信的时候,只需要把第二个片选选中,比如拉低,其他设备的片选都拉高,这样就实现了一个SPI接口可以连接个SPI设备,战舰开发板上就是通过这种方法来实现的。

(七)时钟信号的相位和极性

时钟信号的相位和极性是通过CR寄存器的 CPOL 和 CPHA两个位确定的。

CPOL:时钟极性,设置在没有数据传输时时钟的空闲状态电平。CPOL置0,SCK引脚在空闲时为低电平,CPOL置1,SCK引脚在空闲时保持高电平。

CPHA:时钟相位 设置时钟信号在第几个边沿数据被采集

CPHA=1时:在时钟信号的第二个边沿

CPOL=1,CPHA=1,

CPOL=1表示时钟信号在没有数据传输时即空闲时的状态为高电平。如果CPHA=1,那么数据就在时钟信号的第二个边沿即上升沿的时候被采集。

CPOL= 0,CPHA=1, CPOL=0表示时钟信号在没有数据传输时即空闲时的状态为低电平。

如果CPHA=1,那么数据就在时钟信号的第二个边沿即下降沿的时候被采集。

CPHA=0时:在时钟信号的第一个边沿

CPOL=1,CPHA=0,

CPOL=1表示时钟信号在没有数据传输时即空闲时的状态为高电平。如果CPHA=1,那么数据就在时钟信号的第一个边沿即下降沿的时候被采集。

CPOL= 0,CPHA=0, CPOL=0表示时钟信号在没有数据传输时即空闲时的状态为低电平。

如果CPHA=1,那么数据就在时钟信号的第一个边沿即上升沿的时候被采集。

为什么要配置这两个参数

因为SPI外设的从机的时钟相位和极性都是有严格要求的。所以我们要根据选择的外设的时钟相位和极性来配置主机的相位和极性。必须要与从机匹配。

(八)数据帧的格式和状态标志

数据帧格式:根据CR1寄存器的LSBFIRST位的设置,数据可以MSB在前也可以LSB在前。

根据CR1寄存器的DEF位,每个数据帧可以是8位或16位。

(九)SPI中断

(十)SPI引脚配置 (3个SPI)

引脚的工作模式设置

引脚必须要按照这个表格配置。

二。SPI寄存器库函数配置

(一)常用寄存器

(二)SPI相关库函数

STM32的SPI接口可以配置为支持SPI协议或者支持I2S音频协议。默认是SPI模式,可以通过软件切换到I2S方式。

常用的函数:

1 void SPI_Init(SPI_TypeDef SPIx, SPI_InitTypeDef

SPI_InitStruct);//SPI的初始化

2 void SPI_Cmd(SPI_TypeDef SPIx, FunctionalState NewState); //SPI使能

3 void SPI_I2S_ITConfig(SPI_TypeDef SPIx, uint8_t SPI_I2S_IT,

FunctionalState NewState); //开启中断

4 void SPI_I2S_DMACmd(SPI_TypeDef SPIx, uint16_t SPI_I2S_DMAReq,

FunctionalState NewState);//通 过DMA传输数据

5 void SPI_I2S_SendData(SPI_TypeDef SPIx, uint16_t Data); //发送数据

6 uint16_t SPI_I2S_ReceiveData(SPI_TypeDef SPIx); //接收数据

7 void SPI_DataSizeConfig(SPI_TypeDef SPIx, uint16_t SPI_DataSize);

//设置数据是8位还是16位

8 其他几个状态函数

void SPI_Init(SPI_TypeDef SPIx, SPI_InitTypeDef

SPI_InitStruct);//SPI的初始化

结构体成员变量比较多,这里我们挑取几个重要的成员变量讲解一下:

第一个参数 SPI_Direction 是用来设置 SPI 的通信方式,可以选择为半双工,全双工,以及串行发和串行收方式,这里我们选择全双工模式

SPI_Direction_2Lines_FullDuplex。

第二个参数 SPI_Mode 用来设置 SPI 的主从模式,这里我们设置为主机模式 SPI_Mode_Master,当然有需要你也可以选择为从机模式

SPI_Mode_Slave。

第三个参数 SPI_DataSiz 为 8 位还是 16 位帧格式选择项,这里我们是 8 位传输,选择SPI_DataSize_8b。

第四个参数 SPI_CPOL 用来设置时钟极性,我们设置串行同步时钟的空闲状态为高电平所以我们选择 SPI_CPOL_High。

第五个参数 SPI_CPHA

用来设置时钟相位,也就是选择在串行同步时钟的第几个跳变沿(上升或下降)数据被采样,可以为第一个或者第二个条边沿采集,这里我们选择第二个跳变沿,所以选择

SPI_CPHA_2Edge

第六个参数 SPI_NSS 设置 NSS 信号由硬件(NSS 管脚)还是软件控制,这里我们通过软件控

制 NSS 关键,而不是硬件自动控制,所以选择 SPI_NSS_Soft。

第七个参数 SPI_BaudRatePrescaler 很关键,就是设置 SPI 波特率预分频值也就是决定 SPI 的时

钟的参数 , 从不分频道 256 分频 8 个可选值,初始化的时候我们选择 256 分频值

SPI_BaudRatePrescaler_256, 传输速度为 36M/256=140625KHz。

第八个参数 SPI_FirstBit 设置数据传输顺序是 MSB 位在前还是 LSB 位在前, ,这里我们选择

SPI_FirstBit_MSB 高位在前。

第九个参数 SPI_CRCPolynomial 是用来设置 CRC 校验多项式,提高通信可靠性,大于 1 即可。

设置好上面 9 个参数,我们就可以初始化 SPI 外设了。

初始化的范例格式为:

SPI_InitTypeDef SPI_InitStructure;

SPI_InitStructureSPI_Direction = SPI_Direction_2Lines_FullDuplex;

//双线双向全双工

SPI_InitStructureSPI_Mode = SPI_Mode_Master; //主 SPI

SPI_InitStructureSPI_DataSize = SPI_DataSize_8b; // SPI 发送接收 8 位帧结构

SPI_InitStructureSPI_CPOL = SPI_CPOL_High;//串行同步时钟的空闲状态为高电平

371

SPI_InitStructureSPI_CPHA = SPI_CPHA_2Edge;//第二个跳变沿数据被采样

SPI_InitStructureSPI_NSS = SPI_NSS_Soft; //NSS 信号由软件控制

SPI_InitStructureSPI_BaudRatePrescaler = SPI_BaudRatePrescaler_256; //预分频

256

SPI_InitStructureSPI_FirstBit = SPI_FirstBit_MSB; //数据传输从 MSB 位开始

SPI_InitStructureSPI_CRCPolynomial = 7; //CRC 值计算的多项式

SPI_Init(SPI2, &SPI_InitStructure); //根据指定的参数初始化外设 SPIx 寄存器

(三)程序配置步骤

三。W25Qxx配置讲解

(一)电路图

片选用的PB12

W25Q64 是华邦公司推出的大容量SPI FLASH 产品,W25Q64 的容量为 64Mb,该系列还有 W25Q80/16/32

等。ALIENTEK 所选择的 W25Q64 容量为 64Mb,也就是 8M 字节。(1M=1024K)

W25Q64 将 8M 的容量分为 128 个块(Block),每个块大小为 64K 字节,每个块又分为 16个扇区(Sector),每个扇区 4K

个字节。W25Q64 的最少擦除单位为一个扇区,也就是每次必须擦除 4K 个字节。这样我们需要给 W25Q64 开辟一个至少 4K 的缓存区,这样对 SRAM

要求比较高,要求芯片必须有 4K 以上 SRAM 才能很好的操作。

W25Q64 的擦写周期多达 10W 次,具有 20 年的数据保存期限,支持电压为 27~36V,W25Q64 支持标准的

SPI,还支持双输出/四输出的 SPI,最大 SPI 时钟可以到 80Mhz(双输出时相当于 160Mhz,四输出时相当于 320M),更多的 W25Q64

的介绍,请参考 W25Q64 的DATASHEET。

在往一个地址写数据之前,要先把这个扇区的数据全部读出来保存在缓存里,然后再把这个扇区擦除,然后在缓存中修改要写的数据,然后再把整个缓存中的数据再重新写入刚才擦除的扇区中。

便于学习和参考再给大家分享些spi 的资料

stm32之SPI通信

>

本次实践是为尝试在嵌有华为海思芯片的 Hi3861 WIFI物联网开发板上配置开发环境并使用配套开发工具( HUAWEI DevEco Device Tool 或 HUAWEI LiteOS Studio )将Demo工程编译烧录和运行。

参照华为海思编撰的 《物联网技术和应用》 进行搭建。

1确认开发环境已经正确安装后,启动 Huawei LiteOS Studio

2新建工程, SDK版本 选择 HiHope WiFi_IoT Hi3861SPC025 ;

SDK目录 在HiSpark_Pegasus_TechnologyApplication_IoT_Kit下的 HiHope_WiFi-IoT_Hi3861SPC025 ;

参考目录 选择在HiSpark_Pegasus_TechnologyApplication_IoT_Kit下的 HiHope_Pegasus_HelloWorld 。

目标板Hi3861V100。

3按F4进入工程配置, 目标板配置 中:厂商 HiSilicon ,选中目标板 Hi3861V00 ,确认。

4 编译器配置 中:SConstruct脚本,点击文件夹右侧的放大镜自动搜索SConstruct脚本位置,正常搜索完点确认。

5 烧录器配置 中:烧录方式选择 HiBurner ,确认。

6 串口配置 中:成功连接Hi3861板后,端口选择唯一一个COM端口;波特率选择 921600 ,确认。

7F7 编译 ,成功时终端输出紫色 BUILD SUCCESS 字样。

8F8 烧录 ,出现HiBurn程序窗口时,按一次Hi3861板上的Ret按键,烧录开始。成功时如图:

9烧录完成,重新拔插数据线,HelloWorld程序运行正常,OLED屏上显示Hello World字样,Hi3861板上LED灯闪烁。

随着快速无线网络的迅猛发展,万物互联可能逐渐变成了现实,帮助催生出了一个全新的“物联网”产业

高新兴,就是这个产业当中的一家企业,业务集中于“车联网”与“警务执法”。因为经营中面临客户订单数量波动,还因为面临不计其数同业企业的先进产品竞争,它的经营规模与利润,都出现了明显下降;事实上,它的利润表现,其实一直在连年亏损

行业价值

比如地震监测、比如水位监测,……在这类场景,经常需要反复采集数据,准确记录数据,对数据集中加工分析。

如果采用人力来完成,第一费时费力、采集到的数据除了数量稀少之外准确性也经常得不到保证,第二在更多的需要监测的场所,因为自然条件过于恶劣,而根本无法派人前往。

因为在生产领域存在大量这样的需求,还因为作为新兴产业得到政府部门、政策支持,所以能够帮助相关行业实现这类需求的物联网基础设施,就演变成了一个规模日渐庞大起来的行业。

在物联网发展过程中,它所提供出的远距离控制能力,还逐步应用到了更广泛的自动化设施上面,帮助节省了大量人力的同时,也同时能够提升不同场景下数据监测的准确性和效率。

市场形势

与千禧年初中国互联网市场的表现并没有多少不同,物联网当前也正处在这样一个“群雄并起”、让人根本看不清哪一家将更长久发展存在的阶段之中。

如果说行业企业应用,与我们一般用户尚存在一定距离,从而难让我们感知到行业的最新进展的话;那么,几乎直接面向消费领域的各类智能开关,应该说就能让我们一般用户一窥行业成长的端倪

作为末端消费者,我们如今在消费产品的应用当中,经常已经看到各类物联网云平台的宏大气魄。作为研究人员,我们还能看到面向拥有各类消费产品线的企业所提供的为数众多的物联网开发板。但这些物联网公司,能否最终发展壮大、被海量用户最终认可保留下来,最终成长为新产业中的“巨头”,也的确还是个未知数。

展望

就像整车产业的发展,对汽车零部件产业所产生的巨大拉动那样;

毫不怀疑,物联网应用产业的进步,也将会培育出一大批关键配件(从传感器,到5G通信模块,再到物联云)厂商。

并且,我们也能够预料,在各类物联云平台当中,在对行业而言成熟的盈利模式建立起来之后,必将会涌现出不亚于任何一家互联网公司的规模浩大用户众多的大型企业

且让我辈拭目以待。

swing模式。

在swing模式下,电位器可以调节舵机摆动的频率。舵机控制模块中预设了2种不同的控制机制,可以通过开关进行切换,在非编程模式下自由玩转各种进阶功能。

Mind+,全名Mindplus,诞生于2013年,是一款拥有自主知识产权的国产青少年编程软件,集成各种主流主控板及上百种开源硬件,支持人工智能AI与物联网IoT功能,既可以拖动图形化积木编程,可以使用Python/C/C++等高级编程语言。

以上就是关于腾讯自研轻量级物联网操作系统正式开源,最小体积仅1.8 KB全部的内容,包括:腾讯自研轻量级物联网操作系统正式开源,最小体积仅1.8 KB、AIoT入门:用虚拟设备体验物联网平台设备上云&设备数据存储、嵌入式物联网之SPI接口原理与配置等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!