找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 19506|回复: 4
打印 上一主题 下一主题
收起左侧

为你的51单片机移植上实时操作系统RTOS吧(蹄牛操作系统)

  [复制链接]
跳转到指定楼层
楼主
ID:287456 发表于 2018-3-4 15:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
蹄牛操作系统 TINIUX在 MCS‐51单片机上的移植开发
——使用STC8A8K64S4A12芯片

1. 概述

蹄牛操作系统 TINIUX 是一个源代码开放的、易于移植的、面向嵌入式应用的实时操作系统 (RTOS),具有轻量级、低功耗、启动快、可裁剪、可分散加载等优点。主要应用领域为工业 控制,智能传感器开发,智能终端,物联网,机器人等。

TINIUX 遵循 MIT 开源许可协议,可以免费在商业产品中使用,不需要公布应用源码,没有 任何潜在商业风险。

目前在 Github 上已开源的 TINIUX 源码已适配好 MCS‐51 系列下的 8051 与 8052 芯片架构, 官方网站上wwwtiniuxorg提供了不同芯片类型在 Code::Blocks 等平台上的示例工 程,如果您使用的芯片(开发板)未在其中,可以参照本文档从零开始创建自己的开发工程, 并验证移植的结果。

2 环境准备
基于 TINIUX 开发前,我们首先需要准备好单板运行的环境,包括软件环境和硬件环境。 硬件环境:

所需硬件
描述
开发板
基于 MCS‐51 系列下的 8051 或 8052 芯片架构的开发板。
PC
用于编译、加载并调试镜像。
电源
开发板供电。



软件环境:

软件
描述
Window 7操作系统
安装 Code::Blocks,SDCC 和相关调试驱动的操作系统。
Code::Blocks(17.12
以上版本)
C/C++语言的软件集成开发环境,便于软件工程化开发与管理。
SDCC(3.6以上版本)
用于编译、链接并生成目标芯片上的可执行文件。



说明

Code::Blocks是一个开放源码的全功能的跨平台 C/C++集成开发环境。 Code::Blocks 是开放 源码软件,由纯粹的 C++语言开发完成,它使用了著名的图形界面库 wxWidgets 版。 下载网址:http://www.codeblocks.org/downloads
一般使用选择 binary release 版本即可,推荐下载 codeblocks‐17.12mingw‐setup.exe 安装包。


SDCC(Small Device C Compiler)是一个优化的 ANSI ‐ C 交叉编译器,目标 CPU 为基于 Intel 8051, Maxim 80DS390, Zilog Z80 和Motorola 68HC08 的单片机。 下载网址:http://sdcc.sourceforge.net/snap.php
用户可以根据自己的 PC 操作系统决定下载的版本,我们此次试验使用的版本为 Supported
Windows ‐ x86 Binaries 安装版。


3 获取 TINIUX源码


首先下载 TINIUX 开发包,步骤如下:



‐ 点击“clone or download”按钮,下载最新版源代码,或者通过点击“releases”标签,下 载官方给出的稳定版本。

代码树中各个目录存放的相关内容如下所示


‐ Doc: 此目录存放的是蹄牛操作系统 TINIUX 的简明教程和 API 使用说明等文档。
‐ Kernel:此目录存放的是与平台无关的内核代码,包含核心提供给外部调用的接口的头文 件以及内核中进程调度、进程通信、内存管理等等功能的核心代码。用户一般不需要修改此 目录下的相关内容。
‐ CPU:此目录以及以下目录存放的是与体系架构紧密相关的适配 TINIUX 的代码。比如目前 我们适配了mcs51/8051,mcs51/8052 等系列对应的初始化内容。用户只需要根据所使用的 芯片类型及开发平台选择对应的代码文件即可。
‐ Preset:此目录存放蹄牛操作系统 TINIUX 的预设参数示例,用户可根据芯片类型进行调整 修改。

获取 TINIUX 源代码之后,我们就可以开始创建自己的 project 开发工程了。



4 创建 TINIUX工程


4.1 创建工程


在安装好 Code::Blocks 等开发工具后,我们使用 Code::Blocks 集成开发环境创建 TINIUX 工程, 步骤如下:

‐ 打开 Code::Blocks, 然后点击 file‐>new‐>project...创建一个新的工程




‐ 弹出窗口为用户提供了各类工程开发模板,此处我们选择 MCS51 Project 模板,如下图所 示。



‐ 点击 go 后,出现工程设置对话框,此处我们输入工程名称为 TiniuxDemo,并选择工程的
文件路径,如下图所示。



‐ 点击 next 后,对编译工具进行选择,在 Compiler 选项我们选择 Small Device C Compiler,
其它项采用默认设置即可。如下图所示。



‐ 点击 next 后,对芯片内存大小进行配置,此处需要参照对应的芯片手册。由于要使用实
时操作系统 TINIUX,占用的 memory 空间稍大,在 memory model 项,我们采用 large 模式。 在输出模式项,选择 CreateIntel hex file,让工程编译后生成可以直接烧写到芯片中的文件。 如下图所示。



‐ 点击 finish 之后,一个空的工程即建立完成,新创建完毕的空软件工程如下所示。



完成上面的配置之后,可以将内核源代码添加到工程中。


4.2 添加 kernel代码到工程

‐ 将从 Github 下载的 TINIUX 软件包(最新版软件包 TINIUX‐master.zip 或官方稳定版软件包 TINIUX‐ReleaseV2.0.0.zip)解压,把解压后的文件夹更名为 TINIUX,并复制到工程所在的文 件夹,如本例程的 TiniuxDemo 文件夹下。

‐ 在工程树目录中,点击右键,在弹出菜单中点击 Add files recursively … 为工程添加 TINIUX
系统文件。



‐ 在弹出的对话框中选择对应的芯片文件,如本例程中的 TINIUX/CPU/MCS51/SDCC/8051, 如下图所示:



‐ 点击按钮“确定”后,弹出对话框,则直接点击“OK”即把 8051 文件夹下对应的文件加
载到工程中。


‐ 采用同样的方式加载 TINIUX/Kernel 下对应的文件,加载 TINIUX/Preset/MCS51/8051 下对应 的文件。添加完毕后,工程目录中包含文件如下图所示:



‐ 对应的头文件如下图所示:




4.3 配置工程属性

‐ 把蹄牛操作系统 TINIUX  中对应的文件加载到工程后,需要为工程(编译器)指定文件所 在的目录,以便编译时能找到对应的头文件。通过菜单 Project‐>Build options…进行设置。如 下图所示:



‐ 在弹出对话框中,选择 Search directories 对应的 tab 页面,通过“Add”按钮添加相关文件
所在的路径。



需要添加的文件路径包括: TINIUX\CPU\MCS51\SDCC\8051; TINIUX\Kernel; TINIUX\Preset\MCS51\8051;

..\TiniuxDemo;


‐ 添加过程中提示是否使用相对路径,点击“是”即可。添加完毕之后,所加的路径如下图 所示:



添加完毕之后,点击按钮“OK”即可;
‐ 根据芯片类型,调整默认包含的头文件 需要调整的头文件有两处,一处为 OSPreset.h 文件,一处为main.c 文件;
在 OSPreset.h 文件中,
把#include <mcs51/8052.h>调整为#include "stc8.h"
在 main.c 文件中,
把#include <mcs51/8051.h>调整为#include "stc8.h"


注:头文件 stc8.h 为 SDCC 编译平台下对应的头文件,在示例工程中会附带此文件,用户可 以参考使用。



4.4 验证移植后的工程



‐ 配置完工程后,即可通过菜单 Build‐>Build 进行编译,或者通过 Ctrl‐F9 快捷键进行编译, 如下图所示:



编译完成后,若提示无错误,同时在文件夹 TiniuxDemo/bin/Debug 生产“TiniuxDemo.omf”
与“TiniuxDemo.hex”文件,则移植蹄牛操作系统 TINIUX 成功,此时产生的“TiniuxDemo.hex” 则可以通过相关工具直接烧写进目标芯片中使用。

若编译失败,则需按照编译器的提示信息进行对应的调整。



5 使用 TINIUX开发


TINIUX 中提供的功能包括如下内容: 任务创建与删除、任务同步(信号量、互斥锁)、动态 中断注册机制等等内容,更详细的内容可以参考“蹄牛操作系统 TINIUX 简明教程”中描述 的相关内容。下面章节将对任务和中断进行说明。



5.1 创建任务


‐ 用户使用 OSTaskCreate(...)等接口函数来进行任务的创建。具体可以参考《蹄牛操作系统
TINIUX 简明教程》中的使用方法来创建管理任务。


5.2 系统 tick中断配置修改

芯片运行时钟频率(主频)也是通过预置文件“OSPreset.h ”来配置的,其宏定义为
SETOS_CPU_CLOCK_HZ,在示例工程中,C8051F120 支持倍频功能,我们使用倍频之后的运
行频率,即 98MHz,同时定时器使用 CPU 运行频率的 12 分频,即 8MHz;


