866|0

441

帖子

3

TA的资源

纯净的硅(高级)

楼主
 

【AT32A403A 车规MCU开发板】 TobudOS移植 [复制链接]

本帖最后由 TL-LED 于 2024-1-26 14:54 编辑

学习移植TobudOS系统到AT32A403开发板。

 

一、TobudOS简介

 

    TobudOS 是面向物联网领域开发的实时操作系统,基于腾讯自研的物联网操作系统TencentOS Tiny开源项目,2020年由腾讯捐赠到开放原子开源基金会进行孵化,2023年正式更名为TobudOS,TobudOS具有低功耗,低资源占用,模块化,安全可靠等特点,可有效提升物联网终端产品开发效率,提供精简的 RTOS 内核,内核组件可裁剪可配置,可快速移植到多种主流 MCU (如 STM32 全系列) 及模组芯片上。而且,基于 RTOS 内核提供了丰富的物联网组件,内部集成主流物联网协议栈(如 CoAP/MQTT/TLS/DTLS/LoRaWAN/NB-IoT 等),可助力物联网终端设备及业务快速接入物联网云平台。

 

二、源码下载

 

下载地址:https://atomgit.com/OpenAtomFoundation/TobudOS

 

三、复制文件

 

3.1、复制文件到项目文件

 

3.2、添加文件到项目

 

四、程序部分

 

4.1、tos_config.h

#ifndef _TOS_CONFIG_H_
#define  _TOS_CONFIG_H_

#include "at32a403a.h"	// 目标芯片头文件,用户需要根据情况更改

#define TOS_CFG_TASK_PRIO_MAX           10u 	// 配置TencentOS tiny默认支持的最大优先级数量

#define TOS_CFG_ROUND_ROBIN_EN          0u		// 配置TencentOS tiny的内核是否开启时间片轮转

#define TOS_CFG_OBJECT_VERIFY_EN           1u	// 配置TencentOS tiny是否校验指针合法

#define TOS_CFG_TASK_DYNAMIC_CREATE_EN  1u		// TencentOS tiny 动态任务创建功能宏

#define TOS_CFG_EVENT_EN                1u		// TencentOS tiny 事件模块功能宏

#define TOS_CFG_MMBLK_EN                1u		//配置TencentOS tiny是否开启内存块管理模块

#define TOS_CFG_MMHEAP_EN               1u		//配置TencentOS tiny是否开启动态内存模块

#define TOS_CFG_MMHEAP_DEFAULT_POOL_EN  1u		// TencentOS tiny 默认动态内存池功能宏

#define TOS_CFG_MMHEAP_DEFAULT_POOL_SIZE        0x100	// 配置TencentOS tiny默认动态内存池大小

#define TOS_CFG_MUTEX_EN                1u		// 配置TencentOS tiny是否开启互斥锁模块

#define TOS_CFG_MESSAGE_QUEUE_EN        1u		// 配置TencentOS tiny是否开启消息队列模块

#define TOS_CFG_MAIL_QUEUE_EN           1u		// 配置TencentOS tiny是否开启消息邮箱模块

#define TOS_CFG_PRIORITY_MESSAGE_QUEUE_EN	1u	// 配置TencentOS tiny是否开启优先级消息队列模块

#define TOS_CFG_PRIORITY_MAIL_QUEUE_EN	1u		// 配置TencentOS tiny是否开启优先级消息邮箱模块

#define TOS_CFG_TIMER_EN                1u		// 配置TencentOS tiny是否开启软件定时器模块

#define TOS_CFG_PWR_MGR_EN              0u		// 配置TencentOS tiny是否开启外设电源管理模块

#define TOS_CFG_TICKLESS_EN             0u		// 配置Tickless 低功耗模块开关

#define TOS_CFG_SEM_EN                  1u		// 配置TencentOS tiny是否开启信号量模块

#define TOS_CFG_TASK_STACK_DRAUGHT_DEPTH_DETACT_EN      1u	// 配置TencentOS tiny是否开启任务栈深度检测

#define TOS_CFG_FAULT_BACKTRACE_EN      0u		// 配置TencentOS tiny是否开启异常栈回溯功能

#define TOS_CFG_IDLE_TASK_STK_SIZE      128u	// 配置TencentOS tiny空闲任务栈大小

#define TOS_CFG_CPU_TICK_PER_SECOND     1000u	// 配置TencentOS tiny的tick频率

#define TOS_CFG_CPU_CLOCK               (SystemCoreClock)	// 配置TencentOS tiny CPU频率

#define TOS_CFG_TIMER_AS_PROC           1u		// 配置是否将TIMER配置成函数模式

#define	TOS_CFG_OBJ_DYNAMIC_CREATE_EN	1u		// 配置是否开启任务的动态分配处理和堆栈

#endif

4.2、fun_task.c

#include "main.h"

//task1
#define TASK1_STK_SIZE		256
void task1(void *pdata);
osThreadDef(task1, osPriorityNormal, 1, TASK1_STK_SIZE);

//task2
#define TASK2_STK_SIZE		256
void task2(void *pdata);
osThreadDef(task2, osPriorityNormal, 1, TASK2_STK_SIZE);

void task1(void *pdata)
{
	 int count = 1;
	 while(1)
	 {
			 printf("\r\nHello world!\r\n###This is task1 ,count is %d \r\n", count++);
			 led2_tog();
			 osDelay(2000);
	 }
}
void task2(void *pdata)
{
	 int count = 1;
	 while(1)
	 {
			  printf("\r\nHello TencentOS !\r\n***This is task2 ,count is %d \r\n", count++);
				led3_tog();
			 osDelay(1000);
	 }
}
	 
void task_create(void)
{
	osThreadCreate(osThread(task1), NULL);// Create task1
	osThreadCreate(osThread(task2), NULL);// Create task2
	osKernelStart();//Start TOS Tiny		
}

int fputc(int ch, FILE *f)
{
 if (ch == '\n')
 {
	while(usart_flag_get(USART1, USART_TDBE_FLAG) == RESET);
	usart_data_transmit(USART1, (uint16_t)ch);
	while(usart_flag_get(USART1, USART_TDC_FLAG) == RESET);
 }
 while(usart_flag_get(USART1, USART_TDBE_FLAG) == RESET);
 usart_data_transmit(USART1, (uint16_t)ch);
 while(usart_flag_get(USART1, USART_TDC_FLAG) == RESET);
 return ch;
}

4.3、main.c

#include "main.h"

int main(void)
{
  system_clock_config();
	
	delay_init();
	init_usart(115200); 
	init_led(); 
//	init_eint();
//	init_key();
	osKernelInitialize(); //TOS Tiny kernel initialize
  task_create();

  while(1)
  {
  }
}

 

五、程序运行

 

下载程序到开发板,运行后,串口输出

 

此帖出自汽车电子论坛
点赞 关注

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表