吴忠躺衫网络科技有限公司

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

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

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

使用MM32F3270基于Azure RTOS事件標(biāo)志組的應(yīng)用

jf_pJlTbmA9 ? 來源:靈動MM32MCU ? 作者:靈動MM32MCU ? 2023-10-27 11:31 ? 次閱讀

簡 介

Azure RTOS ThreadX 是 Microsoft 提供的高級工業(yè)級實(shí)時操作系統(tǒng) (RTOS)。它是專門為深度嵌入式實(shí)時 IoT 應(yīng)用程序設(shè)計的。Azure RTOS ThreadX 提供高級計劃、通信、同步、計時器、內(nèi)存管理和中斷管理功能。此外,Azure RTOS ThreadX 具有許多高級功能,包括 picokernel? 體系結(jié)構(gòu)、preemption-threshold? 計劃、event-chaining?、執(zhí)行分析、性能指標(biāo)和系統(tǒng)事件跟蹤。Azure RTOS ThreadX 非常易于使用,適用于要求極其苛刻的嵌入式應(yīng)用程序。Azure RTOS ThreadX 在各種產(chǎn)品(包括消費(fèi)者設(shè)備、醫(yī)療電子設(shè)備和工業(yè)控制設(shè)備)上的部署次數(shù)已達(dá)數(shù)十億次。

具體的介紹和用戶指南可以參考:

https://docs.microsoft.com/zh-cn/azure/rtos/threadx/

在前文描述移植基本內(nèi)核的基礎(chǔ)上,本文描述了如何基于MM32F3270系列MCU結(jié)合Azure RTOS ThreadX應(yīng)用事件標(biāo)志組的使用,引導(dǎo)用戶理解Azure RTOS ThreadX事件標(biāo)志組的功能。

表 1 適用系列型號

wKgaomUD5LSAM5-tAAAgWpJ2aBA500.png

1、移植應(yīng)用的準(zhǔn)備

1.1 硬件開發(fā)板的準(zhǔn)備

該移植過程中應(yīng)用的開發(fā)板為MM32的EVB-F3270,板載MM32F3273G9P。

wKgZomUD0G6AfPVFAAeCJdydFxg666.png

EVB-F3270 (MM32F3273G9P)的簡要參數(shù)

Arm Cortex-M3 內(nèi)核

● 板載 MM32F3273G9P(LQFP144)

USB Host / Device、SPI、I2C

● 4 x Key、4 x LED

● I2S Speaker

TF-Card

Ethernet PHY

1.2 軟件的準(zhǔn)備

庫函數(shù)和例程(Lib Samples)

該移植過程中應(yīng)用的 Firmware 分別為 MM32F3270 庫函數(shù)和例程,下載地址:

https://www.mindmotion.com.cn/products/mm32mcu/mm32f/mm32f_mainstream/mm32f3270/

wKgaomUD0HCALXFWAAB_Ctq_biQ840.png

Azure RTOS ThreadX(源碼)

ThreadX 的源代碼已經(jīng)開放,我們可以從 ThreadX 公共源代碼存儲庫獲取 Azure RTOS ThreadX,網(wǎng)址為:https://github.com/azure-rtos/threadx/

具體的商用使用條件參考Azure的許可證說明:

https://www.microsoft.com/en-us/legal/intellectualproperty/tech-licensing/programs?msclkid=f7ab4ff3afa011ec90a79366a52034fa activetab=pivot1:primaryr11

Microsoft publishes the Azure RTOS source code to GitHub. No license is required to install and use the software for internal development, testing, and evaluation purposes. A license is required to distribute or sell components and devices unless using Azure RTOS licensed hardware.

Azure RTOS 何時需要許可證?

Microsoft 將 Azure RTOS 源代碼發(fā)布到 GitHub。安裝和使用該軟件進(jìn)行內(nèi)部開發(fā)、測試和評估無需許可證。分發(fā)或銷售組件和設(shè)備需要許可證,除非使用 Azure RTOS 許可的硬件。

ThreadX 安裝

可以通過將 GitHub 存儲庫克隆到本地計算機(jī)來安裝 ThreadX。下面是用于在 PC 上創(chuàng)建 ThreadX 存儲庫的克隆的典型語法。

