本帖介绍如何将UCOSII操作系统移植到智多晶的M3平台
准备工作
下载官方提供的移植包,地址为https://github.com/weston-embedded/uC-OS2
然后解压,得到这些文件夹
接下来创建一个名为UCOSII的文件夹,在其下创建两个子文件夹,分别命名为inc和src,用来存放我们最终所需的文件。
拷贝所需文件
(1)从Cfg\Template、Ports\ARM-Cortex-M\ARMv7_M、Ports\ARM-Cortex-M\ARMv7_M\ARM、Source四条路径下,找出以下文件,放入我们创建的UCOSII\src路径下
(2)从Cfg\Template、Ports\ARM-Cortex-M\ARMv7_M\ARM、Source三条路径下,找出以下文件,放入我们创建的UCOSII\inc路径下
(3)将UCOSII文件夹直接复制到智多晶的MDK工程目录下
将文件添加到工程中
(1)打开MDK工程,创建一个名为UCOSII的工程组别,将UCOSII\src下的文件全部添加进去
(2)添加头文件路径.\UCOSII\inc
修改文件内容
(1)打开os_cpu_c.c文件,注释掉OS_CPU_SysTickHandler函数,后面我们会重新写这个函数
(2)打开os_cpu_c.asm文件,修改两处的OS_CPU_PendSVHandler为PendSV_Handler
(3)打开os_cfg.h文件,修改这三处
(4)打开os_cfg.h文件,添加以下两个宏定义
编写滴答时钟
(1)创建timer.c文件,添加以下代码,放在工程目录下,并添加进工程里
(2)创建timer.h文件,添加以下代码,放在工程目录下
(3)修改main.c文件的内容
#include "CM3DS_gpio.h"
#include "CM3DS_rcc.h"
#include "CM3DS_MPS2.h"
#include "CM3DS_timer.h"
#include <stdio.h>
#include <string.h>
#include "timer.h"
#include "uart.h"
#include "os.h"
uint8_t num = 0;
/* Definition of Task Stacks */
#define TASK_STACKSIZE 128
OS_STK task1_stk[TASK_STACKSIZE];
OS_STK task2_stk[TASK_STACKSIZE];
/* Definition of Task Priorities */
#define TASK1_PRIORITY 1
#define TASK2_PRIORITY 2
/* Prints "Hello World" and sleeps for three seconds */
void task1(void* pdata)
{
while (1)
{
printf("Hello from task1: %d\n",num++);
OSTimeDlyHMSM(0, 0, 1, 0);
}
}
/* Prints "Hello World" and sleeps for three seconds */
void task2(void* pdata)
{
while (1)
{
printf("Hello from task2\n");
OSTimeDlyHMSM(0, 0, 1, 0);
}
}
/* The main function creates two task and starts multi-tasking */
int main(void)
{
Uart_Init(); //串口初始化
SysTick_Init(); //滴答时钟初始化
OSInit(); //UCOS初始化
OSTaskCreateExt(task1,
NULL,
(void *)&task1_stk[TASK_STACKSIZE-1],
TASK1_PRIORITY,
TASK1_PRIORITY,
task1_stk,
TASK_STACKSIZE,
NULL,
0);
OSTaskCreateExt(task2,
NULL,
(void *)&task2_stk[TASK_STACKSIZE-1],
TASK2_PRIORITY,
TASK2_PRIORITY,
task2_stk,
TASK_STACKSIZE,
NULL,
0);
OSStart();
return 0;
}
移植好的工程在下方下载
更多智多晶FPGA相关资料,请查看下述汇总贴
【智多晶FPGA-001】小梅哥智多晶FPGA产品使用自助服务手册
http://www.corecourse.cn/forum.php?mod=viewthread&tid=28724