日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

NIOS2随笔——uCOS-II实时操作系统

發(fā)布時(shí)間:2025/3/8 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 NIOS2随笔——uCOS-II实时操作系统 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1. 概述

本設(shè)計(jì)采用NIOS2 32位處理器,實(shí)現(xiàn)uCOS-II實(shí)時(shí)操作系統(tǒng)的使用,實(shí)現(xiàn)兩個(gè)任務(wù)同時(shí)運(yùn)行,一個(gè)LED閃爍,一個(gè)串口打印。硬件平臺(tái)采用ETree的開發(fā)板(某寶提供),如下圖所示:

2. uCOS-II簡介

μC/OS 和μC/OS-II 是專門為計(jì)算機(jī)的嵌入式應(yīng)用設(shè)計(jì)的, 絕大部分代碼是用C語言編寫的。

uC/OS-II中最多可以支持64個(gè)任務(wù),分別對(duì)應(yīng)優(yōu)先級(jí)0~63,其中0 為最高優(yōu)先級(jí)。系統(tǒng)保留了4個(gè)最高優(yōu)先級(jí)的任務(wù)和4個(gè)最低優(yōu)先級(jí)的任務(wù),所有用戶可以使用的任務(wù)數(shù)有56個(gè)。

uC/OS-II提供了任務(wù)管理的各種函數(shù)調(diào)用,包括創(chuàng)建任務(wù),刪除任務(wù),改變?nèi)蝿?wù)的優(yōu)先級(jí),任務(wù)掛起和恢復(fù)等。

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

  • 處理器的C編譯器能產(chǎn)生可重入型代碼;

  • 處理器支持中斷,并且能產(chǎn)生定時(shí)器中斷;

  • 用C語言可以開/關(guān)中斷;

  • 處理器有一定數(shù)量的數(shù)據(jù)存儲(chǔ)器;

  • 處理器有將堆棧指針以及其他CPU寄存器的內(nèi)容讀出、并存儲(chǔ)到堆棧或內(nèi)存中的指令。

顯然NIOS2處理器符合上述要求,從處理器硬件角度看Nios2需要一定數(shù)量的內(nèi)存空間(SDRAM的空間足夠大)、需要一個(gè)定時(shí)器(添加定時(shí)器組件)。

3. Qsys平臺(tái)搭建

在Qsys平臺(tái)上添加Interval Timer組件,配置相關(guān)參數(shù),如下圖所示。

添加完Timer組件的Qsys系統(tǒng)如下圖所示。

4. NIOS2軟件設(shè)計(jì)

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

軟件設(shè)計(jì)兩個(gè)任務(wù),一個(gè)任務(wù)使LED每隔一秒閃一次,另一個(gè)任務(wù)每隔一秒在串口終端打印一次"Hello from task2\n",具體代碼如下:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 #include?<stdio.h> #include?"includes.h" #include?<io.h> #include?<system.h> /*?Definition?of?Task?Stacks?*/ #define???TASK_STACKSIZE???????2048 OS_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. 編譯運(yùn)行

右擊工程nios2_ucos,選擇Build Project。編譯完后,下載FPGA配置文件,再右擊工程nios2_ucos,選擇Run As | Nios II Hardware。FPGA開發(fā)板LED每隔一秒閃一次,Nios II Console每隔一秒打印一次“Hello from task2”。


本文轉(zhuǎn)自 shugenyin 51CTO博客,原文鏈接:http://blog.51cto.com/shugenyin/1970272


與50位技術(shù)專家面對(duì)面20年技術(shù)見證,附贈(zèng)技術(shù)全景圖

總結(jié)

以上是生活随笔為你收集整理的NIOS2随笔——uCOS-II实时操作系统的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。