华大单片机移植TencentOS-Tiny
文章目录
- 华大单片机移植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();//TOSif(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_TESTerr1 = 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);}#endiftos_knl_start();
实验现象:多说无凭
五、总结
1.基本上操作系统的移植都相差不大,都是移植内核和部分配置文件即可。
2.不同的芯片厂商不同。可以的库函数配置不一样。所以这才是注意的点。。
3.最后一说,文章有一部分是参考杰杰博主的。再次感谢。文中有何问题欢迎提出!一起改进!加油。支持国产