久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 21353|回復: 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, 下載次數: 223)


評分

參與人數 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 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲精品女人久久久 | 日韩精品一区二区三区 | 国产成人福利在线观看 | 羞羞在线视频 | 亚洲三级在线观看 | 日韩精品免费一区 | 久久久精品国产 | 亚洲国产成人av | 一区二区三区国产 | 亚洲免费精品 | 欧美99| 国产精品久久久久一区二区三区 | 在线观看av不卡 | 日韩免费av | 国产99免费 | 成人福利在线 | 欧美精品一区二区免费视频 | 欧美日韩中 | 亚洲欧美日韩在线不卡 | 一本久久a久久精品亚洲 | 久草在线 | 亚洲网站在线观看 | 亚洲毛片 | 欧美在线视频观看 | 国产精品高潮呻吟久久 | 日韩精品一区二区三区高清免费 | 久久艹免费视频 | 国产精品久久久久久婷婷天堂 | 拍拍无遮挡人做人爱视频免费观看 | 欧产日产国产精品视频 | 亚洲区一区二 | 久久久精品影院 | 欧美综合一区二区三区 | 在线看亚洲 | 国产午夜精品一区二区三区嫩草 | 99精品免费久久久久久久久日本 | 有码在线| 亚洲一区二区精品视频 | 亚洲国产成人在线 | 欧美一级在线观看 | 91av在线影院 |