shell復(fù)制

git clone https://github.com/azure-rtos/threadx

或者,也可以使用 GitHub 主頁上的“下載”按鈕來下載存儲庫的副本。

下載后的倉庫代碼目錄列表如下:

wKgZomUD0HGAS4OEAAB8V8GujVs022.png

Azure RTOS ThreadX(源碼)支持的開發(fā)環(huán)境

ThreadX 內(nèi)核提供好了各種主流硬件平臺和軟件平臺的移植文件,以Cortex_M3為例,可以支持以下六種開發(fā)環(huán)境:

wKgaomUD0HOAGQOLAAAVCEgEeAE264.png

本次移植過程使用Azure RTOS原有的sample_threadx.c Samples為例子,稍作修改,演示了事件標(biāo)志組的功能與應(yīng)用。

2、Threadx 事件標(biāo)志組的應(yīng)用

該章節(jié)介紹了事件標(biāo)志組應(yīng)用實(shí)現(xiàn)的過程和注意事項,該演示程序可在MM32F3273G9P的EVB-F3270上運(yùn)行。

此示例在文件 main_event_flags_demo.c 中定義,旨在說明如何在嵌入式多線程環(huán)境中使用事件標(biāo)志組,實(shí)現(xiàn)任務(wù)之間的數(shù)據(jù)信號傳遞與中斷或任務(wù)同步的相互關(guān)系。

2.1 Azure Threadx event簡介

事件標(biāo)志是Threadx線程同步的一個強(qiáng)大工具。事件標(biāo)志可以被任何線程設(shè)置或清除,也可以被任何線程檢查。線程可以在等待設(shè)置某些事件標(biāo)志組時掛起。

每個事件標(biāo)志用1 bit表示,事件標(biāo)志以32個為一組排列,組成一個事件標(biāo)志組。之后的所有操作都是以組為單位。

wKgZomUD5L2ACqKMAAAHIdHaRXg942.png

線程可以同時對一個組中的所有32個事件標(biāo)志進(jìn)行操作。

要設(shè)置或清除事件標(biāo)志組,可以使用tx_event_flags_set服務(wù)。

使用tx_event_flags_get服務(wù)可以“獲取”事件標(biāo)志組。

獲取事件標(biāo)志時,線程可以等待一個事件標(biāo)志(一段時間或永久等待),直到該事件標(biāo)志被另一個線程或中斷設(shè)置為1(set狀態(tài))。

對于嵌入式應(yīng)用來說,就有點(diǎn)像對一個個的寄存器位進(jìn)行“ ”和“|”操作。

使用事件標(biāo)志組可以有效的解決中斷服務(wù)程序和任務(wù)之間的同步問題。

wKgaomUD5L6ATEOFAACmJ_T8xow709.png

2.2 Azure Threadx event的結(jié)構(gòu)體

Event的結(jié)構(gòu)體

typedef struct TX_EVENT_FLAGS_GROUP_STRUCT
{
    /* Define the event flags group ID used for error checking.  */
    ULONG               tx_event_flags_group_id;
    /* Define the event flags group's name.  */
    CHAR                *tx_event_flags_group_name;
    /* Define the actual current event flags in this group. A zero in a
       particular bit indicates the event flag is not set.  */
    ULONG               tx_event_flags_group_current;
    /* Define the reset search flag that is set when an ISR sets flags during
       the search of the suspended threads list.  */
    UINT                tx_event_flags_group_reset_search;
    /* Define the event flags group suspension list head along with a count of
       how many threads are suspended.  */
    struct TX_THREAD_STRUCT
                        *tx_event_flags_group_suspension_list;
    UINT                tx_event_flags_group_suspended_count;
    /* Define the created list next and previous pointers.  */
    struct TX_EVENT_FLAGS_GROUP_STRUCT
                        *tx_event_flags_group_created_next,
                        *tx_event_flags_group_created_previous;
    /* Define the delayed clearing event flags.  */
    ULONG               tx_event_flags_group_delayed_clear;
#ifdef TX_EVENT_FLAGS_ENABLE_PERFORMANCE_INFO
    /* Define the number of event flag sets.  */
    ULONG               tx_event_flags_group_performance_set_count;
    /* Define the number of event flag gets.  */
    ULONG               tx_event_flags_group__performance_get_count;
    /* Define the number of event flag suspensions.  */
    ULONG               tx_event_flags_group___performance_suspension_count;
    /* Define the number of event flag timeouts.  */
    ULONG               tx_event_flags_group____performance_timeout_count;
#endif
#ifndef TX_DISABLE_NOTIFY_CALLBACKS
    /* Define the application callback routine used to notify the application when
       an event flag is set.  */
    VOID                (*tx_event_flags_group_set_notify)(struct TX_EVENT_FLAGS_GROUP_STRUCT *group_ptr);
#endif
    /* Define the port extension in the event flags group control block. This
       is typically defined to whitespace in tx_port.h.  */
    TX_EVENT_FLAGS_GROUP_EXTENSION
} TX_EVENT_FLAGS_GROUP;

