RM新时代网站-首页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

蜂鳥FPGA開發(fā)板及蜂鳥JTAG下載器講解說明:移植FreeRTOS

HOkf_real_farme ? 來源:lq ? 2019-01-02 15:06 ? 次閱讀

1 RTOS 簡述

實時操作系統(tǒng)(RTOS)是指當(dāng)外界事件或者數(shù)據(jù)產(chǎn)生時,能夠接受并以足夠快的速度予以處理,處理的結(jié)果又能在規(guī)定的時間內(nèi)來控制生產(chǎn)過程或?qū)μ幚硐到y(tǒng)能夠做出快速響應(yīng),調(diào)度一切可利用的資源完成實時任務(wù),并控制所有實時任務(wù)協(xié)調(diào)一致運行的操作系統(tǒng)。主要特點是提供及時響應(yīng)和考可靠性。

在服務(wù)器、個人電腦、手機上運行的操作系統(tǒng),譬如Windows和Linux,強調(diào)在一處理器上能運行更多任務(wù)。此類操作系統(tǒng)的代碼均具有一定規(guī)模,并且不一定能保證實時性。而對于處理器硬件資源有限,對實時性又有特殊要求的嵌入式應(yīng)用領(lǐng)域,就需要一種代碼規(guī)模適中,實時性好的操作系統(tǒng)。

實時性可以分為硬實時和軟實時。硬實時的功能是必須在給定時間內(nèi)完成操作,如果不能完成將可能導(dǎo)致嚴(yán)重后果。比如汽車安全氣囊觸發(fā)機制就是一個很好的硬實時的例子,在撞擊后安全氣囊必須在給定時間內(nèi)彈出,如果響應(yīng)時間超出給定時間,可能使駕駛員受到嚴(yán)重傷害。

對于軟實時,一個典型的實例是IPTV數(shù)字電視機頂盒,需要實時的解碼視頻流,如果丟失了一個或幾個視頻幀,視頻品質(zhì)也不會相差多少。軟實時系統(tǒng)從統(tǒng)計角度來說,一個任務(wù)有確定的執(zhí)行時間,事件在截止時間到來之前也能得到處理,即使違反截止時間也不會帶來致命的錯誤。

2 常用實時操作系統(tǒng)概述

常用的實時操作系統(tǒng)(RTOS)有以下幾種:FreeRTOS、VxWorks、uc/os-II、uclinuxeCos、RT-Thread和SylixOS等。下面分別對這幾種RTOS進行介紹說明。

SylixOS:

— — 翼輝SylixOS實時操作系統(tǒng)是一款功能全面、穩(wěn)定可靠、易于開發(fā)的國產(chǎn)實時系統(tǒng)平臺。其解決方案覆蓋網(wǎng)絡(luò)設(shè)備、國防安全、工業(yè)自動化、軌道交通、電力、醫(yī)療、航空航天等諸多領(lǐng)域。SylixOS是國內(nèi)唯一一款支持SMP的大型實時操作系統(tǒng)。翼輝開發(fā)嵌入式操作系統(tǒng)SylixOS始于2006年,至今在軍工領(lǐng)域已有眾多項目或產(chǎn)品基于SylixOS進行開發(fā),例如雷達(dá)、彈載飛控系統(tǒng)、星載任務(wù)計算機、機載火控系統(tǒng)、計重收費與超限檢測儀、火災(zāi)報警系統(tǒng)、特種車輛與船用發(fā)動機狀態(tài)顯示器、潛艇蓄電池監(jiān)控系統(tǒng)、輪式裝甲車實時監(jiān)控系統(tǒng)等,其中大部分產(chǎn)品都要求7*24小時不間斷運行,當(dāng)前很多SylixOS系統(tǒng)節(jié)點已不間斷運行超過5萬小時(6年)。

RT-Thread:

