????????前面两篇记录里如何新建工程和控制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,结束,过程非常简单,不过内核原理留着以后好好研究吧,串口打印结果如下。
?
|