Event flags包含成員的含義:

wKgaomUD5MCAR9pdAABWNROgg4U120.png

2.3 Azure Threadx event的主要函數(shù)與功能

事件標(biāo)志組的主要函數(shù)

wKgZomUD5MGAWFLUAABQC6xt-eQ507.png

2.4 事件標(biāo)志組的應(yīng)用演示

2.4.1 工程目錄的建立

打開目標(biāo)工程文件夾“MM32F3270Project”:

wKgaomUD0HSAf2J-AAAVVpkOLro020.png

移除原有樣例.c 文件sample_threadx.c:

wKgZomUD0HaAUtetAACojJGdRw4242.png

參考sample_threadx.c建立main_event_flags_demo.c文件,并添加hardware目錄中的led.c到工程項目中。

wKgZomUD5MWAGLLCAAAub6vsmtA647.png

2.4.2 創(chuàng)建事件標(biāo)志組tx_event_flags_create

聲明需要使用的事件標(biāo)志組變量。

調(diào)用tx_event_flags_create, 建立一個事件標(biāo)志組。

創(chuàng)建一個待使用的事件標(biāo)志組

#include "tx_api.h"

#define DEMO_STACK_SIZE         1024

/* Define the ThreadX object control blocks...  */
TX_THREAD               thread_0;
TX_THREAD               thread_5;

TX_EVENT_FLAGS_GROUP    event_flags_0;

/* Define what the initial system looks like.  */
void    tx_application_define(void *first_unused_memory)
{
    /* Create the main thread.  */
    tx_thread_create( thread_0, "thread 0", thread_0_entry, 0,  
            thread_0_stack, DEMO_STACK_SIZE, 
            1, 1, TX_NO_TIME_SLICE, TX_AUTO_START);
    /* Create thread 5.  This thread simply pends on an event flag which will be set
       by thread_0.  */
    tx_thread_create( thread_5, "thread 5", thread_5_entry, 5,  
            thread_5_stack, DEMO_STACK_SIZE, 
            4, 4, TX_NO_TIME_SLICE, TX_AUTO_START);
    /* Create the event flags group used by threads 0 and 5.  */
    tx_event_flags_create( event_flags_0, "event flags 0");
}

函數(shù)原型:

tx_event_flags_create函數(shù)原型

UINT  _tx_event_flags_create(TX_EVENT_FLAGS_GROUP *group_ptr, CHAR *name_ptr)

參數(shù):

● group_ptr:指向事件標(biāo)志組控制塊的指針。

● name_ptr:指向事件標(biāo)志組名稱的指針。

返回值:

● TX_SUCCESS:(0X00) 成功創(chuàng)建事件組。

● TX_GROUP_ERROR:(0x06) 事件組指針無效。指針為 NULL 或事件組已創(chuàng)建。

● NX_CALLER_ERROR:(0x13) 此服務(wù)的調(diào)用方無效。

應(yīng)用中該實(shí)現(xiàn)函數(shù):

tx_event_flags_create( event_flags_0, "event flags 0");

A. 第1個參數(shù)是事件標(biāo)志組引用的指針,引用聲明的事件標(biāo)注“event_flags_0”指向的地址。

