IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 移植TencentOS tiny MDK软件包到TencentOS tiny AIOT开发板 -> 正文阅读

[嵌入式]移植TencentOS tiny MDK软件包到TencentOS tiny AIOT开发板

引言

TencentOS Tiny AIoT开发板性能强大,可应用于物联网、人工智能等多种领域的开发,同时内置TencentOS Tiny开源物联网操作系统,例程等学习资料众多,对于初学者非常友好。
开发板主要有以下特性:

1、核心板采用的RT1062处理器属于i.MX RT 系列 MCU,是由 NXP推出的跨界处理器,跨界是指该系列MCU的定位既非传统的微控制器、也非传统的微处理器,i.MX RT 系列 MCU则综合了两者的优势,既具备高频率(最高主频600M)、高处理性能,也具备中断响应迅速、实时性高的特点。
2、1M RAM 16M SDRAM 64MB qspi flash 128MB spi flash
3、板载Type-C接口CMSIS DAP仿真器。
4、板载PCIE接口,可扩展4G类物联网模组。
5、板载物联网俱乐部WAN Interface接口,可支持NB-IoT、WiFi、4G cat1、LoRa等模组。
6、板载物联网俱乐部E53 Interface接口,可扩展全系E53传感器。
7、板载标准24P DVP摄像头接口,可支持最高500万像素摄像头。
8、板载RGB显示接口,可转换HDMI输出。
9、板载高性能音频解码芯片,可做语音识别测试。
10、预留SD卡、用户按键、SPI Flash。

在这里插入图片描述
在移植TencentOS tiny到这款开发板的keil工程时,需要从github下载TencentOS tiny,然后逐个文件夹进行复制,并在工程中添加头文件和源文件,操作相对来说比较繁琐,作者在在21年暑假制作了TencentOS tiny的MDK软件包,能够以安装的方式将TencentOS tiny移植到Keil上,比较方便,因此在本文中对其使用过程进行介绍。

1、基础工作

结合

接下来需要将TencentOS tiny移植到TencentOS tiny AIOT开发板工程中:

2、移植方案1

github上介绍的移植方法:https://github.com/OpenAtomFoundation/TencentOS-tiny/blob/master/doc/30.TencentOS_Tiny_EVB_AIoT_QuickStart.md

3、使用MDK软件包进行安装移植

1、下载TencentOS tiny的MDK软件包
https://github.com/LinwCui/TencentOS-tiny/blob/master/tools/mdk_pack/Tencent.TencentOS-tiny.1.0.1.pack

2、安装软件包(与安装RT1062的MDK PACK包一样);

3、打开Keil5的工程,编译设置为flexspi_nor_debug
在这里插入图片描述
选择TencentOS tiny组件
在这里插入图片描述
4、配置,在mcu_platform.h里面添加头文件#include “MIMXRT1062.h” #include “core_cm7.h”
在这里插入图片描述
5、测试

(1)新建example.c,在里面添加任务代码

#include "fsl_device_registers.h"
#include "fsl_debug_console.h"
#include "pin_mux.h"
#include "clock_config.h"
#include "board.h"
#include "tos_k.h"

#define TASK1_STK_SIZE       1024
k_task_t task1;
uint8_t task1_stk[TASK1_STK_SIZE];


#define TASK2_STK_SIZE       1024
k_task_t task2;
uint8_t task2_stk[TASK2_STK_SIZE];

void task1_entry(void *arg)
{
    while (1) {
        PRINTF("###I am task1\r\n");
        tos_task_delay(2000);
    }
}

void task2_entry(void *arg)
{
    while (1) {
        PRINTF("***I am task2\r\n");
        tos_task_delay(1000);
    }
}


void application_entry(void *arg)
{
    tos_task_create(&task1, "task1", task1_entry, NULL, 3, task1_stk, TASK1_STK_SIZE, 0); // Create task1
    tos_task_create(&task2, "task2", task2_entry, NULL, 3, task2_stk, TASK2_STK_SIZE, 0);// Create task2
}

(2)将原始工程的hello_world.c修改如下:

/*
 * Copyright (c) 2013 - 2015, Freescale Semiconductor, Inc.
 * Copyright 2016-2017 NXP
 * All rights reserved.
 *
 * SPDX-License-Identifier: BSD-3-Clause
 */

#include "fsl_device_registers.h"
#include "fsl_debug_console.h"
#include "pin_mux.h"
#include "clock_config.h"
#include "board.h"
#include "tos_k.h"
/*******************************************************************************
 * Definitions
 ******************************************************************************/
#define APPLICATION_TASK_STK_SIZE       4096
k_task_t application_task;
uint8_t application_task_stk[APPLICATION_TASK_STK_SIZE];
extern void application_entry(void *arg);

#pragma weak application_entry
void application_entry(void *arg)
{
    while (1) {
        PRINTF("This is a demo task,please use your task entry!\r\n");
        tos_task_delay(1000);
    }
}
/*******************************************************************************
 * Prototypes
 ******************************************************************************/

/*******************************************************************************
 * Code
 ******************************************************************************/
/*!
 * @brief Main function
 */
int main(void)
{
    char ch;

    /* Init board hardware. */
    BOARD_ConfigMPU();
    BOARD_InitBootPins();
    BOARD_InitBootClocks();
    BOARD_InitDebugConsole();

    //PRINTF("hello world.\r\n");
        PRINTF("Welcome to TencentOS tiny(%s)\r\n", TOS_VERSION);
    tos_knl_init(); // TencentOS Tiny kernel initialize
    tos_task_create(&application_task, "application_task", application_entry, NULL, 4, application_task_stk, APPLICATION_TASK_STK_SIZE, 0);
    tos_knl_start();
    while (1)
    {
        ch = GETCHAR();
        PUTCHAR(ch);
    }
}

(3)编译,并通过CMSIS-DAP Debugger下载进单片机
在这里插入图片描述
6、如果任务运行正确,那么就说明移植成功。

4、其他

ps. 使用STM32Cube也是可以的,对应的软件包在这里https://github.com/OpenAtomFoundation/TencentOS-tiny/tree/master/tools/STM32CubeMX_pack

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2022-03-16 22:35:59  更:2022-03-16 22:37:39 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 6:38:06-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码