— — RT-Thread是一款主要由中國開源社區(qū)主導(dǎo)開發(fā)的開源實時操作系統(tǒng)(許可證GPLv2)。實時線程操作系統(tǒng)不僅是一個單一的實時操作系統(tǒng)內(nèi)核,它也是一個完整的應(yīng)用系統(tǒng),包含了實時、嵌入式系統(tǒng)相關(guān)的各個組件:TCP/IP協(xié)議棧、文件系統(tǒng)、libc接口、圖形用戶界面等。RT-Thread擁有良好的軟件生態(tài),支持市面上所有主流的編譯工具如GCC、Keil、IAR等,工具鏈完善、友好,支持各類標(biāo)準(zhǔn)接口,如POSIX、CMSIS、C++應(yīng)用環(huán)境、Javascript執(zhí)行環(huán)境等,方便開發(fā)者移植各類應(yīng)用程序。商用支持所有主流MCU架構(gòu),如ARMCortex-M/R/A、MIPS、X86、Xtensa、Andes、C-Sky、RISC-V,幾乎支持市場上所有主流的MCU和Wi-Fi芯片

FreeRTOS:— —有關(guān)FreeRTOS見第3章。

VxWorks:

— — 由美國WindRiver公司于1983年推出的一款實時操作系統(tǒng)。由于其良好的持續(xù)發(fā)展能力,高性能內(nèi)核以及友好的開發(fā)環(huán)境,因此在嵌入式系統(tǒng)領(lǐng)域占有一席之地。VxWorks由400多個相對獨立、短小精悍的目標(biāo)模塊組成,用戶可根據(jù)需要進行配置和裁剪,在通信、軍事、航天、航空等領(lǐng)域應(yīng)用廣泛。

uc/os-II:

— —前身是uc/os,最早由1992年美國嵌入式專家Jean J.Labrosse在《嵌入式系統(tǒng)編程》雜志上發(fā)表,其主要特點有公開源代碼,代碼結(jié)構(gòu)清晰明了,注釋詳盡,組織有條理,可移植性好,可裁剪,可固化。

Uclinux:

— — 是由Lineo公司主推的開放源代碼的操作系統(tǒng),主要針對目標(biāo)處理器沒有存儲管理單元的嵌入式系統(tǒng)而設(shè)計的。Uclinux從Linux2.0/2.4內(nèi)核派生而來,擁有Linux的絕大部分特性,通常用于內(nèi)存很少的嵌入式操作系統(tǒng)。其主要特點有體積小、穩(wěn)定、良好的移植性、優(yōu)秀的網(wǎng)絡(luò)功能等。

eCos:

— — 含義為嵌入式可配置操作系統(tǒng),主要用于消費電子、電信、車載設(shè)備、手持設(shè)備等低成本和便攜式應(yīng)用。其最顯著的特點為可配置性,可以在源碼級別實現(xiàn)對系統(tǒng)的配置和裁剪,還可安裝第三方組件擴展系統(tǒng)功能。

3 FreeRTOS 簡介

由于RTOS需要占用一定系統(tǒng)資源,只有少數(shù)RTOS支持在小內(nèi)存的MCU上運行,F(xiàn)reeRTOS是一款迷你型實時操作系統(tǒng)內(nèi)核,功能包括:任務(wù)管理、時間管理、信號量、消息隊列、內(nèi)存管理等功能,可基本滿足較小系統(tǒng)的需要。相對于VxWorks、uc/os-II等商業(yè)操作系統(tǒng),F(xiàn)reeRTOS完全免費,具有源碼公開、可移植、可裁剪、任務(wù)調(diào)度靈活等特點,可以方便地移植到各種MCU上運行,其突出的特性如下。

免費開源。完全可以放心作為商業(yè)用途。

文檔資源齊全。在FreeRTOS官網(wǎng)上能下載到內(nèi)核文件及詳細(xì)的介紹資料

