一、准备工具
- MCUXpresso编译器软件;
- LCP1768单片机;
- 下载器J-Link;
- 基于LPC1768单片机的官方uCOS-II例程,下载链接:www.micrium.com。
二、准备移植
- uCOS资源下载:
去uCOS官网下载与单片机匹配的uCOS-II例程,我使用的是LPC1768单片机,具体操作如下图所示。
①进入uCOS的官方网站,点击-->Downloads
②根据单片机型号,找到对应的资源,我选择的是LPC1768单片机:
③选择基于uCOS-II系统的工程进行下载,下载前需要登录个人账号,没有的请根据引导自行注册:
④下载完成后进行解压缩:
⑤工程打开所示:
⑥从展开的工程目录可以看到该工程支持三种编译器,分别是IAR(6.x版本)、MDK(4.x版本)和TrueSTUDIO(3.x版本),这里我需要的是TrueSTUDIO编译器的工程,因为它和MUCXpresso编译器都是基于eclipse:
三、开始移植
- 打开MCUXpresso编译软件,新建一个裸机工程。
该裸机工程由MCUXpresso编译软件自动生成,包含两个工程文件,一个是涉及硬件资源的CMSIS_CORE_LPC17xx工程,一个是用户定义的template工程;template工程使用的硬件资源会从CMSIS_CORE_LPC17xx工程里面调用,切勿删除。编译一下确保裸机工程没有问题:
2. 打开下载的例程,参照下载的例程,在个人工程中添加如下图所示的文件夹,并添加对应的文件。在添加文件的时候需要注意,在含有IAR、GNU和RealView三个文件夹的文件夹中,只选择GUN文件夹中的文件进行添加:
3. APP和BSP文件夹中文件的添加如下图所示:
4. 涉及到uCOS-II系统文件的添加如下所示:
5. 找到src文件夹,删除template.c文件,该文件是用于裸机的,在APP文件夹中有替代的用于uCOS-II系统的文件:
6. 给新增的文件添加路径(可添加只包含.h文件的路径):
7. 在个人工程中的src文件中找到如下图所指示的.c文件,对照下载的uCOS-II例程的.s文件修改两个函数OS_CPU_PendSVHandler和OS_CPU_SysTickHandler,这两个函数涉及到任务的挂起切换和uCOS-II的系统时钟:
同时别忘记添加函数的引用,这两个函数的定义在os_cpu_a.asm文件中,使用汇编写的,在os_cpu.h文件中被声明:
8. 至此uCOS-II系统的移植工作完成接下来进行验证。
四、验证uCOS-ii系统的移植是否正常
1. 创建两个任务分别是App_TaskStart和App_TaskJoy,在任务中添加两个计数器变量,通过观察计数器值的变化验证任务切换是否正常:
2. 设断点进行调试。两个任务能来回切换,两个计数器累加正常,说明移植成功: