【目的】
移植tobudOS到雅特力ATF423开发板。
【硬件】
雅特力AT-START-F423 V1.0
【开发环境】
MDK5.38
【移植步聚】
1、下载tobandOS源码,网址:https://atomgit.com/OpenAtomFoundation/TobudOS
2、使用ATF423官方库。复制一份工程中的printf工程。
3、在工程中新建os文件夹,把源码下的arc、kernel文件夹复到os目录下,并新建TOS-CONFIG文件夹。
4、用mdk打开printf工程,并保证能编译通过,可以通过printf打印正常。
5、根据下图所示,新建3个工程分组,分别为tos/kernel、tos/arch、tos/config,这样可以方便工程管理,看到目录就知道他的意思。这些工程分组分别保存tobandOS的内核源码、接口文件、以及配置文件。
6、根据下图,把TencentOS-tiny-master\kernel\core路径下所有的.c文件添加\os\kernel的工程分组中,也将TencentOS-tiny-master\kernel\pm目录下所有的.c文件都添加到tos\kernel工程分组中:
7、官方没有雅特力方面的资料,网上也没有相关的帖子,经过分析各位大佬们的作品,我查看了atf423的数据手册,他是arm-v7m\cortex-m4下面的内核,因此把他下面的库加入到arch工程分组中。把TencentOS-tiny-master\arch\arm\arm-v7m\cortex-m4\armcc目录下面的prot_c.c、port_s.S下面添加进去,在添加时要注意下面选所有文件,才能看到.S的文件。
8、复制一份example下面的配制文件到TOS_CONFIG工程分组下面:
9、添加头文件到工程下面:
10、到此工程文件添加完成。首选把tos_config.h的文件头引用改成ATF423的。
11、注释掉at32f423_int.c中的PendSV_Handler,以免跟tos的系统中重复函数。
12、在atf423_init.c中加入tos_k.h,注意,有些移植的教程中是tos.h,系统升级后更改为这个文件。
13、修改SysTick_Harndler函数。为tobudOS提供心跳。
void SysTick_Handler(void)
{
if(tos_knl_is_running())
{
tos_knl_irq_enter();
tos_tick_handler();
tos_knl_irq_leave();
}
}
14、编写main函数
#include "at32f423_board.h"
#include "at32f423_clock.h"
#include "tos_k.h"
/** @addtogroup AT32F423_periph_examples
* @{
*/
/** @addtogroup 423_USART_printf USART_printf
* @{
*/
__IO uint32_t time_cnt = 0;
k_task_t task;
k_stack_t task_stack[1024];
void test_task(void *Parameter)
{
while(1)
{
printf("hello tobuandOS\r\n");
tos_task_delay(1000);
}
}
/**
* @brief main function.
* @param none
* @retval none
*/
int main(void)
{
k_err_t err;
system_clock_config();
at32_board_init();
uart_print_init(115200);
/* output a message on hyperterminal using printf function */
printf("usart printf example: retarget the c library printf function to the usart\r\n");
tos_knl_init();
err = tos_task_create(&task,
"task1",
test_task,
NULL,
2,
task_stack,
1024,
20);
if(err != K_ERR_NONE)
{
printf("TobndOS Create task fail! code:%d \r\n",err);
}
tos_knl_start();
编译后无警告无错误:
下载到开发板后,系统跑起来了:
到此移植tobudOS工作就结束了,花时30分钟。
【总结】
移植就三步,1、下载源码,2、把源码拷进工程,3、修改SysTickHandle为系统提供心跳包。
简单快捷。
【心得】
我使用过freertos、rtthread等轻量的操作系统,tobudOS给我使用是最简单的一个,移植非常容易。其的操作系统都是以stm32为模版来进行移植,而我是随手选了一个开发板进行测试的,没想到这么顺利。
【建议】
其实这个系统我早在两年前在ch32v307上跑了当时还叫TencentOs的例程,没有去深入,这次开源原子基金会在开展这个活动,让我再次来体验这个移植活动,感觉就是宣传太少了,希望多举办这方面的活动,让这个非常好的系统深入开者的眼球,能让更多的人了解、使用这个优秀的开源操作系统。
【代码仓库】https://atomgit.com/lugl/at32f423_tobudOS.git