在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁 > 嵌入式系統(tǒng) > 智能硬件 > RISC-V單片機快速入門02-移植RT_Thread Nano

            RISC-V單片機快速入門02-移植RT_Thread Nano

            作者:一葉孤沙 時間:2020-06-18 來源:知乎 收藏

            前言:

            本文引用地址:http://www.biyoush.com/article/202006/414404.htm

            上一節(jié),我們使用Nuclei Studio IDE搭建了裸機開發(fā)環(huán)境,本節(jié)我們開始正式移植RT_Thread系統(tǒng)。

            一、基礎(chǔ)知識

            1.RT_Thread簡介

            RT-Thread是一個集實時操作系統(tǒng)(RTOS)內(nèi)核、中間件組件和開發(fā)者社區(qū)于一體的技術(shù)平臺,由熊譜翔先生帶領(lǐng)并集合開源社區(qū)力量開發(fā)而成,RT-Thread也是一個組件完整豐富、高度可伸縮、簡易開發(fā)、超低功耗、高安全性的物聯(lián)網(wǎng)操作系統(tǒng)。RT-Thread具備一個IoT OS平臺所需的所有關(guān)鍵組件,例如GUI、網(wǎng)絡(luò)協(xié)議棧、安全傳輸、低功耗組件等等。經(jīng)過11年的累積發(fā)展,RT-Thread已經(jīng)擁有一個國內(nèi)最大的嵌入式開源社區(qū),同時被廣泛應用于能源、車載、醫(yī)療、消費電子等多個行業(yè),累積裝機量超過2億臺,成為國人自主開發(fā)、國內(nèi)最成熟穩(wěn)定和裝機量最大的開源RTOS。

            2.RT_Thread和RT_Thread Nano區(qū)別

            RT_Thread有兩個版本,一個是RT_Thread Nano,這是一個純粹的RTOS內(nèi)核,基本原理和Free RTOS、UCOSIII/UCOSII比較相似,另一個是RT_Thread完整版,完整版是在RT_Thread Nano的基礎(chǔ)上,增加了眾多的軟件包構(gòu)成,同時支持眾多物聯(lián)網(wǎng)組件,是物聯(lián)網(wǎng)開發(fā)的利器。

            3.準備工作

            (1)裸機源碼:上一節(jié)環(huán)境搭建篇工程即可

            (2)RT_Thread Nano 3.1.3源碼: 我已經(jīng)放到網(wǎng)盤上,也可以從官方下載

            (4)硬件:Sipeed Longan開發(fā)板

            (5)移植參考資料:https://www.rt-thread.org/document/site/tutorial/nano/nano-port-gcc-riscv/an0042-nano-port-gcc-riscv/#nano

            二、移植步驟

            1.移植步驟概述

            (1)準備一個基礎(chǔ)的 NucleiStudio 工程,并獲取 RT-Thread Nano 源碼壓縮包。

            (2)在基礎(chǔ)工程中添加 RT-Thread Nano 源碼,添加相應頭文件路徑。

            (3)適配 Nano,主要從 中斷、時鐘、內(nèi)存、應用 這幾個方面進行適配,實現(xiàn)移植。

            (4)最后可對 Nano 進行配置:Nano 是可裁剪的,通過配置文件 rtconfig.h 實現(xiàn)對系統(tǒng)的裁剪。

            2.獲取源碼

            下載上文準備工作中網(wǎng)盤資料,解壓后如下:

            3.添加Nano源碼

            在裸機代碼根目錄創(chuàng)建RT_Thread文件夾,將OS源碼中include、libcpu、src文件復制到其中,然后將bsp下的board.c以及rtconfig.h也放進去:

            然后刪除libcpu下面用不到的代碼,僅留risc-v/common、risc-v/bumblebee

            4.添加頭文件路徑

            右擊工程,點擊 properties 進入下圖所示界面,點擊 C/C++ Build -> settings ,分別添加匯編與 C 的頭文件路徑

            添加匯編路徑

            增加.h路徑

            5.適配 RT-Thread Nano

            RT_Thread Nano是從entry函數(shù)開始啟動,因此需要修改Start.s文件中C代碼入口函數(shù)call main為call entry。

            修改時鐘和中斷,直接將rt-thread-3.1.3/bsp/gd32vf103-blink/drivers下board.c覆蓋掉board.c即可,同時將gd32vf103v_eval.c和gd32vf103v_eval.h覆蓋掉utilites下文件中內(nèi)容,主要目的是增加按鍵和串口相關(guān)函數(shù)。

            三、編譯運行

            1.編譯

            點擊左上方錘子圖標編譯,發(fā)現(xiàn)編譯失敗

            此時需要修改下根目錄RT_Thread為RT-Thread,然后修改配置路徑中所有RT_Thread為RT-Thread,注意匯編路徑和C路徑都需要修改。

            重新編譯

            2.修改代碼

            打開堆功能

            修改main.c內(nèi)容,創(chuàng)建一個線程,線程中每隔500毫秒開關(guān)一次燈

            #include "gd32vf103.h"
            #include "gd32vf103c_start.h"
            #include "rtthread.h"
            static rt_thread_t dynamic_thread = RT_NULL;
            void led_process_thread_entry(void parameter)
            {
                rt_err_t ret = RT_EOK;
                while(1)
                {
                    / insert 500 ms delay /
                    rt_thread_mdelay(500);
                    / toggle the LED /
                    gpio_bit_write(GPIOA, GPIO_PIN_1, (bit_status)(1-gpio_input_bit_get(GPIOA, GPIO_PIN_1)));
                    / insert 500 ms delay /
                    rt_thread_mdelay(500);
                }
            }
            /!
                brief      main function
                param[in]  none
                param[out] none
                retval     none
            /
            int main(void)
            {
                / enable the LED clock /
                rcu_periph_clock_enable(RCU_GPIOA);
                / configure LED GPIO port */
                gpio_init(GPIOA, GPIO_MODE_OUT_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_1);
                gpio_bit_reset(GPIOA, GPIO_PIN_1);
                // create iwdt_thread
                dynamic_thread = rt_thread_create("led_thread", led_process_thread_entry,
                                                    RT_NULL, 512, 2, 10);
                rt_thread_startup(dynamic_thread);
            }

            3.運行

            點擊運行按鈕

            運行現(xiàn)象如下:

            可以看到指示燈循環(huán)閃爍,說明我們移植RT_Thread操作系統(tǒng)成功。

            寄語:自我突破第一步:從價值表達轉(zhuǎn)變?yōu)閮r值提供




            關(guān)鍵詞: RISC-V GD32VF103CB 芯來科技

            評論


            相關(guān)推薦

            技術(shù)專區(qū)

            關(guān)閉