安全性高。SafeRTOS基于FreeRTOS而來,經(jīng)過安全認(rèn)證的RTOS,近年來在歐美較為流行,支持搶占式和合作式任務(wù)切換模式,代碼精簡,核心由3個C文件組成,可支持65536個任務(wù)。因此其開源免費版本FreeRTOS在安全性方面也應(yīng)該擁有一定保障。

市場使用率高。從2011年開始,F(xiàn)reeRTOS市場使用率持續(xù)高速增長,根據(jù)EEtimes雜志市場報告顯示,F(xiàn)reeRTOS使用率名列前茅,如圖3-1所示,2017年FreeRTOS市場占有率為20%,排名第二。

內(nèi)核文件簡單。內(nèi)核相關(guān)文件僅由3個C文件組成,全部圍繞任務(wù)調(diào)度展開,功能專一,便于理解與學(xué)習(xí)。

圖3-1 2017年各種操作系統(tǒng)的使用數(shù)量統(tǒng)計

4 蜂鳥E203移植FreeRTOS

本節(jié)介紹如何在HBird-E-SDK環(huán)境下移植一個簡單的FreeROTS示例。用戶可以以此為基礎(chǔ)進行豐富和完善,開發(fā)更多的復(fù)雜示例。

有關(guān)HBird-E-SDK環(huán)境的快速上手請參見《蜂鳥E203快速上手介紹》,有關(guān)HBird-E-SDK系統(tǒng)性的詳細(xì)介紹請參見中文書籍《RISC-V架構(gòu)與嵌入式開發(fā)入門指南》的第11章。

4.1HBird-E-SDK中FreeRTOS程序代碼結(jié)構(gòu)

在HBird-E-SDK環(huán)境中,F(xiàn)reeRTOS示例程序的相關(guān)代碼結(jié)構(gòu)如下所示。

Makefile為主控制腳本,其代碼片段如下:

4.2FreeRTOS原理和移植介紹

由于RTOS需要占用一定系統(tǒng)資源,只有少數(shù)RTOS支持在小內(nèi)存的MCU上運行,F(xiàn)reeRTOS是一款迷你型實時操作系統(tǒng)內(nèi)核,功能包括:任務(wù)管理、時間管理、信號量、消息隊列、內(nèi)存管理等功能,可基本滿足較小系統(tǒng)的需要。相對于VxWorks、uc/os-II等商業(yè)操作系統(tǒng),F(xiàn)reeRTOS完全免費,具有源碼公開、可移植、可裁剪、任務(wù)調(diào)度靈活等特點、可以方便地移植到各種MCU上運行。

4.2.1RTOS操作系統(tǒng)的基本原理

傳統(tǒng)裸機程序是一個大while循環(huán),將所有事情看作一個任務(wù),順序執(zhí)行代碼,遇到中斷發(fā)生則響應(yīng)中斷(可能發(fā)生中斷嵌套),響應(yīng)完中斷后會繼續(xù)之前被中斷的任務(wù),其過程如圖4-1所示。

圖4-1 裸機程序的過程

而在RTOS中,將所有事情分成各個模塊,每一個模塊的內(nèi)容看作一個任務(wù),任務(wù)的執(zhí)行順序是靈活的,根據(jù)相應(yīng)的調(diào)度算法管理任務(wù)的運行,靈活性比裸機程序強,其過程如圖4-2所示。

圖4-2 RTOS程序的過程

FreeRTOS中的調(diào)度算法分為時間片調(diào)度算法和搶占式調(diào)度,在FreeRTOS的FreeRTOSConfig.h文件中配置如下:

即使不配置configUSE_TIME_SLICING為1,F(xiàn)reeRTOS也會默認(rèn)開啟時間片調(diào)度。時間片調(diào)度算法和搶占式調(diào)度的特點簡述如下:

時間片調(diào)度算法:每一個任務(wù)給予固定的執(zhí)行時間,時間結(jié)束后進入調(diào)度器,由調(diào)度器切換到下一個任務(wù),在默認(rèn)所有任務(wù)優(yōu)先級相同情況下,輪流執(zhí)行所有任務(wù)。

