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學習筆記(二)UCOSII與UCOSIII在F4上的移植
要想學習一個作業系統,最先要做的當然是移植了,把它移植到你的板子上,然後寫寫程式,讀讀原始碼,慢慢去吃透這個OS。 今天我就記錄下UCOSII機UCOSIII在F4上的移植。 UCOSII 我在學習32時,一直學習的都是原子的暫存器版本的資料,所以說在移植時我也是優先向
HTML5學習筆記(二)視訊與音訊處理
一、<video> 1、<video>是H5的新標籤,用來處理視訊,在此之前,各網站用來處理視訊一直使用flash技術 flash的缺點有以下幾方面,首先原生瀏覽器原生不支援,需要外掛,其次過多的使用會導致網站效能變差,最後就是
OpenLayers學習筆記(二)— QML與HTML通訊之畫圖
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流學習筆記(二)之BufferedWriter與BufferedReader及例項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經驗誤差與過擬合 錯誤率:分類錯誤的樣本數
JFinal與Qui學習筆記(二)
Qui是一套網頁框架,效果不錯,不過剛剛接觸,難度還是非常大的!完全是新手,這不,到前10分鐘才完成一個簡單的使用者登入。 之前說的JFinal這裡要補充一下:玩了這麼久,底層的東西雖然都不知道,但是基本會用吧,自認為。。呵呵。 工作環境:myeclipse9,tomca