TINIUX 操作系统 ticks 运行频率通过预置文件“OSPreset.h”中的宏定义 SETOS_TICK_RATE_HZ 来配置。在系统启动时,通过 FitCPU.c 文件中的 FitSetupTimerInterrupt()函数,配置芯片指 定的寄存器,使系统时钟(中断)参数生效;


注:在官方示例中,我们通常配置 ticks 频率为 1000Hz,这个 ticks 频率主要便于对系统的性 能测试;对于运行主频不高的 MCS‐51 单片机系列,适当降低 TINIUX 系统 ticks 频率,运行 效率会更高。

5.3 TINIUX资源配置


‐对于嵌入式系统来说,内存都是比较宝贵的资源,因此一般的程序都会严格管理内存使用, TINIUX 也一样,需要使用多大的内存,可以根据实际的 task 数量、信号量、互斥锁、timer、 消息队列、链表等内容的数量来决定的(根据各自的结构体大小以及数量计算),总的内存 池的大小由系统宏定义 OSTOTAL_HEAP_SIZE 来确定。


‐TINIUX 中的内存使用可以通过参数预置文件“OSPreset.h”进行配置。在系统预置文件中使 用宏定义SETOS_TOTAL_HEAP_SIZE 来确定内存池的大小,并以此来管理任务、信号量、消息 队列等等资源的创建。


‐对于 MCS‐51 单片机,运行效率高的 RAM 空间一般在 256 字节,扩展的 XRAM 空间会稍大, TINIUX 系统在启动时,处于挂起及休眠状态的任务或分配到 XRAM 空间,只有当前运行的任 务会分配到 RAM 空间。同时为了减少对 XRAM 空间的占用,推荐裁剪掉信号量、互斥锁、 timer、消息队列等功能模块,只启用系统内轻量级的同步信号与同步消息功能。

6 移植其他内核的芯片


‐ 目前 TINIUX 官方已经支持 MCS‐51/8051 8052 等系列的芯片,用户若需移植 TINIUX 到其他 内核的芯片时,需要在 CPU下添加一个芯片所属系列的目录,并且在该新增加的目录下添 加 FitType.h、FitCPU.h、FitCPU.c 等文件,或根据开发平台(SDCC,keil,IAR 等)的要求, 添加相应的汇编文件。FitType.h 文件主要根据平台的特点定义 TINIUX 系统的数据类型, FitCPU.c 文件主要定义系统 ticks 中断,SVC 中断,中断锁定,task 调度及调度时寄存器的保 存与恢复等。


‐ 目前 TINIUX 官方适配了 MCS‐51/8051 8052 等系列的芯片移植文件,其中 8051 系列的移植 文件使用了传统 51 定时器Timer0 的模式 1,具有 16 位宽,但无法自动重载,系统会自动 根据 ticks 频率设置 timer0 重载起点。此种定时器模式的优点是适用于大多数 51/52 等系列 的单片机,但是会导致系统时间漂移。目前很多芯片生产厂商都优化了 Timer0 的功能,若 具有 16 位宽并且具有自动重载的模式,建议用户配置使用,或者使用其他 Timer 定时器。

‐ 目前 TINIUX 官方提供的 8052 芯片移植文件使用了 52 单片机中标准的 Timer2 定时器,具有 16 位宽,并且具备自动重载功能,这样系统 ticks 精度会更高;只是在配置 Timer2 时使用了 C8051 等芯片特有的寄存器“SFRPAGE”,若用户使用的平台具有 52 单片机标准的 Timer2定时器,却没有“SFRPAGE”寄存器,则可以直接注释掉对该寄存器的配置再使用。



7 其他说明

‐ 对于 RAM 较小的芯片,请参照参数预置文件“OSPreset.h”中的注释进行适当调整,通过 宏定义关闭不必要的功能模块,否则有可能会出现编译失败的问题。

‐ TINIUX 官方网站提供了一些已经创建好了的示例工程,移植到新的开发板(芯片)时可参考 这些示例工程。

完整的pdf格式文档51黑下载地址:
蹄牛操作系统TINIUX在MCS-51单片机上的移植开发_STC8.pdf (1.46 MB, 下载次数: 222)


评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏11 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:20672 发表于 2018-7-24 20:02 | 只看该作者
不错不错~!!!
回复

使用道具 举报

板凳
ID:399691 发表于 2018-9-18 20:06 | 只看该作者
非常实用的一个操作系统
回复

使用道具 举报

地板
ID:638495 发表于 2020-6-28 10:38 | 只看该作者
江洲蒲 发表于 2018-9-18 20:06
非常实用的一个操作系统

keil可以用不?
回复

使用道具 举报

5#
ID:87631 发表于 2021-10-6 20:05 | 只看该作者
这个系统好像没有维护了吧
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表