NIOS2隨筆——uCOS-II即時作業系統

來源:互聯網
上載者:User

標籤:ucos-ii   nios2   

1. 概述

本設計採用NIOS2 32位處理器,實現uCOS-II即時作業系統的使用,實現兩個任務同時運行,一個LED閃爍,一個串口列印。硬體平台採用ETree的開發板(某寶提供),如所示:

650) this.width=650;" src="https://s1.51cto.com/wyfs02/M02/A6/8D/wKioL1nS7XvzbilaAADr3SzO-vA834.jpg-wh_500x0-wm_3-wmp_4-s_4288452506.jpg" title="F01.jpg" width="400" height="323" border="0" hspace="0" vspace="0" style="width:400px;height:323px;" alt="wKioL1nS7XvzbilaAADr3SzO-vA834.jpg-wh_50" />

2. uCOS-II簡介

μC/OS 和μC/OS-II 是專門為電腦的嵌入式應用設計的, 絕大部分代碼是用C語言編寫的。

uC/OS-II中最多可以支援64個任務,分別對應優先順序0~63,其中0 為最高優先順序。系統保留了4個最高優先順序的任務和4個最低優先順序的任務,所有使用者可以使用的任務數有56個。

uC/OS-II提供了任務管理的各種函數調用,包括建立任務,刪除任務,改變任務的優先順序,任務掛起和恢複等。

要使uC/OS-II正常運行,處理器必須滿足以下要求:

  • 處理器的C編譯器能產生可重新進入型代碼;

  • 處理器支援中斷,並且能產生定時器中斷;

  • 用C語言可以開/關中斷;

  • 處理器有一定數量的資料存放區器;

  • 處理器有將堆棧指標以及其他CPU寄存器的內容讀出、並儲存到堆棧或記憶體中的指令。

顯然NIOS2處理器符合上述要求,從處理器硬體角度看Nios2需要一定數量的記憶體空間(SDRAM的空間足夠大)、需要一個定時器(添加定時器組件)。

3. Qsys平台搭建

在Qsys平台上添加Interval Timer組件,配置相關參數,如所示。

650) this.width=650;" src="https://s5.51cto.com/wyfs02/M01/07/DC/wKiom1nS7syyOzRjAACB0GUPRxQ001.jpg-wh_500x0-wm_3-wmp_4-s_3402366564.jpg" title="F01_TIMER.jpg" alt="wKiom1nS7syyOzRjAACB0GUPRxQ001.jpg-wh_50" />

添加完Timer組件的Qsys系統如所示。

650) this.width=650;" src="https://s3.51cto.com/wyfs02/M02/07/DC/wKiom1nS7yHhDC4FAAD5RVbGNuY808.jpg" title="F01_TIMER_QSS.jpg" alt="wKiom1nS7yHhDC4FAAD5RVbGNuY808.jpg" />

4. NIOS2軟體設計

建立NIOS SBT工程,輸入軟體工程名‘nios2_ucos’,在project template中選擇‘Hello-MicroC/OS-II’,如所示。

650) this.width=650;" src="https://s3.51cto.com/wyfs02/M00/A6/8D/wKioL1nS71njytQ0AAEVDmO85AA375.jpg" title="F01_ucos.jpg" alt="wKioL1nS71njytQ0AAEVDmO85AA375.jpg" />

軟體設計兩個任務,一個任務使LED每隔一秒閃一次,另一個任務每隔一秒在串口終端列印一次"Hello from task2\n",具體代碼如下:

#include <stdio.h>#include "includes.h"#include <io.h>#include <system.h>/* Definition of Task Stacks */#define   TASK_STACKSIZE       2048OS_STK    task1_stk[TASK_STACKSIZE];OS_STK    task2_stk[TASK_STACKSIZE];/* Definition of Task Priorities */#define TASK1_PRIORITY      1#define TASK2_PRIORITY      2/* Prints "Hello World" and sleeps for three seconds */void task1(void* pdata){  while (1)  {       IOWR(PIO_0_BASE,0,1);         //LED ON      OSTimeDlyHMSM(0, 0, 0, 500);  //hour/minute/second/millisecond      IOWR(PIO_0_BASE,0,0);         //LED OFF      OSTimeDlyHMSM(0, 0, 0, 500);  //hour/minute/second/millisecond  }}/* Prints "Hello World" and sleeps for three seconds */void task2(void* pdata){  while (1)  {     printf("Hello from task2\n");    OSTimeDlyHMSM(0, 0, 1, 0);  }}/* The main function creates two task and starts multi-tasking */int main(void){    OSTaskCreateExt(task1,                  NULL,                  (void *)&task1_stk[TASK_STACKSIZE-1],                  TASK1_PRIORITY,                  TASK1_PRIORITY,                  task1_stk,                  TASK_STACKSIZE,                  NULL,                  0);                 OSTaskCreateExt(task2,                  NULL,                  (void *)&task2_stk[TASK_STACKSIZE-1],                  TASK2_PRIORITY,                  TASK2_PRIORITY,                  task2_stk,                  TASK_STACKSIZE,                  NULL,                  0);  OSStart();  return 0;}

5. 編譯運行

右擊工程nios2_ucos,選擇Build Project。編譯完後,下載FPGA設定檔,再右擊工程nios2_ucos,選擇Run As | Nios II Hardware。FPGA開發板LED每隔一秒閃一次,Nios II Console每隔一秒列印一次“Hello from task2”。

650) this.width=650;" src="https://s2.51cto.com/wyfs02/M01/07/DC/wKiom1nS8H6Sa_AuAAByeZHymrw510.jpg-wh_500x0-wm_3-wmp_4-s_2163378071.jpg" title="F01_ucos.jpg" alt="wKiom1nS8H6Sa_AuAAByeZHymrw510.jpg-wh_50" />



本文出自 “shugenyin的部落格” 部落格,請務必保留此出處http://shugenyin.blog.51cto.com/4259554/1970272

NIOS2隨筆——uCOS-II即時作業系統

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.