B. 第2個參數(shù)是事件標(biāo)志組的名字,字符串值為" event flags 0"。

2.4.3 創(chuàng)建一個任務(wù)用于發(fā)送事件標(biāo)志組

在此建立一個定時發(fā)送一個事件標(biāo)志組的簡單任務(wù),發(fā)送完成,發(fā)送任務(wù)計數(shù)值加一:

創(chuàng)建一個發(fā)送事件標(biāo)志組的任務(wù)

/* Define the test threads.  */
void    thread_0_entry(ULONG thread_input)
{
    UINT status;
    /* This thread simply sits in while-forever-sleep loop.  */
    while(1)
    {
        /* Increment the thread counter.  */
        thread_0_counter++;
        /* Sleep for 10 ticks.  */
        tx_thread_sleep(10);
        /* Set event flag 0 to wakeup thread 5.  */
        status =  tx_event_flags_set( event_flags_0, 0x1, TX_OR);
        /* Check status.  */
        if (status != TX_SUCCESS)
            break;
    }
}

函數(shù)原型:

_tx_event_flags_set函數(shù)原型

UINT  _tx_event_flags_set(TX_EVENT_FLAGS_GROUP *group_ptr, ULONG flags_to_set, UINT set_option)

參數(shù):

● group_ptr:指向以前創(chuàng)建的事件標(biāo)志組控制塊的指針。

● flags_to_set:根據(jù)所選的 set-option,指定要設(shè)置或清除的事件標(biāo)志。

● set_option:指定將所指定的事件標(biāo)志與該組的當(dāng)前事件標(biāo)志進(jìn)行“AND”或“OR”運(yùn)算。以下是有效的選擇:

- TX_AND (0x02)

- TX_OR (0x00)

如果選擇 TX_AND,則會指定將所指定的事件標(biāo)志與該組的當(dāng)前事件標(biāo)志進(jìn)行“AND”運(yùn)算。此選項通常用于清除組中的事件標(biāo)志。否則,如果指定了 TX_OR,則對所指定的事件標(biāo)志與該組的當(dāng)前事件標(biāo)志進(jìn)行“OR”運(yùn)算。

返回值:

● TX_SUCCESS:(0X00) 成功設(shè)置事件標(biāo)志。

● TX_GROUP_ERROR:(0x06) 指向事件標(biāo)志組的指針無效。

● TX_OPTION_ERROR:(0x08) 指定的 set-option 無效。

應(yīng)用中該實(shí)現(xiàn)函數(shù):

status = tx_event_flags_set( event_flags_0, 0x1, TX_OR);

A. 第1個參數(shù)是事件標(biāo)志組引用的指針,引用聲明的事件標(biāo)注“event_flags_0”指向的地址。

B. 第2個參數(shù)是事件標(biāo)志組的名字,字符串值為" event flags 0"。

返回值

C. 第3個參數(shù)是TX_OR,則對所指定的事件標(biāo)志與該組的當(dāng)前事件標(biāo)志進(jìn)行“OR”運(yùn)算。

2.4.4 創(chuàng)建一個任務(wù)接收事件標(biāo)志組

在此建立一個任務(wù),實(shí)現(xiàn)接收收事件標(biāo)志組,接收事件設(shè)置值成功,接收任務(wù)計數(shù)值加一:

創(chuàng)建一個接收事件標(biāo)志組任務(wù)

void    thread_5_entry(ULONG thread_input)
{
    UINT status;
    ULONG actual_flags;
    /* This thread simply waits for an event in a forever loop.  */
    while(1)
    {
        /* Increment the thread counter.  */
        thread_5_counter++;
        /* Wait for event flag 0.  */
        status =  tx_event_flags_get( event_flags_0, 0x1, TX_OR_CLEAR, 
         actual_flags, TX_WAIT_FOREVER);
        /* Check status.  */
        if ((status != TX_SUCCESS) || (actual_flags != 0x1))
            break;
    }
}

函數(shù)原型:

_tx_event_flags_set函數(shù)原型

UINT  _tx_event_flags_get(TX_EVENT_FLAGS_GROUP *group_ptr, ULONG requested_flags,
                    UINT get_option, ULONG *actual_flags_ptr, ULONG wait_option)

