要想学习一个操作系统,最先要做的当然是移植了,把它移植到你的板子上,然后写写程序,读读源码,慢慢去吃透这个OS。 今天我就记录下UCOSII机UCOSIII在F4上的移植。 UCOSII 我在学习32时,一直学习的都是原子的寄存器版本的资料,所以说在移植时我也是优先向在寄存器例程上移植UCOS,但是,在移植UCOSII时我确实是成功了,在移植III的时候并没有搞出来,我最终还是移植到了库函数的例程下,以后我会再尝试在寄存器的例程下移植。 移植步骤(寄存器版本): 0、找一个基础工程,我选用的是跑马灯例程 1、新建文件夹,三个:CONFIG、CORE、PORT 2、向CORE文件夹添加文件:源码 3、向CONFIG添加文件:找移植好的复制 4、向PORT添加文件:找移植好的复制 5、将源码添加到工程中,CORE中要删掉UCOS_II_C, PORT添加: os_cpu.h,os_cpu_a.asm,os_cpu_c.c,CONFIG 添加俩个.h (带锁只读,去锁属性去掉只读) 添加头文件路径 编译找问题 PendSV 上下文切换,注释掉UCOS中的(寄存器版本不需要) 6、修改sys.h支持OS 注释it.c中滴答定时器的函数(寄存器版本不需要) 7、打开FPU: 在Define中加入:__FPU _USED=1(寄存器版本不需要) 8、复制一个main.c过来看看效果 CONFIG中文件的用途: includes.h:包含一些头文件 **os_cfg.h:UCOS II配置文件 PORT中文件的用途: os_cpu.h:头文件 os_cpu_a.asm:汇编文件,完成任务切换 os_cpu_c.c:与CPU相关文件,移植时需要修改 os_dgb.c:调试相关文件 os_dgb_r.c:调试相关文件 完成以上步骤就完成了UCOSII的移植,说实话每个文件的作用,它的源码我完全没有读过,但是对于一个刚接触RTOS的新人来说,不要一下就扑到源码里,更重要的是先学会怎么用,然后再读源码学原理。 UCOSII文件结构: UCOSIII 上面说到我并没有搞定UCOSIII在寄存器例程下的移植,所以说,这个的移植是基于库函数例程的。 移植步骤(库函数版本): 0、找一个基础工程,我选用的是跑马灯例程 1、新建文件夹:UCOSIII 2、添加拷贝三个CPU、LIB、III 再新建两个,BSP,CONFIG BSP:bsp.c bsp.h CONFIG:8个文件 3、向工程中添加分组--6个 添加文件、头文件路径 4、修改bsp.c bsp.h 5、修改os_cpu_c.asm 6、修改os_cpu_c.c 7、修改os_cfg_app.h 屏蔽os_cpu_c.c中关于FPU堆栈的代码 8、修改sys.h 支持ucos 注释掉it.c中滴答定时器的中断函数 9、编写main.c 注:以上的修改文件,作为初学者建议从已有例程中复制,自己编写难度极大 完成以上步骤就完成了UCOSIII的移植,在以后的博客中我会详细记录我学习UCOSIII的历程。