华大单片机移植TencentOS

华大单片机移植TencentOS-Tiny

一、参考链接:

1.Tiny的有关概述我就不说了。直接上官网看就可以了。

2.(1)TencentOs官网

(2)其他参考链接:杰杰博主

(3)API说明和demo

二、资料准备

1.要先移植TencentOS,肯定必须要有Tiny的源码,下载源码有两个方法,(1)通过github直接下载 github链接,(2)通过腾讯的 工蜂链接

2.要在华大单片机上移植,同样也必须要又华大单片机的可用工程模块,博主我使用的是华大HC32L13X系列,其他系列一样。工程模板,相信大家手上都是有的。

3.万事俱备,只欠东风

三、开始移植

1.由于前面有了许多前辈走的坑,以及写下的心血,有些部分仔细操作可以具体看下 上面的 杰杰博主链接。

2.下载下来是下面的样子

在这里插入图片描述

3.由于Tencent与华大有合作吧,反正出了个Hc32L136的demo,这就很舒服了。。不过我还是不喜欢,毕竟没有比这就动手来的实在,也能加深印象。
在这里插入图片描述

4.在我们的工程目录下新建一个TencetOS,然后将arch和kernel copy过来,在建个文件夹将 tos_config.h也拷贝过来。再将文件添加到工程中
在这里插入图片描述

(1)TencentOS\kernel\core路径下的所有.c文件添加到tos/kernel工程分组中.同时将TencentOS\kernel\pm目录下的所有.c文件添加到tos/kernel工程分组中。
在这里插入图片描述

(2)TencentOS\arch\arm\arm-v7m\common路径下的 tos_cpu.c、tos_fault.c添加到tos/arch工程分组下面,也将TencentOS\arch\arm\arm-v7m**cortex-m0+**\armcc路径下的port_s.S、port_c.c文件添加到tos/arch`工程分组下面

(3)再将TencentOS\TOS-CONFIG路径下的tos_config.h文件添加到tos/config`工程分组中。

(4)最后将头文件的路径添加进去即可

…\TencentOS\arch\arm\arm-v7m\common\include …\TencentOS\arch\arm\arm-v7m\cortex-m0+\armcc …\TencentOS\kernel\core\include …\TencentOS\kernel\pm\include …\TencentOS\TOS-CONFIG

(5)把这个勾上
在这里插入图片描述

(6)添加这个头文件
在这里插入图片描述

(7)把 interrupts_hc32l13x.c里面的这个函数改成这样

void SysTick_Handler(void)
{		
	//系统自带
   //SysTick_IRQHandler();
	 
	//TOS
	if(tos_knl_is_running())   //TOS开始跑了,才能执行正常的调度处理
	{
		tos_knl_irq_enter();  //进入中断
		tos_tick_handler();		//调用UCOS的时钟服务函数
		tos_knl_irq_leave();	//触发任务切换软中断
	
	}
}

通过上面的操作基本将TencentOS成功的移植到我们的工程模块中了。接下就测试下是否可行。。写个简单的demo试下

四、移植完成-测试

对了。。。。。。。
要在main函数添加这个头文件哦!!!
#include "tos_k.h"

#if TASk_TEST  
k_task_t task1;
k_task_t task2;

k_stack_t task_stack1[512];
k_stack_t task_stack2[512];




void test_task1(void *parameter);
void test_task2(void *parameter);

void test_task1(void *parameter)
{
	while(1)
	{
		printf("hello world sym 1!!!!\r\n");
		tos_task_delay(1000);
	
	}
}

void test_task2(void *parameter)
{
	while(1)
	{
		printf("hello world sym 2!!!!\r\n");
		tos_task_delay(2000);
	
	}
}
#endif
	k_err_t err1;
	k_err_t err2;


tos_knl_init();  //初始化内核

#if TASk_TEST
	err1 = tos_task_create(&task1,
	"test_task1",
	test_task1,
	NULL,
	2,
	task_stack1,
	512,
	0);
	
	if(err1 != K_ERR_NONE)
	{
		printf("TencentOS Create task fail! code : %d \r\n",err1);
	}	
	
	
	err2 = tos_task_create(&task2,
	"test_task2",
	test_task2,
	NULL,
	3,
	task_stack2,
	512,
	0);
	
	if(err2 != K_ERR_NONE)
	{
		printf("TencentOS Create task fail! code : %d \r\n",err2);
	}

	#endif

	tos_knl_start();

实验现象:多说无凭
在这里插入图片描述

五、总结

1.基本上操作系统的移植都相差不大,都是移植内核和部分配置文件即可。

2.不同的芯片厂商不同。可以的库函数配置不一样。所以这才是注意的点。。

3.最后一说,文章有一部分是参考杰杰博主的。再次感谢。文中有何问题欢迎提出!一起改进!加油。支持国产

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值