搶占式調(diào)度需要設(shè)置任務(wù)優(yōu)先級,在進入調(diào)度器后,調(diào)度器選擇處于就緒態(tài)中優(yōu)先級最高的任務(wù)作為下一個執(zhí)行的任務(wù)。高優(yōu)先級任務(wù)可以搶占低優(yōu)先級任務(wù),發(fā)生搶占時需要有能進入調(diào)度器的操作,調(diào)度器是任務(wù)切換的唯一實體。

4.2.2 FreeRTOS源碼解析和移植介紹

在HBird-E-SDK環(huán)境中,F(xiàn)reeRTOS源代碼和蜂鳥E203移植相關(guān)的代碼結(jié)構(gòu)如下所示。

如上所示,F(xiàn)reeRTOS的代碼層次結(jié)構(gòu)分明,用戶只需要修改三個文件名為“port*”的源代碼,完成基本的中斷和異常的底層移植,即可完成對于FreeRTOS的移植。

蜂鳥E203移植FreeRTOS操作系統(tǒng)時,實現(xiàn)固定時間切換任務(wù)的操作由內(nèi)核自帶的mtime計時器中斷支持,可以設(shè)置為每隔一個固定的時間段發(fā)生一次計時器中斷(稱之為System Tick),在中斷處理函數(shù)中進入調(diào)度器切換下一個任務(wù)。在port.c文件中mtime計時器設(shè)置代碼如下:

更多移植代碼詳情,請用戶自行參見三個文件名為“port*”的源代碼。

4.2.3任務(wù)與中斷的關(guān)系

FreeRTOS的任務(wù)和中斷的優(yōu)先級關(guān)系是移植FreeRTOS的難點,需要被正確的理解,否則程序會運行出錯:

任務(wù)總是可以被中斷打斷,任務(wù)之間具有的優(yōu)先級,但是與“中斷的優(yōu)先級”沒有關(guān)系,這兩種優(yōu)先級是相互獨立的。

不調(diào)用任何FreeRTOSAPI函數(shù)的中斷,可以設(shè)置為任意的“中斷優(yōu)先級”,并且允許嵌套。

在FreeRTOSConfig.h中預(yù)先定義configMAX_SYSCALL_INTERRUPT_PRIORITY的值,調(diào)用API函數(shù)的中斷優(yōu)先級只能設(shè)置為不大于該值,支持嵌套,但是會被內(nèi)核延遲。

關(guān)于FreeRTOS的任務(wù)優(yōu)先級和中斷優(yōu)先級如何設(shè)置,以及FreeRTOS的更多詳細(xì)信息,請用戶自行查閱相關(guān)FreeRTOS手冊學(xué)習(xí)。

4.3運行FreeRTOS

FreeRTOS示例可運行于HBird-E-SDK環(huán)境中,使用《蜂鳥E203快速上手介紹》中描述的運行方法按照如下步驟運行:

// 注意:確保在HBIRD-E-SDK中正確的安裝了RISC-V GCC工具鏈,請參見《蜂鳥E203快速上手介紹》了解其詳情。

// 步驟一:參照《蜂鳥E203快速上手介紹》中描述的方法,編譯FreeRTOS示例程序,使用如下命令:

make software PROGRAM=FreeRTOSv9.0.0NANO_PFLOAT=0

// 步驟二:參照《蜂鳥E203快速上手介紹》中描述的方法,將編譯好的FreeRTOS程序下載至FPGA原型開發(fā)板中,使用如下命令:

make upload PROGRAM=FreeRTOSv9.0.0

// 步驟三:參照《蜂鳥E203快速上手介紹》中描述的方法,在FPGA原型開發(fā)板上運行FreeRTOS程序:

