文章目录[隐藏]
前面两篇记录里如何新建工程和控制led灯,今天正式学习TencentOS_Tiny,先进行内核移植,建立任务,运行任务,在此记录一下。
一,复制所用到的文件。
最简单的移植,其实涉及到的文件还是比较少的,主要有架构相关的arch文件夹和内核kernel文件夹,另外在已有工程里复制一份tos_config文件夹。
arch文件夹包含了架构类型,ETiny EVB_AIoT开发板的主控芯片是cortex-m7类型,多余的删掉就可以了。
二,在IDE里面添加头文件路径。
把所有用到的头文件路径都加载进来,TencentOS_Tiny系统的头文件一般都在include文件下。
三,修改代码。
1,主程序文件下,引入头文件 #include "tos_k.h" ,系统用到的头文件都在头文件下。
2,中断函数设置,如果裸机程序使用了中断,先取消,TencentOS_Tiny系统里带了中断程序。
3,systick设置,添加函数。
void SysTick_Handler(void)
{
if (tos_knl_is_running())
{
tos_knl_irq_enter();
tos_tick_handler();
tos_knl_irq_leave();
}
}
4,添加任务代码。
#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);
}
}
5,在main函数中,启用任务,添加以下代码。
6,最后不要忘了使能systick有关的宏定义。
找到TOS_CFG_TIMER_EN定义的位置,使能。
7,结束,过程非常简单,不过内核原理留着以后好好研究吧,串口打印结果如下。
版权声明:本文为CSDN博主「zhengyad123」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/m0_38012497/article/details/122789447
暂无评论