打印
[牛人杂谈]

尝鲜腾讯物联网操作系统,没有彻底成功,真失败。

[复制链接]
8127|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
近日腾讯推出了自己的RTOS。
腾讯物联网操作系统(TencentOS tiny)是腾讯面向物联网领域开发的实时操作系统,具有低功耗,低资源占用,模块化,可裁剪等特性。TencentOS tiny 可以有效减少开发人员在任务管理、硬件支持、网络协议支持、安全方案以及文件系统、 KV 存储、在线升级等常用功能组件相关的开发中所需要的时间和工作量,并且能够快速高效的实现设备的低功耗运行,提供强大的开发调试功能, 减少开发测试人力成本,使客户的产品能够实现快速开发和快速上线交付。
        除了他们已经移植好的系列外,貌似给的移植说明不是很完整,首先腾讯的RTOS是在C99标准编写的,所以如果用Keil的话是推荐用AC6编译器。
官方网址:
腾讯物联网终端操作系统 - 文档中心 - 腾讯云 (tencent.com)

厂家提供的有一个M251的移植好的,我按照移植说明进行了M471单片机的移植。这里提供一下我M471做的工程,大家可以测试一下,看看那个tos_task_delay(1000);函数为何卡着不动,帮我研究一下啊,我没找到官方的相关说明。
TOS.rar (740.57 KB)

本来我想着开机运行会出现个企鹅,啥都没。。。。

总体来说,没有RT-Thread方便,基本上就是个刚出炉的壳子。。。不建议开发使用,仅供体验。

使用特权

评论回复
沙发
gaoyang9992006|  楼主 | 2021-8-23 20:22 | 只看该作者
#include "stdio.h"
#include "NuMicro.h"
#include "tos_k.h"
#define task1_size    240  // size of task1 stack
#define task2_size    240
k_task_t task1;            // structure of task1
k_task_t task2;

k_stack_t task1_stack[task1_size];   //stack of task1
k_stack_t task2_stack[task2_size];




void SYS_Init(void)
{

    /* Set XT1_OUT(PF.2) and XT1_IN(PF.3) to input mode */
    PF->MODE &= ~(GPIO_MODE_MODE2_Msk | GPIO_MODE_MODE3_Msk);

    /* Enable HIRC clock (Internal RC 48 MHz) */
    CLK_EnableXtalRC(CLK_PWRCTL_HIRCEN_Msk);

    /* Wait for HIRC clock ready */
    CLK_WaitClockReady(CLK_STATUS_HIRCSTB_Msk);

        /* Switch HCLK clock source to external  */
    CLK_SetHCLK(CLK_CLKSEL0_HCLKSEL_HXT, CLK_CLKDIV0_HCLK(1));

    /* Set core clock as 51MHz from PLL */
    CLK_SetCoreClock(FREQ_51MHZ);


    /* Enable UART clock */
    CLK_EnableModuleClock(UART0_MODULE);

    /* Select UART clock source from HIRC */
    CLK_SetModuleClock(UART0_MODULE, CLK_CLKSEL1_UART0SEL_HIRC, CLK_CLKDIV0_UART0(1));
                CLK_EnableSysTick(CLK_CLKSEL0_STCLKSEL_HCLK_DIV2,51000);
                CLK_SetSysTickClockSrc(CLK_CLKSEL0_STCLKSEL_HCLK_DIV2);

    /* Update System Core Clock */
    /* User can use SystemCoreClockUpdate() to calculate SystemCoreClock. */
    SystemCoreClockUpdate();


    /* Set GPB multi-function pins for UART0 RXD and TXD */
    SYS->GPB_MFPH = (SYS->GPB_MFPH & ~(SYS_GPB_MFPH_PB12MFP_Msk | SYS_GPB_MFPH_PB13MFP_Msk)) |
                    (SYS_GPB_MFPH_PB12MFP_UART0_RXD | SYS_GPB_MFPH_PB13MFP_UART0_TXD);



    /* Lock protected registers */
    SYS_LockReg();

}

void UART0_Init()
{
    /*---------------------------------------------------------------------------------------------------------*/
    /* Init UART                                                                                               */
    /*---------------------------------------------------------------------------------------------------------*/
    /* Reset UART module */
    SYS_ResetModule(UART0_RST);
    /* Configure UART0 and set UART0 baud rate */
    UART_Open(UART0, 115200);
}

//task1 function
void task1_fun(void *Parameter)
{
    while(1)
    {
        printf("Task1: Thansplant CORTEX-M4 Succeed\r\n");
        PB14 =~ PB14;
        tos_task_delay(1000);

    }
}

void task2_task(void *Parameter)
{
//    k_err_t err;
        int i=0;
    while(1)
    {
        printf("Task2: hello world, hello Nuvoton \r\n");
                        for(i=0;i<5;i++)
                                CLK_SysTickDelay(250000);
    }
}

int main()
{
    k_err_t err;
    /* Unlock protected registers */
    SYS_UnlockReg();

    /* Init System, peripheral clock and multi-function I/O */
    SYS_Init();

    /* tos init ,include SystickInit,should init after protected registers unlock */
    tos_knl_init();   

    /* Lock protected registers */
    SYS_LockReg();

    /* Init UART0 for printf */
    UART0_Init();

    printf("system clock to %d Hz, PLL clock to %d Hz...................... ", SystemCoreClock, CLK_SetCoreClock(FREQ_51MHZ));

    GPIO_SetMode(PB, BIT14, GPIO_MODE_OUTPUT);

    err = tos_task_create(
                    &task1,
                    "Task1",
                    task1_fun,
                    NULL,
                    2,
                    task1_stack,
                    task1_size,
                    100);
   
    err = tos_task_create(
                    &task2,
                    "display",
                    task2_task,
                    NULL,
                    2,
                    task2_stack,
                    task2_size,
                    100);

    if(err != K_ERR_NONE)
        printf("TencentOS create task fail! errcode is %d\r\n",err);

    tos_knl_start(); //Start TOS TINY
}


使用特权

评论回复
板凳
呐咯密密| | 2021-8-24 09:19 | 只看该作者
刚推出的时候有很多人去完善他的Git仓库,但是后来就没了,官方也不宣传了,感觉自己都放弃了,M471确实没人搞,用ST的话还是很方便的

使用特权

评论回复
地板
kiwis66| | 2021-9-13 11:42 | 只看该作者
我想用471,esp8266,连腾讯云,也是没有成功。
现在有事,有耽搁了

使用特权

评论回复
5
gaoyang9992006|  楼主 | 2021-9-13 11:46 | 只看该作者
kiwis66 发表于 2021-9-13 11:42
我想用471,esp8266,连腾讯云,也是没有成功。
现在有事,有耽搁了

腾讯云不是很好用,没有阿里云好用。

使用特权

评论回复
6
kiwis66| | 2021-9-13 13:44 | 只看该作者
gaoyang9992006 发表于 2021-9-13 11:46
腾讯云不是很好用,没有阿里云好用。

单位倒是买了阿里的云服务,
但是吧
上周五,注册的阿里云,自己调试测试用。

使用特权

评论回复
7
cyclefly| | 2021-10-19 17:11 | 只看该作者
确实阿里云用的多~~

使用特权

评论回复
8
chenqianqian| | 2021-10-19 18:35 | 只看该作者
阿里的liteos用的多

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

认证:西安公路研究院南京院
简介:主要工作从事监控网络与通信网络设计,以及从事基于嵌入式的通信与控制设备研发。擅长单片机嵌入式系统物联网设备开发,音频功放电路开发。

1957

主题

15903

帖子

207

粉丝