// 由于示例程序?qū)⑿枰ㄟ^UART打印結(jié)果到主機PC的顯示屏上。參考《蜂鳥E203快速上手介紹》所述方法將串口顯示電腦屏幕設(shè)置好,使得程序的打印信息能夠顯示在電腦屏幕上。由于步驟二已經(jīng)將程序燒寫進FPGA開發(fā)板的Flash之中,因此每次按MCU開發(fā)板的RESET按鍵,則處理器復(fù)位開始執(zhí)行FreeRTOS程序,并將RISC-V字符串打印至主機PC的串口顯示終端上。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • FPGA
    +關(guān)注

    關(guān)注

    1629

    文章

    21729

    瀏覽量

    602978
  • 操作系統(tǒng)
    +關(guān)注

    關(guān)注

    37

    文章

    6801

    瀏覽量

    123283
  • 開發(fā)板
    +關(guān)注

    關(guān)注

    25

    文章

    5032

    瀏覽量

    97371

原文標(biāo)題:蜂鳥FPGA開發(fā)板全知道篇4:移植FreeRTOS

文章出處:【微信號:real_farmer,微信公眾號:硅農(nóng)亞歷山大】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    【龍芯2K0300蜂鳥試用】龍芯2K0300蜂鳥開發(fā)板上電測試!

    龍芯2K0300蜂鳥開發(fā)板收到后讓我很驚艷,龍芯2K0300蜂鳥開發(fā)板板子小巧,布局非常合理,而且板子做的非常漂亮,集成度非常高,功能也很全。 該系統(tǒng)是專為嵌入式領(lǐng)域打造的解決方
    發(fā)表于 09-05 20:46

    【龍芯2K0300蜂鳥試用】龍芯2K0300蜂鳥開發(fā)板開發(fā)環(huán)境搭建

    ://www.loongson.cn/ 龍芯技術(shù)社區(qū): http://www.loongnix.cn/zh/ 2K0300蜂鳥開發(fā)板資料 更多資料從網(wǎng)盤下載 網(wǎng)盤鏈接 https://pan.baidu.com/s/1qMp1M
    發(fā)表于 09-05 21:16

    【作品合集】龍芯2K0300蜂鳥開發(fā)板試用精選

    】+4.libmodbus移植【龍芯2K0300蜂鳥試用】+3.移植lua到loongarch【龍芯2K0300蜂鳥
    發(fā)表于 09-10 18:17

    第二章:龍芯2K0300蜂鳥資料下載說明

    片 |--開發(fā)板實物圖.png蜂鳥整體頂視照片 |--開發(fā)板實物圖1.png蜂鳥整體底視照片
    發(fā)表于 09-11 17:30

    【MYMINIEYE Runber蜂鳥開發(fā)版免費試用連載】國產(chǎn)FPGA試用評測之MYMINIEYE Runber蜂鳥開發(fā)板

    本帖最后由 卿小小_9e6 于 2020-7-30 12:34 編輯 項目名稱:國產(chǎn)FPGA試用評測之MYMINIEYE Runber蜂鳥開發(fā)板試用計劃:1.項目名稱《國產(chǎn)FPGA
    發(fā)表于 07-16 10:20

    【MYMINIEYE Runber蜂鳥開發(fā)版免費試用連載】高云FPGA開箱

    `收到了發(fā)燒友寄來的蜂鳥開發(fā)板,板子小巧精致比普通名片還要略小,美中不足的一點就是板子沒有預(yù)留銅柱孔,方便安裝銅柱。可以看到板子正面放置了FPGA芯片,數(shù)碼管,撥碼開關(guān),LED和按鍵等,基本滿足了
    發(fā)表于 07-26 00:29

    【RSIC-V】Lab1:蜂鳥e203上手教程

    下載到Perf-V,但由于FPGA掉電后剛剛下載的bit文件會丟失,所以開發(fā)板一旦掉電后,程序也隨之消失,還需要再次下載,為了方便可以繼續(xù)進
    發(fā)表于 08-02 13:47

    【RSIC-V】Lab1:蜂鳥e203上手教程

    下載到Perf-V,但由于FPGA掉電后剛剛下載的bit文件會丟失,所以開發(fā)板一旦掉電后,程序也隨之消失,還需要再次下載,為了方便可以繼續(xù)進
    發(fā)表于 08-25 14:31

    Ubuntu環(huán)境下將蜂鳥e203的hello_world例程下載開發(fā)板上,遇到JTAG問題求解答

    我想Ubuntu環(huán)境下將蜂鳥e203的hello_world例程下載開發(fā)板上,之前成功下載過程序,但是最近同樣的步驟一直遇到JTAG問題,
    發(fā)表于 08-12 07:05

    蜂鳥E203移植ZYNQ7000開發(fā)板調(diào)試打印hellowaord亂碼怎么解決?

    移植蜂鳥E203到zynq 保留GPIOA模塊,用gpio16和gpio17做串口uart的RX和TX.用Nucleistidio里面模板的helloworld建工程后,下載開發(fā)板
    發(fā)表于 08-12 07:49

    FreeRTOS移植MAPS-K22開發(fā)板

    FreeRTOS移植MAPS-K22開發(fā)板,本文以MAPS-K22開發(fā)板為例,介紹了將FreeRTOS
    發(fā)表于 12-24 16:39 ?4次下載

    蜂鳥FPGA開發(fā)板JTAG下載詳細(xì)說明

    為了便于初學(xué)者能夠快速地學(xué)習(xí)RISC-V CPU設(shè)計和RISC-V嵌入式開發(fā),蜂鳥E203開源MCU原型SoC定制了基于Xilinx FPGA的專用開發(fā)板和專用
    的頭像 發(fā)表于 11-12 17:10 ?2.1w次閱讀

    蜂鳥FPGA開發(fā)板蜂鳥JTAG下載講解說明

    perips目錄主要用于存放各種外設(shè)(Peripherals)模塊的Verilog RTL代碼,譬如GPIO,UART,SPI等。大部分的Peripherals的Verilog RTL代碼是直接復(fù)制于SiFive的Freedom E310項目中Chisel語言生成的出的Verilog RTL代碼,在此基礎(chǔ)上將其TileLink總線接口修改成了ICB總線接口,如圖3-5中所示的GPIO模塊ICB總線接口。
    的頭像 發(fā)表于 11-26 17:23 ?1.1w次閱讀
    <b class='flag-5'>蜂鳥</b><b class='flag-5'>FPGA</b><b class='flag-5'>開發(fā)板</b>及<b class='flag-5'>蜂鳥</b><b class='flag-5'>JTAG</b><b class='flag-5'>下載</b><b class='flag-5'>器</b><b class='flag-5'>講解說明</b>

    移植FreeRTOS到STM32開發(fā)板上的工程文件和源代碼免費下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是移植FreeRTOS到STM32開發(fā)板上的工程文件和源代碼免費下載
    發(fā)表于 01-07 08:00 ?16次下載
    <b class='flag-5'>移植</b><b class='flag-5'>FreeRTOS</b>到STM32<b class='flag-5'>開發(fā)板</b>上的工程文件和源代碼免費<b class='flag-5'>下載</b>

    蜂鳥FPGA開發(fā)板JTAG調(diào)試介紹

    開發(fā)板(在本文中將其簡稱為“FPGA開發(fā)板”)和專用 JTAG 調(diào)試(在本文中將其簡稱為“JTAG
    發(fā)表于 03-23 10:00 ?41次下載
    <b class='flag-5'>蜂鳥</b><b class='flag-5'>FPGA</b><b class='flag-5'>開發(fā)板</b>和<b class='flag-5'>JTAG</b>調(diào)試<b class='flag-5'>器</b>介紹
    RM新时代网站-首页