开放原子训练营(第四季)TobuOS——雅特力ATF423移植tobudOS

【目的】
移植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

  • 19
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值