GoupOS嵌入式操作系统移植
GoupOS嵌入式操作系统移植版本: V1.1
首先找到os文件夹,然后拷贝os文件夹到自己的工程目录下,文件目录下有这些文件
可以阅读当前文件下的README.txt文件,查看每个文件目录的作用;在MDK中,C语言需要包含的头文件有:
..\os\Device\inc ..\os\GoupOSBasics\inc ..\os\GoupOSkernel\Cortex-Mx\GoupOSexternfile ..\os\GoupOSkernel\Cortex-Mx\inc ..\os\GoupOSkernel\Cortex-Mx ..\os\SystemComponents\inc ..\os\SystemMemManage\inc
在MDK中,汇编语言需要包含的头文件有:
..\os\GoupOSkernel\Cortex-Mx |
- 在MDK中,包含这些目录下的源文件:
.. \os\Device\src ..\os\GoupOSBasics\src ..\os\GoupOSkernel\Cortex-Mx\src ..\os\SystemComponents\src ..\os\SystemMemManage\src
暂时屏蔽这两个源文:os_stdlib.c、os_object.c;
说明:Cortex-Mx,根据不同内核选择不同的内核文件,这样就完成了GoupOS的移植,下面是系统参数的修改。
大部分文件夹下有README.txt文档,请阅读首先,请搜索总个工程中源文件,保证:SysTick_Handler函数只在tcpu.c文件中使用;tcpu.c文件存放位置在:..\os\GoupOSkernel\Cortex-Mx\src目录下;
修改GoupOS的系统配置文件中相关参数:GoupOSconfig.h;
修改系统运行参数,配置滴答 #define CPU_CLOCK_HZ (180000000) 系统时钟 #define OS_1S_TICKS (1000) 系统每秒钟滴答次数(该值可以默认) #define OS_TIME_BASE (CPU_CLOCK_HZ/OS_1S_TICKS) 系统时基 #define OS_SYSTICK_MS (1) 系统最小时间单位 #define TICKS_PER_SEC (1000/OS_SYSTICK_MS) 滴答次数
系统优先级是可以支持配置的,考虑系统资源,优先级配置8-1024;修改:TINYOS_PRO_COUNT 宏的值;
芯片是否支持FPU可以通过配置:OS_ARM_FPU_ENABLE宏是否使能支持FPU功能,该宏支持两个选项
#define OS_ARM_FPU_ENABLE OS_ENABLE | 支持FPU功能,开启FPU |
#define OS_ARM_FPU_ENABLE OS_DISABLE | 不支持FPU功能,关闭FPU |
系统启动时候,输出调试信息,可以通过配置:OS_STARTUPINFO 宏,设置系统启动时候是否打印调试信息,启动调试信息包含系统说明,启动线程说明,设置为1时候,启动了调试信息,设置0关闭了调试信息。
#define GOUPOS_ENABLE_SEM | (1) | 控制是否裁剪信号量功能模块 |
#define GOUPOS_ENABLE_MAILMSG | (1) | 控制是否裁剪邮箱功能模块 |
#define GOUPOS_ENABLE_MEMBLOCK | (1) | 控制是否裁剪内存功能模块 |
#define GOUPOS_ENABLE_EVENTFLAGGROUP | (1) | 控制是否裁剪事件标志组功能模块 |
#define GOUPOS_ENABLE_MUTEX | (1) | 控制是否裁剪互斥锁功能模块 |
#define GOUPOS_ENABLE_TIMER | (1) | 控制是否裁剪定时器功能模块 |
#define GOUPOS_ENABLE_CPUUSAGE_STAT | (1) | 控制是否裁剪CPU使用率功能模块 |
#define GOUPOS_ENABLE_HOOKS | (1) | 控制是否裁剪钩子函数功能模块 |
关于系统模块裁剪,该部分功能正在完善,可能裁剪某些特殊模块会出现编译不过问题,正在完善,但是只要编译通过,能正常仿真运行,那么裁剪基本没有问题,
关于文件引用,由于系统需要使用滴答,所以系统会引用库文件去支持tcpu.c,GoupOSexternfile.h头文件中引用外部文件,例如GoupOSexternfile.h中包含 #include “stm32f4xx.h”
用户包含系统文件,只需要包含#include “GoupOSinclude.h”,就可以调用系统所有API函数接口。
需要添加一个app.h app.c文件该文件中主要添加一个函数:
1
2
3
4
5/*用户任务初始化程序*/
void AppTaskInit(void)
{
}该文件主要包含在os_tTask.c文件中,如果需要修改文件名,可以更改,同时需要在os_tTask.c中,将包含的头文件也修改;但是任务初始化函数不能修改。如上图,
配置工程中,需要去除相关函数后再移植操作系统
void PendSV_Handler(void) void SysTick_Handler(void) 如果工程中需要打印函数,需要先初始化串口,然后配置
osdev_out(usart_putc); //初始化打印函数底层
然后调用 :GoupOS_StartupRun();函数