
物联网
丿starRiver
这个作者很懒,什么都没留下…
展开
-
物联网开发——TencentOS Tiny 简介
TencentOS tiny是腾讯面向物联网领域开发的实时操作系统,具有低功耗,低资源占用,模块化,安全可靠等特点,可有效提升物联网终端产品开发效率。TencentOS tiny 提供精简的 RTOS 内核,内核组件可裁剪可配置,可快速移植到多种主流 MCU (如STM32全系列)及模组芯片上。而且,基于RTOS内核提供了丰富的物联网组件,内部集成主流物联网协议栈(如 CoAP/MQTT/T...原创 2019-09-19 20:58:39 · 6029 阅读 · 0 评论 -
likely()与unlikely()
在linux中判断语句经常会看到likely和unlikely,例如: if(likely(value)){ } else{ } 简单从表面上看if(likely(value)) == if(value),if(unlikely(value)) == if(value)。也就是likely和unlikely是一样的,但是实际上执行是不同的,加l...转载 2019-09-30 22:33:09 · 1405 阅读 · 0 评论 -
TencentOS tiny学习源码分析(1)——task
任务的基本概念从系统的角度看,任务是竞争系统资源的最小运行单元。TencentOS tiny是一个支持多任务的操作系统,任务可以使用或等待CPU、使用内存空间等系统资源,并独立于其它任务运行,理论上任何数量的任务都可以共享同一个优先级,这样子处于就绪态的多个相同优先级任务将会以时间片切换的方式共享处理器。不过要注意的是:在TencentOS tiny中,不能创建与空闲任务相同优先级的任务...转载 2019-09-28 11:49:06 · 947 阅读 · 0 评论 -
stm32cube 生成项目时出现the code is successfully generated under
stm32cube 生成项目时出现thecodeissuccessfullygeneratedunder(目录)/../.../but makefileproject generated failed.解决方案:目录中不要带空格和中文。原创 2019-09-26 22:13:01 · 10936 阅读 · 2 评论 -
TencentOS tiny 代码目录说明
一级目录 二级目录 三级目录 说明 arch arm TencentOS tiny适配的IP核架构(含M核中断、调度、tick相关代码) board TencentOS_tiny_EVB_MX TencentOS tiny 定制开发板demo,包含AT适配框架、MQTT协议、安全组件等 component con...原创 2019-09-23 22:38:29 · 3508 阅读 · 0 评论 -
物联网开发——TencentOS Tiny 功耗管理
低功耗概述TencentOS tiny提供了多级低功耗管理框架。初级低功耗的方案是,当系统处于“空闲”状态,也即进入idle任务时,系统调用处理器(目前支持的架构是arm v7m)低功耗接口进入短暂的睡眠模式。API讲解编程实例对于初级低功耗模式,无需用户编写任何代码,直接通过在tos_config.h打开TOS_CFG_PMR_MGR_EN开关即可:#define TOS...原创 2019-09-23 22:33:10 · 1303 阅读 · 0 评论 -
物联网开发——TencentOS Tiny 内核基础组件(字符流先入先出队列)
概述字符流先入先出队列,提供的是一个面向字符操作的环形队列实现,提供了基本的字符流入队出队操作。API讲解编程实例1、编写main.c示例代码:#include "tos.h"#include "mcu_init.h"#define STK_SIZE_TASK_DEMO 512 #define PRIO_TASK_DEMO 4 k_s...原创 2019-09-22 22:30:40 · 815 阅读 · 0 评论 -
物联网开发——TencentOS Tiny 内核基础组件(消息队列)
消息队列概述消息队列提供了一种同步的传递/收取消息的机制,与队列(tos_queue)不同的是,tos_queue基于消息队列封装了一层异步的机制,实际上tos_queue的底层消息管理采用的就是消息队列。API讲解编程实例1、在tos_config.h中,配置消息队列组件开关TOS_CFG_MSG_EN:#define TOS_CFG_MSG_EN 1u2、在tos_...原创 2019-09-22 22:29:59 · 876 阅读 · 0 评论 -
物联网开发——TencentOS Tiny 软件定时器
概述软件定时器提供了一套从软件层次实现的定时器机制,相对应的概念是硬件定时器。用户可以创建一系列的软件定时器,并指定软件定时器到期的条件以及执行回调,当软件定时器到期时会执行注册的回调。通常来说,用户注册的软件定时器回调中很可能包含延迟动作或同步等待操作,或者回调函数本身逻辑复杂执行耗时较长,因此系统将软件定时器管理逻辑设计成一个任务,在这个任务中扫描定时器是否过期并执行定时器回调。但是如...原创 2019-09-22 22:03:20 · 1061 阅读 · 0 评论 -
物联网开发——TencentOS Tiny 时间管理
概述时间管理,提供了一族与时间相关的函数,可以获取/设置系统时钟滴答数(systick)、systick与毫秒单位之间互相转化、按毫秒、墙上时钟等单位进行任务睡眠的功能。API讲解编程实例1、配置每秒钟的系统滴答数TOS_CFG_CPU_TICK_PER_SECOND:#define TOS_CFG_CPU_TICK_PER_SECOND 1000u2、编写main.c示例...原创 2019-09-22 21:51:12 · 866 阅读 · 0 评论 -
物联网开发——TencentOS Tiny 内存管理
2.4.1 动态内存概述动态内存管理模块,提供了一套动态管理系统内存的机制,支持用户动态的申请、释放不定长内存块。API讲解编程实例1、在tos_config.h中,配置动态内存组件开关TOS_CFG_MMHEAP_EN:#define TOS_CFG_MMHEAP_EN 1u2、在tos_config.h中,配置动态内存池大小:#define TOS_CFG...原创 2019-09-22 17:08:48 · 945 阅读 · 0 评论 -
物联网开发——TencentOS Tiny 任务间通信(队列)
队列概述队列提供了一种任务间实现同步和数据传递的机制。事件只能用于任务间传递某类“事件”是否发生的信号,无法传递更为复杂的数据,队列弥补了事件的这一不足,可以在任务间传递不定长度的消息。API讲解编程实例1、在tos_config.h中,配置队列组件开关TOS_CFG_QUEUE_EN:#define TOS_CFG_QUEUE_EN 1u2、在tos_config....原创 2019-09-22 14:22:22 · 864 阅读 · 0 评论 -
物联网开发——TencentOS Tiny 任务间通信( 事件)
事件概述事件提供了一种任务间实现同步和信息传递的机制。一般来说,一个事件中包含了一个旗标,这个旗标的每一位表示一个“事件”。一个任务可以等待一个或者多个“事件”的发生,其他任务在一定的业务条件下可以通过写入特定“事件”唤醒等待此“事件”的任务,实现一种类似信号的编程范式。API讲解编程实例1、在tos_config.h中,配置事件组件开关TOS_CFG_EVENT_EN:...原创 2019-09-22 14:15:22 · 819 阅读 · 0 评论 -
物联网开发——TencentOS Tiny 任务间通信( 信号量)
信号量概述信号量是一种实现任务间同步的机制,一般用于多个任务间有限资源竞争访问。通常来说,一个信号量中持有一个整形数值,用以表示可用资源的数量。当一个信号量的可用资源数量大于0时,任务尝试获取该信号量成功,信号量的可用资源数减一;当一个信号量的可用资源数等于0时,任务尝试获取该信号量失败或进入阻塞状态。信号量的这一模式,当可用资源数为1时,可将其用于资源的互斥访问;或者解决生产者-消费...原创 2019-09-21 22:24:25 · 792 阅读 · 0 评论 -
物联网开发——TencentOS Tiny 任务间通信(互斥量)
互斥量概述互斥量又称互斥锁,一般用于共享资源的互斥排他性访问保护。互斥量在任意时刻处于且仅会处于解锁或锁定状态,当一个任务获取到一把锁后(互斥量锁定),其他任务再尝试获得这把锁时会失败或进入阻塞状态,当该任务释放持有的锁时(互斥量解锁),会唤醒一个正阻塞等待此互斥量的任务,被唤醒的任务将会获取这把锁。在多任务运行环境中,有些共享资源不具有多线程可重入性,对于这类不希望被多任务同时访...原创 2019-09-21 21:40:26 · 819 阅读 · 1 评论 -
物联网开发——TencentOS Tiny 任务管理
概述TencentOS tiny内核是单地址空间的可抢占式实时内核,TencentOS tiny内核不提供进程模型,任务对应线程的概念,是最小的调度运行体,也是最小的资源持有单位。任务的本质是一个拥有独立栈空间的可调度运行实体,用户可以在任务的入口函数中编写自己的业务逻辑;多个任务之间可以通过系统提供的任务间通信机制进行同步或者信息传递等操作;每个任务都有优先级,高优先级任务可以抢占...转载 2019-09-21 20:58:32 · 1427 阅读 · 0 评论 -
物联网开发——TencentOS Tiny 系统管理
系统管理概述系统管理模块提供了几个接口,用以初始化/启动TencentOS tiny内核、锁定/解锁系统调度等。API讲解k_err_t tos_knl_init(void);初始化内核。k_err_t tos_knl_start(void);启动运行内核,开始第一个任务调度。int tos_knl_is_running(void);判断内核是否已启动运行。...转载 2019-09-21 20:56:18 · 797 阅读 · 0 评论 -
TencentOS tiny开发指南 ——概述
1. 概述TencentOS tiny是面向物联网(IOT)领域的操作系统,由一个实现精简的实时操作系统(RTOS)内核,以及丰富的物联网组件组成。1.1 基础内核组件系统管理系统管理模块,主要提供了内核的初始化、内核运行启动,中断进入/退出流程托管、系统调度锁定及解锁等功能。任务管理提供了任务的创建、删除、睡眠、取消睡眠、挂起、恢复、优先级修改、主动放弃CPU等功能。任务...原创 2019-09-21 12:04:14 · 6045 阅读 · 0 评论 -
TencentOS tiny学习源码分析(2)——调度器
调度器的基本概念TencentOS tiny中提供的任务调度器是基于优先级的全抢占式调度,在系统运行过程中,当有比当前任务优先级更高的任务就绪时,当前任务将立刻被切出,高优先级任务抢占处理器运行。TencentOS tiny内核中也允许创建相同优先级的任务。相同优先级的任务采用时间片轮转方式进行调度(也就是通常说的分时调度器),时间片轮转调度仅在当前系统中无更高优先级就绪任务的情况下才有效...转载 2019-09-30 22:47:22 · 841 阅读 · 0 评论