參數(shù):

● group_ptr:指向以前創(chuàng)建的事件標(biāo)志組的指針。

● requested_flags:32 位無符號變量,表示請求的事件標(biāo)志。

● get_option:指定是否需要所有或任何請求的事件標(biāo)志。以下是有效的選擇:

- TX_AND (0x02)

- TX_AND_CLEAR (0x03)

- TX_OR (0x00)

- TX_OR_CLEAR (0x01)

如果選擇 TX_AND 或 TX_AND_CLEAR,則會指定所有事件標(biāo)志在組中都必須存在。如果選擇 TX_OR 或 TX_OR_CLEAR,則會指定任何事件標(biāo)志都符合要求。如果指定 TX_AND_CLEAR 或 TX_OR_CLEAR,則會清除滿足請求的事件標(biāo)志(設(shè)置為零)。

● actual_flags_ptr:指向放置檢索到的事件標(biāo)志的位置這一目標(biāo)的指針。注意,實(shí)際獲得的標(biāo)志可能包含沒有請求的標(biāo)志。

● wait_option:定義未設(shè)置所選事件標(biāo)志時服務(wù)的行為方式。

等待選項的定義如下:

- TX_NO_WAIT (0x00000000) - 如果選擇 TX_NO_WAIT,則無論此服務(wù)是否成功,都會導(dǎo)致立即從此服務(wù)返回。如果從非線程(例如初始化、計時器或 ISR)調(diào)用服務(wù),則這是唯一有效的選項。

- TX_WAIT_FOREVER 超時值 (0xFFFFFFFF) - 選擇 TX_WAIT_FOREVER 會導(dǎo)致發(fā)出調(diào)用的線程無限期掛起,直到事件標(biāo)志可用為止。

- 超時值(0x00000001 至 0xFFFFFFFE)- 如果選擇一個數(shù)值(1 到 0xFFFFFFFE),則會指定在等待事件標(biāo)志時發(fā)出調(diào)用的線程保持掛起的最大計時器時鐘周期數(shù)。

返回值:

● TX_SUCCESS:(0X00) 成功獲取事件標(biāo)志。

● TX_DELETED:(0x01) 線程掛起時刪除了事件標(biāo)志組。

● TX_NO_EVENTS:(0X07) 服務(wù)無法在指定的等待時間內(nèi)獲取指定的事件。

● TX_WAIT_ABORTED:(0x1A) 掛起狀態(tài)由其他線程、計時器或 ISR 中止。

● TX_GROUP_ERROR:(0x06) 事件標(biāo)志組指針無效。

● TX_PTR_ERROR:(0x03) 指向?qū)嶋H事件標(biāo)志的指針無效。

● TX_WAIT_ERROR:(0x04) 從非線程調(diào)用時指定了除 TX_NO_WAIT 以外的等待選項。

● TX_OPTION_ERROR:(0x08) 指定的 get-option 無效。

應(yīng)用中該實(shí)現(xiàn)函數(shù):

status = tx_event_flags_get( event_flags_0, 0x1, TX_OR_CLEAR, actual_flags, TX_WAIT_FOREVER);

A. 第1個參數(shù)是事件標(biāo)志組引用的指針,引用聲明的事件標(biāo)注“event_flags_0”指向的地址。

B. 第2個參數(shù)是根據(jù)所選的 get-option,指定要設(shè)置或清除的事件標(biāo)志等于0x01。

C. 第3個參數(shù)是TX_OR_CLEAR,則會判斷指定任何事件標(biāo)志都符合要求,符合后并清除。

3、Threadx 的事件標(biāo)志組應(yīng)用實(shí)現(xiàn)與調(diào)試

3.1 代碼實(shí)現(xiàn)

下載調(diào)試默認(rèn)會運(yùn)行到main()函數(shù),如下為全部實(shí)現(xiàn)的代碼。

Demo演示代碼

/* This is a small demo of the high-performance ThreadX kernel.  It includes examples of six
   threads of different priorities, using a message an event flags group.  */

#include "tx_api.h"

#define DEMO_STACK_SIZE         1024

