- 嵌入式操作系統原理及應用
- 嚴海蓉編著
- 467字
- 2018-12-27 15:16:50
2.3 嵌入式操作系統下載與運行
了解了μCOS-Ⅱ對上以及對下的接口定義后,接著要了解的是移植μCOS目標處理器必須滿足的條件。這些條件包括;
- 處理器的C編譯器能產生可重入代碼,且用C語言就可以打開和關閉中斷。
- 處理器支持中斷,并能產生定時中斷。
- 處理器支持足夠的RAM(幾KB),作為多任務環境下的任務堆棧。
- 處理器有將堆棧指針和其他MCU寄存器讀出和存儲到堆棧或內存中的指令。
前面介紹的Spartan-6的技術特征,以及MicroBlaze軟核的特性,完全可以滿足以上要求。那么下來就要做移植了,所謂的移植就是在理解了處理器和C編譯器的技術細節之后,修改與處理器相關的代碼。具體有如下內容:
- OS_MCU.H中需要設置一個常量來標識堆棧增長方向。
#define OS_STK_GROWTH 1 /*microblaze 堆棧從高向低增長*/
- OS_MCU.H中需要聲明幾個用于開關中斷和任務切換的宏。
#define OS_CRITICAL_METHOD 3 /*采用關中斷定義的第3種 */
#define OS_ENTER_CRITICAL() cpu_sr=OS_CPU_SR_Save();
#define OS_EXIT_CRITICAL() OS_CPU_SR_Restore(cpu_sr);
- OS_MCU.H中需要針對具體處理器的字長重新定義一系列數據類型。
如:typedef unsigned char BOOLEAN;typedef unsigned char INT8U;
- OS_MCU_A.ASM需要改寫4個匯編語言的函數。
包括OSStartHighRdy()、OSCtxSw()、OSIntCtxSw()、OS_CPU_ISR()。
- OS_MCU_C.C需要用C語言編寫6個簡單函數。
包括OSTaskStkInit()、OSInitHookBegin()、OSInitHookEnd()、OSTaskCreateHook()、OSTaskDelHook()、OSTaskIdleHook()、OSTaskStatHook()、OSTaskSwHook()、OSTCBInitHook()、OSTimeTickHook()等。
- 修改主頭文件INCLUDES.H,將前面的三個文件和其他自己的頭文件加入。
推薦閱讀
- Big Data Analytics with Hadoop 3
- 過程控制工程及仿真
- 蕩胸生層云:C語言開發修行實錄
- 基于32位ColdFire構建嵌入式系統
- 精通數據科學算法
- Apache Superset Quick Start Guide
- Building a BeagleBone Black Super Cluster
- Mastering GitLab 12
- PLC與變頻技術應用
- The DevOps 2.1 Toolkit:Docker Swarm
- Photoshop CS4數碼攝影處理50例
- MySQL Management and Administration with Navicat
- 當產品經理遇到人工智能
- Arduino創意機器人入門:基于Mind+
- Mastering Microsoft Dynamics 365 Customer Engagement