<noframes id="fbbb7">

<sub id="fbbb7"></sub>

<track id="fbbb7"></track><address id="fbbb7"></address>

      <track id="fbbb7"></track>
      <cite id="fbbb7"><th id="fbbb7"><ol id="fbbb7"></ol></th></cite>
        創作

        完善資料讓更多小伙伴認識你,還能領取20積分哦, 立即完善>

        3天內不再提示

        rt-thread 優化系列(二) 之 同步和消息關中斷分析

        出出 ? 來源:出出 ? 作者:出出 ? 2022-06-21 09:47 ? 次閱讀

        前言

        書接前文,上篇優化聊的是關中斷操作,在很多地方過保護,導致關中斷時間太久,可能引起其它中斷不能及時響應。今天特意說說線程間同步和通信,分析一下它們是怎么影響關中斷時間的,比起前文會有些深入分析。

        從 rt_mq_send_wait 說起

        為了方便談問題先貼一段代碼,這段代碼是從 4.0.4 版本的 `rt_mq_send_wait` 函數中摘取的部分。

           /* disable interrupt */
           temp = rt_hw_interrupt_disable();
           /* get a free list, there must be an empty item */
           msg = (struct rt_mq_message *)mq->msg_queue_free;
           /* for non-blocking call */
           if (msg == RT_NULL && timeout == 0)
           {
               /* enable interrupt */
               rt_hw_interrupt_enable(temp);
        
               return -RT_EFULL;
           }
        
           /* message queue is full */
           while ((msg = (struct rt_mq_message *)mq->msg_queue_free) == RT_NULL)
           {
               /* reset error number in thread */
               thread->error = RT_EOK;
        
               /* no waiting, return timeout */
               if (timeout == 0)
               {
                   /* enable interrupt */
                   rt_hw_interrupt_enable(temp);
        
                   return -RT_EFULL;
               }
        
               RT_DEBUG_IN_THREAD_CONTEXT;
               /* suspend current thread */
               rt_ipc_list_suspend(&(mq->suspend_sender_thread),
                                   thread,
                                   mq->parent.parent.flag);
        
               /* has waiting time, start thread timer */
               if (timeout > 0)
               {
                   /* get the start tick of timer */
                   tick_delta = rt_tick_get();
        
                   RT_DEBUG_LOG(RT_DEBUG_IPC, ("mq_send_wait: start timer of thread:%s\n",
                                               thread->name));
        
                   /* reset the timeout of thread timer and start it */
                   rt_timer_control(&(thread->thread_timer),
                                    RT_TIMER_CTRL_SET_TIME,
                                    &timeout);
                   rt_timer_start(&(thread->thread_timer));
               }
        
               /* enable interrupt */
               rt_hw_interrupt_enable(temp);
        
               /* re-schedule */
               rt_schedule();
        
               /* resume from suspend state */
               if (thread->error != RT_EOK)
               {
                   /* return error */
                   return thread->error;
               }
        
               /* disable interrupt */
               temp = rt_hw_interrupt_disable();
        
               /* if it's not waiting forever and then re-calculate timeout tick */
               if (timeout > 0)
               {
                   tick_delta = rt_tick_get() - tick_delta;
                   timeout -= tick_delta;
                   if (timeout < 0)
                       timeout = 0;
               }
           }

        這段代碼的大致流程是:關全局中斷,取消息隊列,如果沒有空閑消息進入等待,將當前線程注冊到消息隊列等待線程列表,啟動當前線程內置硬定時器(等待超時機制),開全局中斷,執行任務調度,被喚醒后進行是超時喚醒還是消息隊列空喚醒處理。

        > 首先申明,這段代碼在設置等待超時時間的情況下才有效,當第四個參數 timeout 為 0 的時候對本次分析無效。鑒于在中斷回調函數中要求不能設置 timeout 值,也就是不能進行阻塞調用,但是本文章仍然討論在中斷回調函數中的阻塞調用情況,權作參考。下面就分兩種情況分別分析。

        非中斷,線程中阻塞調用 `rt_mq_send_wait`

        假設線程中調用執行了函數 `rt_mq_send_wait` 第四個參數 `timeout` 不為 0 。那么上面的代碼一定執行 while 循環體。這個 while 循環暴露的多個問題不提,讓我們把目光聚焦到啟動線程定時器和開全局中斷部分。
        前言部分預先提醒了今天的主題是:啟動超時等待定時器的操作有必要在關中斷中嗎?可不可以先開中斷,然后啟動定時器?

        為了說明這個問題,讓我們再設想一種使用情況,假設在線程中單純的啟動一個定時器,如下:

           rt_timer_t timer;
           timer = rt_timer_create("tim1", timer_timeout,
                                   RT_NULL,  1000,
                                   RT_TIMER_FLAG_PERIODIC);
           rt_timer_start(timer);
        
        或者,
        
           int timeout = 1000;
           struct rt_thread *thread = rt_thread_self();
           rt_timer_control(&(thread->thread_timer),
                           RT_TIMER_CTRL_SET_TIME,
                           &timeout);
           rt_timer_start(&(thread->thread_timer));

        如上用法我們會把它放到關中斷里面嗎?答案是不需要!
        那么,`rt_mq_send_wait` 中的關中斷是為了保護什么?同樣是在線程中執行,同樣的兩句代碼,同樣的使用為什么被 rt_mq_send_wait 執行時就需要被關中斷保護了?
        執行這兩句代碼時,無論是發生普通中斷,或者有任務調度切換到了其它線程,都不應該會影響到這個定時器被正常啟動。至于說這個 `thread` 指針,在當前這個線程不會被強制刪除的前提下, `thread` 指針一直有效。

        所以說,啟動超時等待定時器的操作**沒**必要在關中斷中??梢?*先開中斷,然后啟動定時器**

        中斷,阻塞調用 rt_mq_send_wait

        > 再次申明,實際使用中避免這種用法,這里僅僅做交流,并非使用建議。

        和在線程中不一樣的地方在于,線程中調用 `rt_mq_send_wait` 時 `thread` 指針*肯定*是當前線程;在中斷中調用 rt_mq_send_wait ,因中斷不定什么時候出現, `thread` 指針可能是任意被創建的(有機會進入運行態的)線程。

        為了不失一般性,我們再次假設,這個中斷優先級比較低,可能被另外一個中斷嵌套。而且假設在執行 `rt_timer_control` 和 `rt_timer_start` 時被其它中斷打斷。這種極端情況下會出現什么結果以及影響?
        1. 中斷中再次被中斷,同時有阻塞操作。這個定時器會被兩個地方同時使用,鑒于 `rt_timer_control` 和 `rt_timer_start` 內部也有中斷,即便在兩個函數中間出現新中斷,在新中斷中這個定時器也可以被正常配置而不影響在新中斷中的定時任務!
        2. 中斷中出現 SysTick 中斷,然后有任務調度。因為前邊中斷中使用的定時器是某個不確定線程的,這時候出現任務調度,新線程是另外一個不確定線程,而且可以保證的是肯定是另一個不同的線程。這個新的進程會有可能強制刪除前一個線程嗎?

        說到這里,我們會發現,***即便是在中斷里阻塞調用 `rt_mq_send_wait` 函數, `rt_timer_control` 和 `rt_timer_start` 操作不需要被關中斷保護!***

        小結

        綜上分析,可以*先開中斷,然后啟動定時器,最后進行任務調度*。而不用擔心數據共享的問題。
        類似用法的函數很多,ipc.c 中每一個 rt_xxx_send 和 rt_xxx_recv rt_xxx_take 都是一個模式。

        timeout 的一些討論(無關中斷)

        開篇貼的代碼,考慮到了被其它線程喚醒的情況,假如等待阻塞中,等待時間還沒到但是其它線程特意喚醒了它,會執行下面這段代碼

               /* if it's not waiting forever and then re-calculate timeout tick */
               if (timeout > 0)
               {
                   tick_delta = rt_tick_get() - tick_delta;
                   timeout -= tick_delta;
                   if (timeout < 0)
                       timeout = 0;
               }

        這段代碼本身沒多少問題,有問題的是接下來判斷消息隊列是否有空閑消息,如果沒有進入下一次阻塞中。
        判斷是否有空閑消息后,判斷 timeout 是否為 0 ,為 0 說明等待時間已經超時,開中斷退出返回。這里判斷 timeout == 0 是可以和上面這段代碼合并的。

           while (msg == RT_NULL)
           {
              ...
               /* if it's not waiting forever and then re-calculate timeout tick */
               tick_delta = rt_tick_get() - tick_delta;
               timeout -= tick_delta;
               if (timeout < 0)
                   timeout = 0;
               /* no waiting, return timeout */
               if (timeout == 0)
               {
                   /* enable interrupt */
                   rt_hw_interrupt_enable(temp);
        
                   return -RT_EFULL;
               }
               msg = (struct rt_mq_message *)mq->msg_queue_free;
           }

        結尾

        我們知道,關中斷后總需要在最短的時間內盡快打開中斷,在【關中斷/開中斷】操作對總數無法改變的前提下?!娟P開/關開/關開】與【關關關/開開開】兩種框架模式是有本質區別的:第一種模式把關中斷時間分化,每次開中斷間隙可以有機會處理中斷異常;第二種總關中斷時間可能是第一種的三倍!極大提高了丟中斷的可能性。
        作為上一篇的延續和總結,關中斷的話題就聊到這兒,歡迎各位一起討論。

        > 本優化系列所有提到的更改已經提交到 gitee ,歡迎大家測試
        https://gitee.com/thewon/rt_thread_repo

        相關文章:
        [rt-thread 系統優化系列(一) 之 關中斷]( https://club.rt-thread.org/ask/article/2931.html )
        [rt-thread 系統優化系列(二) 之 線程間同步和通信對中斷的影響]( https://club.rt-thread.org/ask/article/2939.html )
        [rt-thread 系統優化系列(三) 之 軟定時器]( https://club.rt-thread.org/ask/article/2967.html )
        [ rt-thread 系統優化系列(四) 之 再談 ipc 中的 bug]( https://club.rt-thread.org/ask/article/3044.html )

        審核編輯:湯梓紅

        • 中斷
          +關注

          關注

          5

          文章

          586

          瀏覽量

          38025
        • 優化
          +關注

          關注

          0

          文章

          207

          瀏覽量

          21533
        • RT-Thread
          +關注

          關注

          27

          文章

          398

          瀏覽量

          33671
        收藏 人收藏

          評論

          相關推薦

          RT-Thread串口使用指南及問題解決方式匯總

          1、這篇文章主要講解如何適配串口V2驅動,下面以STM32F411RE-NUCLEO的BSP為例,講解如何快速適配到該開發板上 ...
          發表于 06-23 15:29 ? 1951次 閱讀

          怎么去解決armv8a移植到rt-smart分支系統中出錯的問題呢

          系統環境 armv8-a 64位 4核cortex-a35 移植到rt-smart分支系統中 由于rt沒有線程支持aarch64 cortex-a35,因此參考cortex-a72...
          發表于 06-23 14:57 ? 978次 閱讀

          NUC980開發板應用 基于NK-980IoT的國學唐詩學習機

          基于NK-980IoT的國學唐詩學習機 1 項目背景 最近一直在陪小孩學習國學精髓,比如唐詩、宋詞這....
          的頭像 RTThread物聯網操作系統 發表于 06-23 14:55 ? 305次 閱讀

          Nuvoton M487開發板環境搭建和程序下載測試入門

          一、開發板介紹1. 前言很感謝RT-Thread 和 新唐給予的這次評測機會,本次評測的開發板是 新唐的 Nuvoton M487,我們拿到手的...
          發表于 06-23 14:36 ? 1080次 閱讀

          基于RT-Thread+RA6M4的智能安防系統詳解

          ??無論是在家里還是在公司,安防都尤為的重要,與其亡羊補牢,更重要的是防患于未然。安全是目的,防范是....
          的頭像 物聯網技術分享 發表于 06-23 14:34 ? 51次 閱讀
          基于RT-Thread+RA6M4的智能安防系統詳解

          在RT-Thread studio + NK-980IOT環境下使用iperf命令測試四種模式帶寬

          測試環境開發板:NK-980IOT V1.0 開發環境:RT-Thread studio 2.2.1 + NuWriter v1.18 RT-Thread版本:4.0.5 開...
          發表于 06-23 14:20 ? 1160次 閱讀

          怎樣對基于NK-980IOT開發板的SPI NAND Flash進行讀寫測試呢

          SPI協議其實是包括:Standard SPI、Dual SPI和Queued SPI三種協議接口,分別對應3-wire, 4-wire, 6-wire。 (1)...
          發表于 06-23 12:05 ? 1254次 閱讀

          Nuvoton M487開發板的PWM驅動評測步驟分享

          一、M487 PWM簡介1、EPWM ? 8個獨立PWM 輸出,16位計數器,12位預分頻,最大時鐘 192MHz ? 12位死區時間 ? 計...
          發表于 06-23 11:56 ? 455次 閱讀

          簡要分析N9H30開發板RTThread框架下的LVGL demo源碼

          續接上一篇文章,分析LVGL的demo源碼。官方的widget例程代碼lv_demo_widgets()函數體如下,下面逐步分析。雖然之前也簡單看過...
          發表于 06-23 11:42 ? 358次 閱讀

          如何利用STM32H743對FDCAN組件驅動進行調試呢

          簡單記錄下fdcan調試: 1.打開FDCAN組件,啟用FDCAN1 FDCAN2(我修改過KConfig,默認只能啟用FDCAN1) ...
          發表于 06-23 11:31 ? 346次 閱讀

          基于NK880IOT和RT-Thread的TIMER硬件使用說明

          1、NK880IOT-NK9TIMER簡介開發環境簡介NK-980IOT V1.0 (NUC980DK61Y)RT-Thread Studio + J-Link ...
          發表于 06-23 11:21 ? 775次 閱讀

          分享一種基于RT-Thread和N32G457的運動姿態解算設計

          1、基于RT-Thread和N32G457的運動姿態解算基本框架如上圖所示,設計框架由硬件和軟件兩部分組成,其中硬件主要包括N32G45...
          發表于 06-23 10:24 ? 1076次 閱讀

          rt-thread 優化系列(五)lwip 裁剪

          很久之前就開始整理下面的優化項列表了,但是有很多問題研究不深,一時不敢冒失推出。
          的頭像 出出 發表于 06-23 10:21 ? 858次 閱讀

          RT-Thread記錄(八、理解RT-Thread內存管理)

          記得最初學習 RT-Thread ,對于內存管理我也是簡單看看然后一筆帶過,當時覺得用不上,在我做的....
          的頭像 矜辰所致 發表于 06-23 10:11 ? 188次 閱讀
          RT-Thread記錄(八、理解RT-Thread內存管理)

          rt-thread 驅動篇(八)hwtimer 重載算法優化

          區別于 rt-thread 內核實現的兩種定時器,這種定時器依賴芯片內置的定時器外設,依靠穩定高速的....
          的頭像 出出 發表于 06-23 10:10 ? 858次 閱讀
          rt-thread 驅動篇(八)hwtimer 重載算法優化

          rt-thread 優化系列(四)信號對 ipc 的影響

          信號 signal,并不是線程間同步的信號量 semaphore。后者是線程間同步機制的一種,而前者....
          的頭像 出出 發表于 06-23 09:51 ? 848次 閱讀

          rt-thread優化系列(三)軟定時器的定時漂移問題分析

          所謂軟定時器,是由一個線程運行維護的定時器列表。由線程調用定時器回調函數。
          的頭像 出出 發表于 06-23 09:35 ? 856次 閱讀

          GD32 RISC-V系列 BSP框架制作與移植

          ? 手把手教你使用RT-Thread制作GD32 RISC-V系列BSP 熟悉RT-Thread的朋....
          的頭像 嵌入式大雜燴 發表于 06-22 19:44 ? 1548次 閱讀
          GD32 RISC-V系列 BSP框架制作與移植

          RT-Thread記錄(七、IPC機制之郵箱、消息隊列)

          講完了線程同步的機制,我們要開始線程通訊的學習,
          的頭像 矜辰所致 發表于 06-22 10:06 ? 181次 閱讀
          RT-Thread記錄(七、IPC機制之郵箱、消息隊列)

          rt-thread 驅動篇(三) serialX 壓力測試

          本周筆者花了好多天的時間,計劃從多個方面對串口驅動做個比較。下面就從以下幾個角度做個對比測試。
          的頭像 出出 發表于 06-22 09:22 ? 1247次 閱讀

          rt-thread 驅動篇(二) serialX 理論實現

          在前一篇文章里,大致提出了我的串口驅動框架理論。里面做了一些對串口驅動特性的幻想。也在 NUC970....
          的頭像 出出 發表于 06-22 09:03 ? 1345次 閱讀
          rt-thread 驅動篇(二) serialX 理論實現

          GD32407V-START開發板的BSP框架制作與移植

          熟悉RT-Thread的朋友都知道,RT-Thread提供了許多BSP,但不是所有的板子都能找到相應....
          的頭像 嵌入式大雜燴 發表于 06-22 08:54 ? 1286次 閱讀
          GD32407V-START開發板的BSP框架制作與移植

          RT-Thread記錄(六、IPC機制之信號量互斥量事件集)

          上文說到 RT-Thread 對臨界區的處理方式有多種,其中已經分析了關閉調度器和屏蔽中斷的方式, ....
          的頭像 矜辰所致 發表于 06-21 10:40 ? 2217次 閱讀
          RT-Thread記錄(六、IPC機制之信號量互斥量事件集)

          rt-thread 驅動篇(一) serialX 框架理論

          串口驅動三種工作模式:輪詢、中斷、DMA。
          的頭像 出出 發表于 06-21 10:37 ? 2012次 閱讀
          rt-thread 驅動篇(一) serialX 框架理論

          rt-thread 優化系列(一) 之 過多關中斷

          關于優化的話題永遠不過時,沒期限。
          的頭像 出出 發表于 06-21 09:03 ? 1421次 閱讀

          rt-thread 優化系列(0) SysTick 優化分析

          論壇里有人提出了一個疑問,說 STM32 系列 bsp 在初始化系統時鐘的過程中使用到了 tick ....
          的頭像 出出 發表于 06-21 08:55 ? 1249次 閱讀

          RT-Thread記錄(五、RT-Thread 臨界區保護)

          本文聊聊臨界區,以及RT-Thread對臨界區的處理
          的頭像 矜辰所致 發表于 06-20 16:06 ? 2097次 閱讀
          RT-Thread記錄(五、RT-Thread 臨界區保護)

          usbhost驅動相關疑問與調試記錄

          調試 stm32 的usb host 的艱辛歷程。希望有遇到相同問題的人能從中發現點兒什么。
          的頭像 出出 發表于 06-20 15:24 ? 176次 閱讀

          RT-Thread記錄(四、RTT時鐘節拍和軟件定時器)

          RT-Thread第4課,聽聽 RT-Thread 的心跳,再學習一下基于心跳的軟件定時器使用。
          的頭像 矜辰所致 發表于 06-20 11:50 ? 2066次 閱讀
          RT-Thread記錄(四、RTT時鐘節拍和軟件定時器)

          rt-thread 驅動篇(六)serialX弊端及解決方法

          serialX 作為一個非阻塞串口驅動框架,在遇到一些異常時,需要做一些特殊處理,今天,筆者帶大家來....
          的頭像 出出 發表于 06-20 11:43 ? 239次 閱讀

          RT-Thread記錄(三、RT-Thread線程操作函數)

          講完了RT-Thread開發環境,啟動流程,啟動以后當然是開始跑線程了,那么自然我們得學會如何創建線....
          的頭像 矜辰所致 發表于 06-20 00:31 ? 1731次 閱讀
          RT-Thread記錄(三、RT-Thread線程操作函數)

          RT-Thread記錄(二、RT-Thread內核啟動流程)

          在前面我們RT-Thread Studio工程基礎之上講一講RT-Thread內核啟動流程.
          的頭像 矜辰所致 發表于 06-20 00:30 ? 1797次 閱讀
          RT-Thread記錄(二、RT-Thread內核啟動流程)

          RT-Thread記錄(一、版本開發環境及配合CubeMX)

          RT-Thread 學習記錄的第一篇文章,RT-Thread記錄(一、RT-Thread 版本、RT....
          的頭像 矜辰所致 發表于 06-20 00:28 ? 1801次 閱讀
          RT-Thread記錄(一、版本開發環境及配合CubeMX)

          基于Select/Poll實現并發服務器(二)

          開發環境: RT-Thread版本:4.0.3 操作系統:Windows10 Keil版本:V5.3....
          的頭像 嵌入式大雜燴 發表于 06-20 00:26 ? 1836次 閱讀
          基于Select/Poll實現并發服務器(二)

          基于Select/Poll實現并發服務器(一)

          ? 開發環境: RT-Thread版本:4.0.3 操作系統:Windows10 Keil版本:V5....
          的頭像 嵌入式大雜燴 發表于 06-20 00:20 ? 1763次 閱讀
          基于Select/Poll實現并發服務器(一)

          MPU6050簡介及rt-thread軟件包使用

          小伙伴們大家好,好久不更新RT-Thread實戰筆記啦,今天來搞一搞MPU6050,話不多說,淦!
          的頭像 RTThread物聯網操作系統 發表于 06-17 10:42 ? 233次 閱讀

          使用memheap內存管理算法對片內RAM和片外SDRAM進行管理的方法

          ??在開發中由于單片機自帶的 RAM 空間比較小,有時候需要擴展片外的 RAM 以供使用,RT-Th....
          的頭像 RT-Thread 操作系統 發表于 06-17 08:53 ? 262次 閱讀
          使用memheap內存管理算法對片內RAM和片外SDRAM進行管理的方法

          RT-Thread自動初始化機制

          ??在分析之前首先查閱 RT-Thread 的官方文檔 [RT-Thread 自動初始化機制](ht....
          的頭像 RT-Thread 操作系統 發表于 06-17 08:52 ? 203次 閱讀
          RT-Thread自動初始化機制

          rt-thread 驅動篇(五)serialX 小試牛刀

          終于來到了 serialX 的實踐篇,期待很久了。
          的頭像 出出 發表于 06-16 11:29 ? 241次 閱讀
          rt-thread 驅動篇(五)serialX 小試牛刀

          AT組件的實現過程和代碼的調用邏輯

          AT組件的核心處理邏輯是將收到的 AT 模組的應答信息放到 recv_line_buf 緩沖區中,然....
          的頭像 RT-Thread 操作系統 發表于 06-15 09:21 ? 204次 閱讀
          AT組件的實現過程和代碼的調用邏輯

          想要使用AI卻不會AI建模嗎

          人類經歷了三次工業革命,無論是蒸汽機、電力還是電子信息技術,每一次革命都給人類的生產力帶來了幾十倍的....
          的頭像 科技綠洲 發表于 06-14 14:29 ? 729次 閱讀

          nr_micro_shell介紹及使用方法

          在進行調試和維護時,常常需要與單片機進行交互,獲取、設置某些參數或執行某些操作,nr_micro_s....
          的頭像 MCU開發加油站 發表于 06-13 16:58 ? 381次 閱讀

          rt-thread 驅動篇(七)GPIO驅動

          一提 GPIO 可能會讓很多人覺得不屑,這么簡單的東西有什么可說的,也就是一個拉低拉高,誰不會呢。
          的頭像 出出 發表于 06-13 09:48 ? 400次 閱讀

          中斷方式和DMA方式有什么不同

          1、中斷方式是在數據緩沖寄存區滿后,發中斷請求,CPU進行中斷處理。
          的頭像 嵌入式應用開發 發表于 06-10 11:44 ? 3388次 閱讀
          中斷方式和DMA方式有什么不同

          rt-thread 驅動篇(四)serialX 多架構適配

          自筆者提出 serialX 串口驅動到今天近半年了,當初只在 STM32F4 NUC970 兩個系列....
          的頭像 出出 發表于 06-10 10:21 ? 303次 閱讀

          RT-Thread專業版實現對于龍芯全系列處理器支持

          近日,在龍芯中科與睿賽德科技的共同努力下,RT-Thread專業版已實現了對LoongArch32和....
          的頭像 科技綠洲 發表于 06-09 16:45 ? 756次 閱讀

          龍芯中科LoongArch自主指令系統為產業生態保駕護航

          目前,龍芯中科業務已全部轉向 LoongArch 自主指令系統架構,龍芯 2K1000LA 處理器的....
          的頭像 科技綠洲 發表于 06-08 11:10 ? 331次 閱讀

          RT-Thread 4.1.0正式添加對Arm Compiler 6支持

          在 RT-Thread 4.1.0 正式發布版中,添加了對 Arm Compiler 6 的支持,用....
          的頭像 科技綠洲 發表于 06-01 15:20 ? 335次 閱讀
          RT-Thread 4.1.0正式添加對Arm Compiler 6支持

          Cortex-M0處理器內核異常中斷簡介

          在Cortex‐M0內核上搭載了一個異常響應系統,支持眾多的系統異常和外部中斷。其中,編號為1-15....
          的頭像 安芯教育科技 發表于 06-01 14:41 ? 328次 閱讀

          RT-Thread 4.1.0 正式發布版中的ArmClang

          ArmClang 相較于 Armcc, 支持的架構更多,Armcc支持到Armv7架構,armcla....
          的頭像 RTThread物聯網操作系統 發表于 06-01 09:24 ? 271次 閱讀

          RT-Thread Studio如何測試Ethernet連網

          RT-Thread 是一款開源實時操作系統,包括 RT-Thread 內核、FinSH 命令行工具、....
          的頭像 科技綠洲 發表于 05-31 11:17 ? 370次 閱讀
          RT-Thread Studio如何測試Ethernet連網

          世強硬創平臺幫助企業客戶高效完成BOM替換

            眾所周知,產品已經量產的情況下,一顆物料的缺失,足以導致企業砍掉一條賴以生存的產品線,甚至全面停....
          的頭像 世強SEKORM 發表于 05-31 10:52 ? 184次 閱讀

          基于標準庫的keil移植到RT-thread例程

          打開pack安裝包查看如下的顯示為安裝好的RT-Rhread。
          的頭像 嵌入式應用開發 發表于 05-30 14:22 ? 282次 閱讀
          基于標準庫的keil移植到RT-thread例程

          RT-Thread全球技術大會:CherryUSB協議棧的原理與使用

          API太多導致不知道用哪些,分類亂沒有規律,協議棧文件太多,代碼處理復雜導致代碼冗長
          的頭像 倩倩 發表于 05-28 15:17 ? 507次 閱讀
          RT-Thread全球技術大會:CherryUSB協議棧的原理與使用

          RT-Thread技術大會:RNDIS主機驅動軟件應用說明

          在RT-Thread全球技術大會上,開發者詳細介紹了RNDIS主機驅動軟件的應用說明,據圖如下圖:
          的頭像 姚小熊27 發表于 05-28 14:57 ? 580次 閱讀
          RT-Thread技術大會:RNDIS主機驅動軟件應用說明

          RT-Thread全球技術大會:RNDIS通信協議原理及主機驅動框架

          在RT-Thread全球技術大會直播上,開發者詳細介紹了RNDIS通信協議的原理及主機驅動框架,具體....
          的頭像 姚小熊27 發表于 05-28 14:43 ? 480次 閱讀
          RT-Thread全球技術大會:RNDIS通信協議原理及主機驅動框架