芯路恒电子技术论坛

 找回密码
 立即注册
热搜: 合集
查看: 5164|回复: 0

【智多晶FPGA-005】移植UCOSII到Cortex-M3处理器步骤详解

[复制链接]

该用户从未签到

59

主题

73

帖子

764

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
764
发表于 2022-4-7 18:54:50 | 显示全部楼层 |阅读模式

本帖介绍如何将UCOSII操作系统移植到智多晶的M3平台

准备工作

下载官方提供的移植包,地址为https://github.com/weston-embedded/uC-OS2

image.png

然后解压,得到这些文件夹

image.png

接下来创建一个名为UCOSII的文件夹,在其下创建两个子文件夹,分别命名为inc和src,用来存放我们最终所需的文件。

image.png

拷贝所需文件

(1)从Cfg\Template、Ports\ARM-Cortex-M\ARMv7_M、Ports\ARM-Cortex-M\ARMv7_M\ARM、Source四条路径下,找出以下文件,放入我们创建的UCOSII\src路径下

image.png

(2)从Cfg\Template、Ports\ARM-Cortex-M\ARMv7_M\ARM、Source三条路径下,找出以下文件,放入我们创建的UCOSII\inc路径下

image.png

(3)将UCOSII文件夹直接复制到智多晶的MDK工程目录下

将文件添加到工程中

(1)打开MDK工程,创建一个名为UCOSII的工程组别,将UCOSII\src下的文件全部添加进去

image.png

(2)添加头文件路径.\UCOSII\inc

image.png

修改文件内容

(1)打开os_cpu_c.c文件,注释掉OS_CPU_SysTickHandler函数,后面我们会重新写这个函数

image.png

(2)打开os_cpu_c.asm文件,修改两处的OS_CPU_PendSVHandler为PendSV_Handler

image.pngimage.png

(3)打开os_cfg.h文件,修改这三处image.png

(4)打开os_cfg.h文件,添加以下两个宏定义

image.png

编写滴答时钟

(1)创建timer.c文件,添加以下代码,放在工程目录下,并添加进工程里

image.png

(2)创建timer.h文件,添加以下代码,放在工程目录下

image.png

(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

SA5Z30D1_UCOSII.zip

3.05 MB, 下载次数: 374

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|芯路恒电子技术论坛 |鄂ICP备2021003648号

GMT+8, 2024-5-4 20:18 , Processed in 0.118424 second(s), 35 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc. Template By 【未来科技】【 www.wekei.cn 】

快速回复 返回顶部 返回列表