/* Define the ThreadX object control blocks...  */
TX_THREAD               thread_0;
TX_THREAD               thread_5;

TX_EVENT_FLAGS_GROUP    event_flags_0;

/* Define the counters used in the demo application...  */
ULONG                   thread_0_counter;
ULONG                   thread_5_counter;

/* Define the thread stacks.  */
UCHAR                   thread_0_stack[DEMO_STACK_SIZE];
UCHAR                   thread_5_stack[DEMO_STACK_SIZE];

/* Define thread prototypes.  */
void    thread_0_entry(ULONG thread_input);
void    thread_5_entry(ULONG thread_input);

/* Define main entry point.  */
int main()
{
    /* Enter the ThreadX kernel.  */
    tx_kernel_enter();
}

/* Define what the initial system looks like.  */
void    tx_application_define(void *first_unused_memory)
{
    /* Create the main thread.  */
    tx_thread_create( thread_0, "thread 0", thread_0_entry, 0,  
            thread_0_stack, DEMO_STACK_SIZE, 
            1, 1, TX_NO_TIME_SLICE, TX_AUTO_START);
    /* Create thread 5.  This thread simply pends on an event flag which will be set
       by thread_0.  */
    tx_thread_create( thread_5, "thread 5", thread_5_entry, 5,  
            thread_5_stack, DEMO_STACK_SIZE, 
            4, 4, TX_NO_TIME_SLICE, TX_AUTO_START);
    /* Create the event flags group used by threads 0 and 5.  */
    tx_event_flags_create( event_flags_0, "event flags 0");
}

/* Define the test threads.  */
void    thread_0_entry(ULONG thread_input)
{
    UINT status;
    /* This thread simply sits in while-forever-sleep loop.  */
    while(1)
    {
        /* Increment the thread counter.  */
        thread_0_counter++;
        /* Sleep for 10 ticks.  */
        tx_thread_sleep(10);
        /* Set event flag 0 to wakeup thread 5.  */
        status =  tx_event_flags_set( event_flags_0, 0x1, TX_OR);
        /* Check status.  */
        if (status != TX_SUCCESS)
            break;
    }
}

void    thread_5_entry(ULONG thread_input)
{
    UINT status;
    ULONG actual_flags;
    /* This thread simply waits for an event in a forever loop.  */
    while(1)
    {
        /* Increment the thread counter.  */
        thread_5_counter++;
        /* Wait for event flag 0.  */
        status =  tx_event_flags_get( event_flags_0, 0x1, TX_OR_CLEAR, 
                                                 actual_flags, TX_WAIT_FOREVER);
        /* Check status.  */
        if ((status != TX_SUCCESS) || (actual_flags != 0x1))
            break;
    }
}

3.2 下載與調(diào)試

進(jìn)入調(diào)試模式,可以看到接收事件標(biāo)志組成功。

wKgaomUD5MaAHpzaAADYqP6k5ns431.png

該demo示例,建立了2個線程,程序執(zhí)行一個發(fā)送事件標(biāo)志,另外一個線程接收事件標(biāo)志,實(shí)現(xiàn)執(zhí)行Task Counter與發(fā)送 接收的Message Counter的累加。

全速運(yùn)行后,可以看到相關(guān)的數(shù)值在變化:

wKgZomUD5MmAVShTAAAz4ZXPODg191.png

4、小結(jié)

這個演示程序中,使用了tx_thread_sleep()函數(shù)做了延時,剛好使得發(fā)送事件標(biāo)志組與接收事件標(biāo)志組一一配對,計數(shù)值累加后都是相等的,說明同步成功。

Azure RTOS ThreadX 的使用事件標(biāo)志組可以方便實(shí)現(xiàn)任務(wù)對任務(wù)或任務(wù)對中斷的同步,結(jié)合MM32F3270的強(qiáng)大性能,可以實(shí)現(xiàn)Azure RTOS的各種特色功能。

來源:靈動MM32MCU
免責(zé)聲明:本文為轉(zhuǎn)載文章,轉(zhuǎn)載此文目的在于傳遞更多信息,版權(quán)歸原作者所有。本文所用視頻、圖片、文字如涉及作品版權(quán)問題,請聯(lián)系小編進(jìn)行處理

