您的位置 首页 设计

嵌入式实时操作系统 μC/OS-II 在S12单片机上的移植是怎样的?

1 引言在采用前后台系统软件设计模式的嵌入式系统中,主程序是一个无限循环,单任务顺序执行,通过设置一个或多个中断来处理异步事件。这种系统对于简

1 导言

在选用前后台体系软件规划形式的嵌入式体系中,主程序是一个无限循环,单使命次序履行,经过设置一个或多个中止来处理异步事情。这种体系关于简略的运用是能够

的,但关于实时性要求比较高的、处理使命较多的运用,就会暴露出实时性差、体系牢靠性低、安稳性差等缺陷。μC/OS-II 是一个源代码揭露、可移植、可裁剪的实时多任

务操作体系,具有低成本、安稳牢靠、实时性好等长处,是专门针对微处理器和微控制器规划的实时内核,它的内核能够做到很小,很适合在单片机体系上移植。移植了μC/OS-II 的嵌入式体系能够使各个使命独立作业,互不干涉,很简单完成按时并且无误履行,使实时运用程序的规划和扩展变得简单,使运用程序的规划进程大为减化。本

文选用飞思卡尔(Freescale)公司的16 位单片机MC9S12DG128 作为硬件渠道,针对MC9S12DG128 的存储器安排和体系结构,对μC/OS-II 源代码作了相应的改写,终究实

现了μC/OS-II 操作体系在MC9S12DG128 上的移植。经过μC/OS-II 在MC9S12DG128 上的移植,能够把握移植和测验μC/OS-II 的本质内容,一起也很简单将其移植到其它的CPU 渠道上。

2 MC9S12DG128 的体系结构(存储器的安排)

作者以为深刻理解MC9S12DG128 微控制器的体系结构和存储器安排是移植成功的一个关键步骤。MC9S12DG128 是16 位的高性能单片机,它具有极低的电源功耗和可高达

25MHz 的内部总线频率,片内资源包含1KB 的内部寄存器、8KB RAM、128KB FLASH、2KBEEPROM。MC9S12DG128 选用普林斯顿总线结构,程序存储器、数据存储器和I/O 端口为一致编址方法,总的寻址空间为64 KB,但DG128 内部有128KB Flash,明显存储空间超过了S12MCU 可寻址的64KB 空间,因而引入了页面拜访机制,S12CPU 在内存的$8000~$BFFF 这一段开了一个窗口,这里有8 个16KB 的页面(其间$3E 和$3F 有固定地址),能够经过页面寄存器(PPAGE)挑选其间的一页。关于64KB 以外的存储区,运用专用指令CALL 调用子程序,然后经过RTC 指令回来。

微控制器内部不同的存储器占用不同的存储空间,也就是说,不同的地址规模,它们均占有特定的地址空间,这些存储器和内部集成模块的地址分配并不是固定不变的,用户自己能够从头分配,但建不要容易改动默许的映射空间,应直接选用默许地址映射空间。图1 是MC9S12DGl28 复位后的内存空间分配状况。其间,地址$0000~$03FF 为1KB 寄存器空间; $0000~$1FFF 为8KB RAM(可见7KB);$0000~$07FF 为2KBEEPROM(不行见)。


图1 MC9S12DGl28 复位后的内存空间散布状况

能够经过设置INITRG,INITRM,INIteE 寄存器来从头分配各存储器的方位。这些寄存器只能写一次,主张在初始化时分配存储器的方位。假如映射呈现地址堆叠时,S12CPU 内部的优先级控制逻辑会主动屏蔽等级较低的资源,保存等级最高的资源。寄存器具有最高优先级,与其堆叠的RAM 和EEPROM 此刻无效。存储器的优先级如下表所列。

3 μC/OS-II 在MC9S12DG128 上的移植

μC/OS-II 运行时要占用一部分ROM 和RAM 空间,但μC/OS-II 操作体系内核方针代码最小能够裁剪到小于2KB,MC9S12DG128 有8KB 的RAM 存储器和128KB 的Flash 存

储器,所以μC/OS-II 操作体系完全能够移植并运行在MC9S12DG128 上。

μC/OS-II 的95%代码是由ANSI C 写成的,具有很好的移植性。要完成μC/OS-II向S12 的移植,首要是做两方面的作业,一是从头界说内核的巨细和功用;二是为内核编写与硬件相关的代码。μC/OS-II 的文件结构如图2 所示。


图2 μC/OS-II 的文件结构

能够看到,μC/OS-II 与CPU 类型无关的C 代码文件包含许多文件,它们是μC/OS-II的内核和许多功用函数,其间OS_CORE.C、OS_TIME.C 和OS_TASK.C 这三个文件是必定要用的,其他几个文件用于使命间通讯,运用程序中或许只用到其间的几个,不必的能够不包含进去,以防止编译时生成没有代码。这部分代码与CPU 类型无关,在移植时,这些文件一个也不要动。

与CPU 类型有关的代码文件首要有:OS_CFG.H、OS_CPU.H、OS_CPU_A.ASM 和OS_CPUC.C。OS_CFG.H 是装备文件,需求依据运用装备,首要作用是确认用户运用程序运用μC/OS-II 供给的哪些体系功用函数,这个文件移植时要修正。OS_CPU.H 文件界说用于特定CPU 的数据类型、界说相关的宏。OS_CPU_A.ASM 是用汇编言语写的硬件有关的代码,OS_CPUC.C 文件是用C 言语写的与硬件有关的代码。假如移植运用的C 穿插编译东西在C 代码中能够刺进汇编句子,那么在移植中,能够将OS_CPU_A.ASM 合到S_CPUC.C文件中。

3.1 从头界说内核的巨细和功用

公共头文件INCLUDES.H,这个文件会被一切的C 源程序引证。在本例中此文件的代码如下。

#include

#include

#include

#include

#include

#include

#include

前四个头文件是C 函数库、预界说的类型等,和移植没有关系,是否必定要加取决于所用的编译器。后三个头文件有必要被引证,用户能够增加自己的头文件,但必定要放

在最后面。

需求依据运用修正的文件是OS_CFG.H,这个文件用于装备内核的特点。用于设置与微控制器CPU 中心相关的特点,包含各种数据类型对应的存储长度等等。OS_CPU.H 包含了用#define 句子界说的、与处理器相关的常数、宏及类型等。由于不同的处理器有不同的字长,所以μC/OS-II 的移植包含的一系列数据类型界说,以保证其可移植性。μC/OS-II 代码不运用言语中的short,int,及long 等数据类型,由于它们是与编译器相关的,是不行移植的。选用界说的整形数据结构等既是可移植的,又很直观。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/ziliao/sheji/148070.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部