1. 程式人生 > >UCOS學習筆記(二)UCOSII與UCOSIII在F4上的移植

UCOS學習筆記(二)UCOSII與UCOSIII在F4上的移植

要想學習一個作業系統,最先要做的當然是移植了,把它移植到你的板子上,然後寫寫程式,讀讀原始碼,慢慢去吃透這個OS。

今天我就記錄下UCOSII機UCOSIII在F4上的移植。

UCOSII

我在學習32時,一直學習的都是原子的暫存器版本的資料,所以說在移植時我也是優先向在暫存器例程上移植UCOS,但是,在移植UCOSII時我確實是成功了,在移植III的時候並沒有搞出來,我最終還是移植到了庫函式的例程下,以後我會再嘗試在暫存器的例程下移植。

移植步驟(暫存器版本):

0、找一個基礎工程,我選用的是跑馬燈例程

 1、新建資料夾,三個:CONFIG、CORE、PORT
 2、向CORE資料夾新增檔案:原始碼
3、向CONFIG新增檔案:找移植好的複製
4、向PORT新增檔案:找移植好的複製
5、將原始碼新增到工程中,CORE中要刪掉UCOS_II_C, PORT新增: 
os_cpu.h,os_cpu_a.asm,os_cpu_c.c,CONFIG 新增倆個.h
(帶鎖只讀,去鎖屬性去掉只讀)
新增標頭檔案路徑
編譯找問題
PendSV 上下文切換,註釋掉UCOS中的(暫存器版本不需要

6、修改sys.h支援OS
註釋it.c中滴答定時器的函式(暫存器版本不需要

 7、開啟FPU: 在Define中加入:__FPU _USED=1(暫存器版本不需要

 8、複製一個main.c過來看看效果

    CONFIG中檔案的用途:
        includes.h:包含一些標頭檔案
        **os_cfg.h:UCOS II配置檔案
    PORT中檔案的用途:
        os_cpu.h:標頭檔案
        os_cpu_a.asm:彙編檔案,完成任務切換
        os_cpu_c.c:與CPU相關檔案,移植時需要修改
        os_dgb.c:除錯相關檔案
        os_dgb_r.c:除錯相關檔案

完成以上步驟就完成了UCOSII的移植,說實話每個檔案的作用,它的原始碼我完全沒有讀過,但是對於一個剛接觸RTOS的新人來說,不要一下就撲到原始碼裡,更重要的是先學會怎麼用,然後再讀原始碼學原理。

UCOSII檔案結構:

UCOSIII

上面說到我並沒有搞定UCOSIII在暫存器例程下的移植,所以說,這個的移植是基於庫函式例程的。

移植步驟(庫函式版本):

0、找一個基礎工程,我選用的是跑馬燈例程

 1、新建資料夾:UCOSIII
2、新增拷貝三個CPU、LIB、III
再新建兩個,BSP,CONFIG
 BSP:bsp.c  bsp.h
 CONFIG:8個檔案
3、向工程中新增分組--6個
新增檔案、標頭檔案路徑
4、修改bsp.c   bsp.h
5、修改os_cpu_c.asm
6、修改os_cpu_c.c
7、修改os_cfg_app.h  遮蔽os_cpu_c.c中關於FPU堆疊的程式碼
 8、修改sys.h   支援ucos  註釋掉it.c中滴答定時器的中斷函式
9、編寫main.c

注:以上的修改檔案,作為初學者建議從已有例程中複製,自己編寫難度極大

完成以上步驟就完成了UCOSIII的移植,在以後的部落格中我會詳細記錄我學習UCOSIII的歷程。

相關推薦

UCOS學習筆記UCOSIIUCOSIII在F4移植

要想學習一個作業系統,最先要做的當然是移植了,把它移植到你的板子上,然後寫寫程式,讀讀原始碼,慢慢去吃透這個OS。 今天我就記錄下UCOSII機UCOSIII在F4上的移植。 UCOSII 我在學習32時,一直學習的都是原子的暫存器版本的資料,所以說在移植時我也是優先向

HTML5學習筆記視訊音訊處理

一、<video>  1、<video>是H5的新標籤,用來處理視訊,在此之前,各網站用來處理視訊一直使用flash技術     flash的缺點有以下幾方面,首先原生瀏覽器原生不支援,需要外掛,其次過多的使用會導致網站效能變差,最後就是

OpenLayers學習筆記— QMLHTML通訊之畫圖

QML與 HTML通訊—實現QML中點選功能按鈕在地圖上畫圖 作者: 狐狸家的魚 Github: 八至  一、HTML-map  var drarGraphic; var drawType;function

laravel學習筆記路由檢視

laravel中檢視的用途是用來存放應用程式中HTML內容,並且能夠將你的控制器層(或應用邏輯層)與展現層分開。檢視檔案目錄為 resources/views ,示例檢視如下: 1、檔名:檢視名.blade.php 2、獲取檢視對應的html內容: return view('資料夾.檢視名');

C++學習筆記——構造析構

建構函式:在建立物件時執行的函式 特性: 1.建構函式與類名相同 2.建構函式無返回型別(必須沒有) 3.建立物件時被呼叫(類似於初始化) 4.建構函式可以有引數(建立時直接傳入) 形如:A(); 以下是一個建構函式的例子: #include <s

thinkphp5.0學習筆記API後臺處理命名空間

mac code 輸入 -1 pub 基礎 select() color 第一個 命名空間 先來看命名空間吧; 命名空間是學習TP的基礎, <?php namespace app\lian\c1; class yi{ public $obj = "這是第一個

SOC中的DFT和BIST對比比較-IC學習筆記

獨立 讀取 c學習 連接 特殊 客戶服務 bsp design 來源 ATE:ATE是Automatic Test Equipment的縮寫,根據客戶的測試要求、圖紙及參考方案,采用MCU、PLC、PC基於VB、VC開發平臺,利用TestStand&LabV

模式識別機器學習筆記機器學習的基礎理論

機器學習是一門對數學有很高要求的學科,在正式開始學習之前,我們需要掌握一定的數學理論,主要包括概率論、決策論、資訊理論。 一、極大似然估計(Maximam Likelihood Estimation,MLE ) 在瞭解極大似然估計之前,我們首先要明確什麼是似然函式(likelihoo

React 學習筆記 事件、約束非約束性元件

事件物件 方法一 方法二 方法三 表單取值 鍵盤事件 react實現雙向資料繫結 約束性元件和非約束性元件 非約束性元件 defaultValue:<input type="text" defaultValue=‘111’/>

IO流學習筆記之BufferedWriterBufferedReader及例項Demo

在之前的學習筆記(http://blog.csdn.net/megustas_jjc/article/details/72853059)中,FileWriter與FileReader的Demo使用的中轉資料buf實際就是緩衝區,是由我們自己建立的。 緩衝區可以提高效率,Java對緩衝區進行了封裝,封裝成了物

C++學習筆記:開啟檔案、讀取資料、資料定位資料寫入

1.開啟二進位制檔案(fopen)、讀取資料(fread),應用示例如下: FILE *fp = fopen("data.yuv", "rb+"); //開啟當前目錄中的data.yuv檔案 char *buffer = ( char*) malloc (sizeof(char)*FrameSi

實變函式泛函數分析學習筆記:賦範線性空間

導語:現代數學入門的鑰匙就是實變函式與泛函數分析。數學,物理學,計算機學科,神經生物學相互交叉構成了AI的基礎。深入研究AI,尤其是神經規則推理以及下一代AI技術,必須修煉好內功。非數學專業的學生,可能學過傅立葉變換,方向導數與梯度這些。但是對這些概念的理解還需要繼續深入,除

《資料結構演算法 python語言描述》學習筆記————抽象資料型別和Python類

第一部分:學習內容概要 抽象資料型別 Python的類 第二部分:學習筆記 抽象資料型別   1.抽象資料型別(Abstract Data Type,ADT),通過一套介面闡述說明這一程式部分的可用功能,但不不限制功能的實現方法。      2.抽象資料型

java學習筆記--物件程式設計-類方法

面向過程-程式設計正規化-c-行為 面向物件-能進行現實生活的抽象 面向介面程式設計 面向切面程式設計 函數語言程式設計正規化 -Scala,Koltin //lamdba表示式 ()-> { } 面向物件三大特徵: a.封裝        將客觀事物

影象處理分析岡薩雷斯第二版學習筆記

第二章,數字影象基礎 1,人眼視覺原理? 眼球適當聚焦,眼睛外部的光在視網膜上成像。視網膜表面的光接收器:錐狀體和桿狀體。每隻眼睛的錐狀體數目在600萬到700萬之間,主要位於視網膜中間部分,被稱為中央凹(大概1.5mm凹坑相當於1.5*1.5的方形感測器陣列),對顏色敏感度很高,可以充

PyTorch 學習筆記:PyTorch的資料增強資料標準化

本文擷取自《PyTorch 模型訓練實用教程》,獲取全文pdf請點選:https://github.com/tensor-yu/PyTorch_Tutorial 文章目錄 transform的使用 在實際應用過程中,我們會在資

應用統計學R語言實現學習筆記——資料收集

Chapter 2 Data Collection 本篇是第二章,內容是資料收集。 1.資料來源 做科學研究離不開資料,而資料的來源有哪些呢? 這裡比較簡單地將資料來源分為兩類:直接(一手)資料和間接(二手)資料。 直接資料的資料獲取來源包括

《MySQL必知必會》學習筆記、MySQL資料庫中資料的檢索搜尋

一、對檢索結果排序 1.1 簡單排序 在MySQL中使用ORDER BY子句對檢索出的資料進行排序,而且預設為遞增排序。若想以遞減方式排序,需要在排列資料後面加上DESC關鍵字。利用《MySQL必知必會》中的資料表,實驗如下: SELE

機器學習學習筆記-模型選擇評估

緒論 模型評估與選擇(3) 線性模型 決策樹 神經網路 支援向量機 貝葉斯分類 整合學習 聚類 降維與度量學習 特徵選擇與稀疏學習 計算學習理論 半監督學習 概率圖模型 規則學習 強化學習 模型評估與選擇 2.1經驗誤差與過擬合 錯誤率:分類錯誤的樣本數

JFinalQui學習筆記

Qui是一套網頁框架,效果不錯,不過剛剛接觸,難度還是非常大的!完全是新手,這不,到前10分鐘才完成一個簡單的使用者登入。 之前說的JFinal這裡要補充一下:玩了這麼久,底層的東西雖然都不知道,但是基本會用吧,自認為。。呵呵。 工作環境:myeclipse9,tomca