原创 RT-Thread互斥鎖

互斥鎖和信號量很相似, RT-Thread 中的互斥鎖也有靜態和動態之分,和互斥鎖有關的 操作如下: 初始化—rt_mutex_init()(對應靜態互斥鎖); 建立—rt_mutex_create()(對應動態互斥鎖); 獲取—rt_

原创 結構體中動態內存的管理(malloc和free)

C語言中內存的管理主要是依據malloc和free實現的,其中malloc主要是實現內存的分配,而free則是實現內存的釋放。雖然這是我們已經很熟悉的,但是還是存在一些問題。特別是當結構體中存在指針的情況下,各種問題也就會展現出來。 其

原创 rt-thread線程源碼分析

rt-thread操作系統是一個多線程的操作系統,線程對於rt-thread來說是一個很重要的概念,因此,必須掌握它。 1 線程控制塊的數據結構 [cpp] view plain copy /**   * Thr

原创 【RT-Thread學習筆記 4】線程讓出實驗

API: rt_thread_yield 線程函數中調用,本線程釋放MCU。如果此時有別的相同優先級的任務整處於等待狀態,將獲得MCU使用權。 線程讓出就是給OS增加一個任務調度的機會。 創建兩個線程,觀察他們的結果: //線

原创 rt-thread的小內存管理算法分析

rt-thread的小內存管理是rt-thread操作系統默認堆內存管理算法,是一種簡單的內存分配算法,當有可用的內存的時候,會從中分割一塊來作爲分配的內存,而剩下的則返回到動態內存堆中.此算法採用了一個靜態鏈表來實現的,其源碼文件在

原创 RT-Thread信號量的基本操作

抽象的來講,信號量的特性如下:信號量是一個非負整數(車位數),所有通過它的線程/進程(車輛)都會將該整數減一(通過它當然是爲了使用資源),當該整數值爲 0 時,所有試圖通過它的線程都將處於等待狀態。在信號量上我們定義兩種操作: take

原创 ARM中的RO段、RW段和ZI段的區別

1 前言     一直以來對於ARM體系中所描述的RO,RW和ZI數據存在似是而非的理解,這段時間對其仔細瞭解了一番,發現了一些規律,理解了一些以前書本上有的但是不理解的東西,我想應該有不少人也有和我同樣的困惑,因此將我的一些關於RO,R

原创 rt-thread的定時器管理源碼分析

1 前言 rt-thread可以採用軟件定時器或硬件定時器來實現定時器管理的,所謂軟件定時器是指由操作系統提供的一類系統接口,它構建在硬件定時器基礎之上,使系統能夠提供不受數目限制的定時器服務。而硬件定時器是芯片本身提供的定時功能。一

原创 rt-thread的內核對象管理系統分析

rt-thread採用內核對象管理系統來訪問和管理所有內核對象.首先來看看rt-thread的內核對象是如何定義的: 1 數據結構 1.1 對象控制塊 在include/rtdef.h頭文件中可以找到內核對象有結構定義: [

原创 延長FLASH和EEPROM芯片寫入次數的小方法

開發電子產品時,常常需要斷電後保存某些數據,這就需要使用 FLASH或EEPROM芯片,這兩種芯片,可擦除的次數是有限制的,通常FLASH爲10萬次,EEPROM要多一點,爲100萬甚至1000萬次。 FLASH的擦除不能單個字節進

原创 RT-Thread的線程間同步

禁止系統調度 上一節《 多線程導致的臨界區問題》中由於 test1 線程被 test2 線程打斷,才導致了我們沒有得到預期的結果,我們一般可通過關閉中斷和調度器上鎖這兩種簡單的途徑來禁止系統調度,防止線程被打斷,從而保證臨界區不被破壞。

原创 rt-thread線程調度器源碼分析

1 前言 RT-Thread中提供的線程調度器是基於全搶佔式優先級的調度,在系統中除了中斷處理函數、調度器上鎖部分的代碼和禁止中斷的代碼是不可搶佔的之外,系統的其他部分都是可以搶佔的,包括線程調度器自身.系統總共支持256個優先級(

原创 藍牙 Mesh會是最好的物聯網協議嗎?

各廠商藍牙Mesh技術的到來,讓不少智能家居廠商看到新的市場和希望,這其中不僅是它在智能家居的應用,更有它在Bluetooth Smart所涉及的所有垂直應用領域的潛力。那什麼是mesh網絡呢?藍牙 Mesh又是怎麼回事?它會一統物聯網

原创 RT-Thread信號量實際運用—按鍵點燈

上面是魔笛開發板上 LED 和按鍵的 IO 分佈,我們通過信號量的方法來同步按鍵線程和LED 線程,實現當 enter 鍵按下後,點亮或關閉 LED 的動作。 /*********************************

原创 RT-Thread創建靜態、動態線程

RT-Thread 實時操作系統核心是一個高效的硬實時核心,它具備非常優異的實時性、穩 定性、可剪裁性,當進行最小配置時,內核體積可以到 3k ROM 佔用、 1k RAM 佔用。  RT-Thread 中的“線程”一般由三部分組