初识ucos操作系统-----基于freescale K60硬件平台的ucos-ii的移植

先给自己打个广告,本人的微信公众号正式上线了,搜索:张笑生的地盘,主要关注嵌入式软件开发,股票基金定投,足球等等,希望大家多多关注,有问题可以直接留言给我,一定尽心尽力回答大家的问题,二维码如下:

一 概述

嵌入式操作系统应用之广泛,让我们的电子世界变得更加丰富多彩,没有研究过嵌入式操作系统,不足以称为嵌入式软件工程师,本篇文章就详细描述了在飞思卡尔K60硬件平台上如何移植ucos-ii的过程。

二 移植准备

嵌入式软件开发和以前单片机开发的最大区别在于:各大SoC芯片公司都有SoC的软件支持包,大大缩减了软件工程师的开发周期,以前单片机开发过程中,许多外设模块的驱动开发都需要我们对照SoC芯片手册,自己编写代码实现。

因此,移植ucos-ii操作系统之前,我们需要准备两个软件开发包:飞思卡尔硬件平台软件开发包sdk,ucos-ii软件支持包sdk。

2.1 K60软件开发包sdk下载,地址:https://mcuxpresso.nxp.com/en/welcome 下载步骤如下图所示:

2.2 ucos官网下载ucos-ii的sdk,下载地址:https://www.micrium.com/,我们下载ucos-ii,暂时不下载ucos-iii(这是ucos-ii的升级版本)

三 移植过程详解

3.1 调试一个正确的裸机程序

因为在freescale官网下载的sdk,是基于freescale官方开发板twrk60的,这个开发板不一定和我们的硬件平台原理图一样,所以我们需要基于我们的硬件平台调试出一个正确的裸机程序,可以是一个简单的LED闪烁实验。当然如果手边的开发板正好是freescale的twk60开发板,这一步基本就可以省略。

3.2 移植ucos-ii

这是本内容中最最重要的部分,这里先探讨移植的步骤,让初始嵌入式操作系统,或者初始ucos-ii的人有一个基础认识。

官方的ucos-ii实在是一个庞大且完善的操作系统,正常情况我们是用不了那么多功能的,所以我们不需要将所有的官方ucos的sdk移植过来,只需要其中的一部分。

如下图所示,我们需要Micrium_TWR-K60N512_OS2\Micrium\Software\uCOS-II这个路径下面的所有文件夹内容,也就是source和port文件夹内容,这两个文件夹是我们移植过程中最最重要的内容,图中所示Your Application中的APP.C,OS_CFG.H和INCLUDE.h来源于Micrium_TWR-K60N512_OS2\Micrium\Examples\Freescale\TWR-K60N512\OS2,而APP_VECT.C和APP_CFG.H是都不需要的

3.3 工程结构

APP文件夹就是用来存放APP.C,OS_CFG.H和INCLUDE.h

UCOS-II就是用来存放source和port

BSP用来存放配置我自己的k60硬件平台的底层配置

接下来就是移植的关键步骤了,我们需要修改官方启动文件(如果不知道什么是启动文件,请自行查阅资料)。这里简单的分析2个问题,一是,什么叫移植,二是移植的操作系统如何能够被我们的工程所应用。所谓移植,打一个恰当的比喻——器官移植,就是将A的器官移植到B身上,使A的器官能够为B所用。所以移植绝对不是简单的“复制”,不仅要放到你的工程项目中,更重要的是要能够和你的项目建立联系。

那么uCOS-ii怎么跟k60建立联系呢?uCOS-ii的核心作用就是任务调度,要使用K60的一个特殊异常——PendSV,就是可挂起系统任务异常,通过该异常进行系统的调度。还有就是uCOS-ii需要一个基准时间,那么K60中有一个专用的定时器,嘀嗒定时器SysTick(这个定时器在同一种ARM内核中都是一样的操作使用方式,它不属于K60的外设资源,它是ARM内核所拥有的资源),通过这个滴答定时器给uCOS-ii提供一个时间基准,每隔固定的时间出发一个PendSV异常,进行任务的调度。所以呢,在官方案例的移植文档AN-1018中也特别提到这一点,要将启动代码中所有“PendSV_Handler”和“SysTick_Handler”(因为在freescale官方提供的sdk中,启动文件中的这两个中断ISR是叫这个名字),替换成“OS_CPU_PendSVHandler”和“OS_CPU_SysTickHandler”(在ucos官方对的sdk中,这俩个异常服务ISR是叫这个名字,我们必须保证这两处名字的一致,这样两者在调用过程中才不会找不到相应的ISR入口,当然也可以都用freescale官方提供的sdk中的中断ISR名字替代ucos中的名字),这样就相当于将uCOS-ii的“神经”跟你的项目的“神经”搭在了一起。

移植完成之后,我们就可以在app.c中创建我们的任务task了,我们可以参照官方app.c中的内容来创建

四  结束语

4.1 为什么选用freescale的官方sdk包?

因为官方包的驱动等都是完善的,而且各种被包含的文件路劲都已经添加完成,对于初学者,如果自行添加各种头文件,尤其当用到部分官方提供的driver文件时,会发现各种提示头文件缺失,用了官方sdk包之后,就省去了这个麻烦。

4.2 为什么是ucos-ii操作系统

对于嵌入式软件来说,有各种各样的嵌入式操作系统,有ucos-ii,ucos-iii,freertos,RTthread,VxWorks,UCLinux,甚至还有Linux,有这么多操作系统,我们应该如何入门呢?个人觉得从ucos或者freertos入门相对比较容易简单,也便于我们理解操作系统的各个专业知识,入门这两者以后,以后理解linux内核等等,就会简单容易很多

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值