審核編輯 黃宇

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

    關(guān)注

    22

    文章

    819

    瀏覽量

    119889
  • Azure
    +關(guān)注

    關(guān)注

    1

    文章

    124

    瀏覽量

    12810
收藏 人收藏

    評論

    相關(guān)推薦

    佳能發(fā)布RF16-28mm F2.8 IS STM鏡頭

    67mm,便于日常攜帶。它擁有F2.8恒定大光圈,采用1316片的光學(xué)設(shè)計,包括2片非球面鏡片和4片UD鏡片,能有效校正像差和色差,使畫面從中心到邊緣都有出色的銳度與清晰度。 RF16-28
    的頭像 發(fā)表于 01-24 09:52 ?140次閱讀

    靈動微電子MM32F5370 MCU產(chǎn)品特色

    MM32F3、靈動·天樞 MM32F5、靈動·玉衡 MM32G5、靈動·天璣 MM32H5 等子系列,MM32F5270、
    的頭像 發(fā)表于 01-10 10:02 ?365次閱讀
    靈動微電子<b class='flag-5'>MM32F</b>5370 MCU產(chǎn)品特色

    使用任務(wù)通知提高RTOS應(yīng)用的效率

    在實(shí)時嵌入式系統(tǒng)中,性能和資源效率是決定設(shè)計成敗的關(guān)鍵因素。傳統(tǒng)的實(shí)時操作系統(tǒng)(RTOS)提供了如隊列、信號量和事件機(jī)制,實(shí)現(xiàn)任務(wù)之間的同步和通信。FreeRTOS/SAFERTOS還提供一種方法可以使這些過程更快、更輕量化,即任務(wù)通知。
    的頭像 發(fā)表于 12-27 14:54 ?326次閱讀

    諾基亞擴(kuò)展與微軟Azure的數(shù)據(jù)中心網(wǎng)絡(luò)供應(yīng)協(xié)議

    近日,諾基亞公司于11月21日正式宣布,將其與微軟Azure之間的數(shù)據(jù)中心路由器和交換機(jī)供應(yīng)協(xié)議延長五年。這一決策標(biāo)志著諾基亞在數(shù)據(jù)中心網(wǎng)絡(luò)解決方案領(lǐng)域的持續(xù)深耕,以及與微軟Azure長期合作
    的頭像 發(fā)表于 11-22 13:53 ?231次閱讀

    MM32F5270】Keil開發(fā)環(huán)境搭建

    本文是對MM32F5270相關(guān)的靈動官網(wǎng)資料和社區(qū)現(xiàn)有幾篇環(huán)境搭建帖的整理和總結(jié)。詳細(xì)且完整的記錄了——如何從零搭建MM32F5270 Keil開發(fā)環(huán)境以及如何編譯運(yùn)行MM32F5270 SDK中
    的頭像 發(fā)表于 11-06 16:14 ?2965次閱讀
    【<b class='flag-5'>MM32F</b>5270】Keil開發(fā)環(huán)境搭建

    freertos和rtos區(qū)別是什么

    FreeRTOS 和 RTOS(實(shí)時操作系統(tǒng))是兩個不同的概念,但它們之間有緊密的聯(lián)系。FreeRTOS 是一個特定的開源實(shí)時操作系統(tǒng),而 RTOS 是實(shí)時操作系統(tǒng)的一般概念。 概念定義 RTOS
    的頭像 發(fā)表于 09-02 14:18 ?1507次閱讀

    RTOS的特性和類型

    實(shí)時操作系統(tǒng)(RTOS)是一種可運(yùn)行實(shí)時計算應(yīng)用程序的軟件平臺,用于處理具有明確時間約束的事件和數(shù)據(jù)。與通用操作系統(tǒng)(GPOS)不同,RTOS必須在有限的硬件資源上調(diào)度應(yīng)用程序之間的處理和數(shù)據(jù)共享
    的頭像 發(fā)表于 08-20 11:29 ?701次閱讀

    RTOS開發(fā)最佳實(shí)踐

    基于RTOS編寫應(yīng)用程序時,有一些要注意事項。在本節(jié)中,您將學(xué)習(xí)RTOS開發(fā)最佳實(shí)踐,例如POSIX合規(guī)性、安全性和功能安全認(rèn)證。
    的頭像 發(fā)表于 08-20 11:24 ?517次閱讀

    Palantir計劃在微軟Azure平臺上部署其人工智能產(chǎn)品

    Government及Azure Government Secret云平臺上。這一舉措標(biāo)志著兩家科技巨頭在支持美國政府及國防部等關(guān)鍵聯(lián)邦機(jī)構(gòu)方面邁出了堅實(shí)的一步。
    的頭像 發(fā)表于 08-12 16:07 ?818次閱讀

    怎么在STM32 Nucleo,STM32F072RB上使用mbed-rtos

    誰知道怎么在STM32 Nucleo,STM32F072RB上使用mbed-rtos。在mode在線平臺上導(dǎo)入了幾個mbed-rtos的例程,都不能使用,搞了很長時間也沒有個頭緒。求指導(dǎo)。
    發(fā)表于 05-17 08:02

    RTOS+LwIP Socket不工作的原因?

    本人用RTOS創(chuàng)建了五個任務(wù), 如下: /* RTOS 多任務(wù)創(chuàng)建調(diào)度機(jī)制 */ osThreadDef(TCPSOCKETSERVER, TCP_Socket_Server
    發(fā)表于 04-30 07:20

    使用FreeRTOS系統(tǒng)事件標(biāo)志有些收不到是怎么回事?

    教下,使用FreeRTOS的的件標(biāo)志, 任務(wù)貌似有些標(biāo)志位收不到,是怎么回事啊 ? 比如事件標(biāo)志的 bit5, bit8, bit7 可
    發(fā)表于 04-26 06:53

    請問CMSIS-RTOS2的事件標(biāo)志怎么使用?

    CMSIS-RTOS2的事件標(biāo)志怎么使用
    發(fā)表于 04-18 07:13

    HSW-EUP3270WIR1

    EUP3270-恒流/恒壓模式同步降壓型變換器概述EUP3270是一款能夠驅(qū)動4A連續(xù)負(fù)載并帶有優(yōu)良線性和負(fù)載調(diào)整率的的同步降壓型變換器。EUP3270的輸入電壓范圍是4.5V到30V,它可工作在
    發(fā)表于 04-09 08:40 ?0次下載

    使用STM32CubeMX生成的FreeRTOS系統(tǒng)中,似乎沒有新封裝的事件標(biāo)志,怎么解決?

    使用STM32CubeMX生成的FreeRTOS系統(tǒng)中,似乎沒有新封裝的事件標(biāo)志,如果按照原生的FreeRTOS使用事件標(biāo)志,則任務(wù)中的xEventGroupSetBits函數(shù)沒有
    發(fā)表于 03-22 08:34
    大发888 在线登陆| 大发888棋牌乐城下载| 真人百家乐官网什么平台| 水果机游戏机| 百家乐官网群shozo权威| 百家乐官网娱乐城新闻| 百家乐官网博娱乐网赌百家乐官网的玩法技巧和规则 | 六合彩脑筋急转弯| 七胜百家乐赌场娱乐网规则| 怎么玩百家乐官网呀| 大发888 dafa888 大发官网| 一直对百家乐很感兴趣.zibo太阳城娱乐城 | 大发888老虎机游戏| 百家乐视频游戏注册| 广水市| 大发888娱乐客户端| 网上百家乐网| 凯旋门百家乐娱乐城| 百家乐官网游戏免费下| 百家乐官网赌博赌博网站| 百家乐官网三号的赢法| 澳门赌场娱乐城| 德州扑克边池| 威尼斯人娱乐棋牌app| 百家乐老是输| 百家乐百家乐视频游戏世界| 百家乐官网游戏接口| 金宝博百家乐官网娱乐城| 乃东县| 班玛县| 建水县| 吉水县| 银泰国际娱乐城| 圣淘沙娱乐| e世博线上娱乐| 宝马会在线娱乐城| 大发扑克网| 双色球大赢家| 棋牌室赚钱吗| 威尼斯人娱乐城真人百家乐| 成都百家乐牌具|