www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁(yè) > 公眾號(hào)精選 > 嵌入式云IOT技術(shù)圈
[導(dǎo)讀]前幾天拿到了騰訊汪總贈(zèng)送的EVB_MX+以及EVB_LX開(kāi)發(fā)板,它們長(zhǎng)下面這個(gè)樣子,看起來(lái)很輕便,即使是外出我也可以隨身帶著它隨時(shí)隨地進(jìn)行玩耍,就和小熊派一樣,整體給人感覺(jué)就非常舒服~

1、騰訊物聯(lián)網(wǎng)開(kāi)發(fā)板開(kāi)箱

前幾天拿到了騰訊汪總贈(zèng)送的EVB_MX+以及EVB_LX開(kāi)發(fā)板,它們長(zhǎng)下面這個(gè)樣子,看起來(lái)很輕便,即使是外出我也可以隨身帶著它隨時(shí)隨地進(jìn)行玩耍,就和小熊派一樣,整體給人感覺(jué)就非常舒服。

一看這個(gè)開(kāi)發(fā)板外觀(guān)以及包裝盒大家就想到了之前的小熊派,不錯(cuò),它們可是有血緣關(guān)系的!但EVB_MX+的資源更加豐富噢!有關(guān)小熊派的評(píng)測(cè)文章如下:


網(wǎng)紅物聯(lián)網(wǎng)開(kāi)發(fā)板小熊派使用評(píng)測(cè)


迫不及待開(kāi)啟評(píng)測(cè)模式,我們先來(lái)看看這兩個(gè)開(kāi)發(fā)板的基本介紹以及功能分布,最后選取一個(gè)入門(mén)最快的平臺(tái),移植TecentOS tiny,完善最基礎(chǔ)的實(shí)驗(yàn)。

1、EVB_MX+簡(jiǎn)介

EVB_MX+使用STM32L431RCT6作為主控,支持傳感器擴(kuò)展E53接口、支持網(wǎng)絡(luò)模塊擴(kuò)展WAN接口、具有豐富的擴(kuò)展接口等等。騰訊TencentOS tiny 團(tuán)隊(duì)聯(lián)合南京厚德物聯(lián)網(wǎng)有限公司在這個(gè)板子上花費(fèi)了不少心血,參考資料可謂是相當(dāng)完善,零基礎(chǔ)小白看著騰訊的開(kāi)源文檔都能實(shí)現(xiàn)手把手移植TencentOS tiny到相關(guān)平臺(tái),手把手上手TencentOS tiny,據(jù)說(shuō)移植TencentOS tiny到STM32相當(dāng)容易噢!


EVB_MX+開(kāi)發(fā)板資源如下:

2、EVB_LX簡(jiǎn)介

EVB_LX使用GD32VF103RBT6作為主控,一樣和EVB_MX+支持傳感器擴(kuò)展E53接口、支持網(wǎng)絡(luò)模塊擴(kuò)展WAN接口、具有豐富的擴(kuò)展接口等等。這是TencentOS tiny 團(tuán)隊(duì)聯(lián)合兆易創(chuàng)新(GD32)、南京厚德物聯(lián)網(wǎng)有限公司三方合作設(shè)計(jì)的一款物聯(lián)網(wǎng)評(píng)估板,用于TencentOS tiny 基礎(chǔ)內(nèi)核、RISC-V新IP核架構(gòu)和IoT組件功能體驗(yàn)和評(píng)估。

近年來(lái),隨著國(guó)際形勢(shì)日益嚴(yán)峻,國(guó)產(chǎn)半導(dǎo)體行業(yè)也在不斷崛起,而兆易創(chuàng)新可謂是芯片國(guó)產(chǎn)化的急行軍,它快速借鑒國(guó)內(nèi)以及國(guó)外的優(yōu)勢(shì)資源,吸取教訓(xùn),不斷完善自己的生態(tài)鏈。在國(guó)內(nèi)已經(jīng)有不少的廠(chǎng)家開(kāi)始用上了兆易的芯片做了很多成熟穩(wěn)定的產(chǎn)品,特別是在工控行業(yè),兆易32位芯片逐步取代國(guó)外32位主流控制芯片,相信有朝一日定能與國(guó)外的半導(dǎo)體行業(yè)一較高下,成為未來(lái)芯片設(shè)計(jì)領(lǐng)域的佼佼者!

那么移植一個(gè)TencentOS tiny到開(kāi)發(fā)板上真的有那么簡(jiǎn)單嗎?我們以將TencentOS tiny移植到EVB_MX+為例。


EVB_LX開(kāi)發(fā)板資源如下:

3、TencentOS tiny EVB_MX+初體驗(yàn)

3.1、準(zhǔn)備一份裸機(jī)工程

以下是我配置的LED、按鍵、時(shí)鐘、串口、SWD調(diào)試口的裸機(jī)工程,這里我們直接借助STM32CubeMX生成就好了:

(1)配置LED、按鍵

(2)配置時(shí)鐘

(3)配置串行調(diào)試口

(4)配置調(diào)試串口

(5)生成基礎(chǔ)裸機(jī)工程

設(shè)置外設(shè)以單獨(dú)的文件生成

最后點(diǎn)擊生成代碼即可,我是屬于Keil環(huán)境下進(jìn)行開(kāi)發(fā)。

3.2、移植TencentOS tiny到EVB_MX+

TencentOS tiny整體架構(gòu)

從TencentOS tiny開(kāi)源的Github或者碼云倉(cāng)庫(kù)下載整個(gè)SDK包,如下所示:

TencentOS tiny?Github倉(cāng)庫(kù)地址:

https://github.com/Tencent/TencentOS-tiny

TencentOS tiny參考文檔地址:

https://cloud.tencent.com/document/product/1098


首先我們重新在別的地方創(chuàng)建一個(gè)TencentOS tiny,然后把我們下載到的包里的arch、board、kernel、osal四個(gè)文件夾拷貝出來(lái)放到我們新創(chuàng)建的TencentOS tiny文件夾,最后我們?cè)偈謩?dòng)創(chuàng)建一個(gè)TOS_CONFIG,用于放置TencentOS tiny的配置文件,效果如下:

接下來(lái)我們把剛剛創(chuàng)建好的裸機(jī)工程First_Test放到board文件夾下:

一級(jí)目錄 二級(jí)目錄 說(shuō)明
arch arm TencentOS tiny適配的IP核架構(gòu)(含M核中斷、調(diào)度、tick相關(guān)代碼)
board First_Test 移植目標(biāo)芯片的工程文件
kernel core TencentOS tiny內(nèi)核源碼

pm TencentOS tiny低功耗模塊源碼
osal cmsis_os TencentOS tiny提供的cmsis os 適配

這時(shí)候我們的目錄架構(gòu)如上所示,打開(kāi)First_Test的Keil MDK工程。

(1)添加工程文件

以上需要選擇對(duì)應(yīng)芯片架構(gòu),詳細(xì)請(qǐng)參考10.Porting_Manual_for_KEIL.md文檔說(shuō)明,如果SDK包沒(méi)有的話(huà)則需要自己去移植。


最后可以看到相關(guān)文件已經(jīng)包含進(jìn)來(lái)了:

(2)添加文件路徑

這里要注意的是需要添加對(duì)應(yīng)芯片架構(gòu)的頭文件,詳細(xì)請(qǐng)參考10.Porting_Manual_for_KEIL.md文檔說(shuō)明。

(3)添加相關(guān)代碼

打開(kāi)stm32l4xx_it.c,包含tos_k.h頭文件:

在PendSV_Handler前加上__weak關(guān)鍵字,因?yàn)镻endSV_Handler已經(jīng)在TencentOS tiny中某些文件重新實(shí)現(xiàn)了。

__weak?void?PendSV_Handler(void)
{
????/*?USER?CODE?BEGIN?PendSV_IRQn?0?*/

????/*?USER?CODE?END?PendSV_IRQn?0?*/
????/*?USER?CODE?BEGIN?PendSV_IRQn?1?*/

????/*?USER?CODE?END?PendSV_IRQn?1?*/
}

在SysTick_Handler函數(shù)中添加TencentOS tiny的調(diào)度處理函數(shù)在SysTick_Handler函數(shù)中添加TencentOS tiny的調(diào)度處理邏輯:

/**
??*?@brief?This?function?handles?System?tick?timer.
??*/
void?SysTick_Handler(void)
{
????/*?USER?CODE?BEGIN?SysTick_IRQn?0?*/

????/*?USER?CODE?END?SysTick_IRQn?0?*/
????HAL_IncTick();

????/*?USER?CODE?BEGIN?SysTick_IRQn?1?*/
????if(tos_knl_is_running())
????{
????????tos_knl_irq_enter();
????????tos_tick_handler();
????????tos_knl_irq_leave();
????}

????/*?USER?CODE?END?SysTick_IRQn?1?*/
}

以上這里有幾個(gè)關(guān)鍵的API的含義在官方文檔中可以查詢(xún)到:

tos_tick_handler是系統(tǒng)用于更新時(shí)基用的,源碼如下:

__API__?void?tos_tick_handler(void)
{
????if?(unlikely(!tos_knl_is_running()))?{
????????return;
????}

????tick_update((k_tick_t)1u);

#if?TOS_CFG_TIMER_EN?>?0u?&&?TOS_CFG_TIMER_AS_PROC?>?0u
????timer_update();
#endif

#if?TOS_CFG_ROUND_ROBIN_EN?>?0u
????robin_sched(k_curr_task->prio);
#endif
}

這里首先會(huì)判斷內(nèi)核是否已經(jīng)運(yùn)行,如果沒(méi)有運(yùn)行則返回,如果運(yùn)行了,那么就調(diào)用tick_update更新系統(tǒng)時(shí)基,如果配置了TOS_CFG_TIMER_EN宏,則調(diào)用timer_update();這樣我們就可以使用TencentOS Tiny的軟件定時(shí)器,如果配置了TOS_CFG_TIMER_AS_PROC宏,那么會(huì)進(jìn)行時(shí)間片相關(guān)的邏輯處理,相關(guān)的代碼邏輯大家可以閱讀源碼詳細(xì)分析,不得不說(shuō)TencentOS Tiny這里的保護(hù)做得非常好,設(shè)計(jì)思路很?chē)?yán)謹(jǐn)!

(4)添加OS配置文件

這個(gè)文件一般是手動(dòng)創(chuàng)建的,放在上面我們創(chuàng)建的TOS_CONFIG目錄下,配置對(duì)應(yīng)的宏可以開(kāi)啟OS對(duì)應(yīng)的功能,以下是官方給出的一個(gè)標(biāo)準(zhǔn)模板,如果還有別的需要添加的話(huà),則需要修改以下文件。

tos_config.h

#ifndef?_TOS_CONFIG_H_
#define??_TOS_CONFIG_H_

//#include?"stm32l0xx.h"?//?目標(biāo)芯片頭文件,用戶(hù)需要根據(jù)情況更改
#include?"stm32l4xx_hal.h"

#define?TOS_CFG_TASK_PRIO_MAX???????????10u??//?配置TencentOS?tiny默認(rèn)支持的最大優(yōu)先級(jí)數(shù)量

#define?TOS_CFG_ROUND_ROBIN_EN??????????0u??//?配置TencentOS?tiny的內(nèi)核是否開(kāi)啟時(shí)間片輪轉(zhuǎn)

#define?TOS_CFG_OBJECT_VERIFY_EN???????????1u?//?配置TencentOS?tiny是否校驗(yàn)指針合法

#define?TOS_CFG_TASK_DYNAMIC_CREATE_EN??1u??//?TencentOS?tiny?動(dòng)態(tài)任務(wù)創(chuàng)建功能宏

#define?TOS_CFG_EVENT_EN????????????????1u??//?TencentOS?tiny?事件模塊功能宏

#define?TOS_CFG_MMBLK_EN????????????????1u??//配置TencentOS?tiny是否開(kāi)啟內(nèi)存塊管理模塊

#define?TOS_CFG_MMHEAP_EN???????????????1u??//配置TencentOS?tiny是否開(kāi)啟動(dòng)態(tài)內(nèi)存模塊

#define?TOS_CFG_MMHEAP_DEFAULT_POOL_EN??1u??//?TencentOS?tiny?默認(rèn)動(dòng)態(tài)內(nèi)存池功能宏

#define?TOS_CFG_MMHEAP_DEFAULT_POOL_SIZE????????0x100?//?配置TencentOS?tiny默認(rèn)動(dòng)態(tài)內(nèi)存池大小

#define?TOS_CFG_MUTEX_EN????????????????1u??//?配置TencentOS?tiny是否開(kāi)啟互斥鎖模塊

#define?TOS_CFG_MESSAGE_QUEUE_EN????????1u??//?配置TencentOS?tiny是否開(kāi)啟消息隊(duì)列模塊

#define?TOS_CFG_MAIL_QUEUE_EN???????????1u??//?配置TencentOS?tiny是否開(kāi)啟消息郵箱模塊

#define?TOS_CFG_PRIORITY_MESSAGE_QUEUE_EN?1u?//?配置TencentOS?tiny是否開(kāi)啟優(yōu)先級(jí)消息隊(duì)列模塊

#define?TOS_CFG_PRIORITY_MAIL_QUEUE_EN?1u??//?配置TencentOS?tiny是否開(kāi)啟優(yōu)先級(jí)消息郵箱模塊

#define?TOS_CFG_TIMER_EN????????????????1u??//?配置TencentOS?tiny是否開(kāi)啟軟件定時(shí)器模塊

#define?TOS_CFG_PWR_MGR_EN??????????????0u??//?配置TencentOS?tiny是否開(kāi)啟外設(shè)電源管理模塊

#define?TOS_CFG_TICKLESS_EN?????????????0u??//?配置Tickless?低功耗模塊開(kāi)關(guān)

#define?TOS_CFG_SEM_EN??????????????????1u??//?配置TencentOS?tiny是否開(kāi)啟信號(hào)量模塊

#define?TOS_CFG_TASK_STACK_DRAUGHT_DEPTH_DETACT_EN??????1u?//?配置TencentOS?tiny是否開(kāi)啟任務(wù)棧深度檢測(cè)

#define?TOS_CFG_FAULT_BACKTRACE_EN??????0u??//?配置TencentOS?tiny是否開(kāi)啟異常?;厮莨δ?/span>

#define?TOS_CFG_IDLE_TASK_STK_SIZE??????128u?//?配置TencentOS?tiny空閑任務(wù)棧大小

#define?TOS_CFG_CPU_TICK_PER_SECOND?????1000u?//?配置TencentOS?tiny的tick頻率

#define?TOS_CFG_CPU_CLOCK???????????????(SystemCoreClock)?//?配置TencentOS?tiny?CPU頻率

#define?TOS_CFG_TIMER_AS_PROC???????????1u??//?配置是否將TIMER配置成函數(shù)模式

#endif

到這里,TencentOS Tiny就已經(jīng)在EVB_MX+上移植成功了!接下來(lái)我們來(lái)測(cè)試一下:

(5)添加相關(guān)代碼

在main.c中添加相關(guān)代碼:

#include?"cmsis_os.h"

//定義一個(gè)任務(wù)
#define?TASK1_STK_SIZE??256
void?task1(void?*pdata);
osThreadDef(task1,?osPriorityNormal,?1,?TASK1_STK_SIZE);

void?task1(void?*pdata)
{
????while(1)
????{
????????printf("Hello?TencentOS_tiny_EVB_MX_Plus\n");
????????HAL_GPIO_TogglePin(DEBUG_LED_GPIO_Port,?DEBUG_LED_Pin);
????????osDelay(500);
????}
}

/**
??*?@brief??The?application?entry?point.
??*?@retval?int
??*/
int?main(void)
{
????/*?USER?CODE?BEGIN?1?*/

????/*?USER?CODE?END?1?*/

????/*?MCU?Configuration--------------------------------------------------------*/

????/*?Reset?of?all?peripherals,?Initializes?the?Flash?interface?and?the?Systick.?*/
????HAL_Init();

????/*?USER?CODE?BEGIN?Init?*/

????/*?USER?CODE?END?Init?*/

????/*?Configure?the?system?clock?*/
????SystemClock_Config();

????/*?USER?CODE?BEGIN?SysInit?*/

????/*?USER?CODE?END?SysInit?*/

????/*?Initialize?all?configured?peripherals?*/
????MX_GPIO_Init();
????MX_USART2_UART_Init();
????/*?USER?CODE?BEGIN?2?*/
????//初始化內(nèi)核
????osKernelInitialize();?
????//創(chuàng)建一個(gè)任務(wù)
????osThreadCreate(osThread(task1),?NULL);
????//啟動(dòng)內(nèi)核
????osKernelStart();
????/*?USER?CODE?END?2?*/

????/*?Infinite?loop?*/
????/*?USER?CODE?BEGIN?WHILE?*/
????while?(1)
????{
????????/*?USER?CODE?END?WHILE?*/

????????/*?USER?CODE?BEGIN?3?*/
????}

????/*?USER?CODE?END?3?*/
}

運(yùn)行結(jié)果:

LED調(diào)試燈翻轉(zhuǎn)的同時(shí)打印LOG信息。

有關(guān)TencentOS tiny相關(guān)的知識(shí),小伙伴們可以自行下載SDK包,TencentOS tiny技術(shù)團(tuán)隊(duì)已經(jīng)給多個(gè)開(kāi)發(fā)板編寫(xiě)了相應(yīng)的高質(zhì)量軟件例程。相信有不少東西值得學(xué)習(xí)和借鑒。

公眾號(hào)粉絲福利時(shí)刻

這里我給大家申請(qǐng)到了福利,本公眾號(hào)讀者購(gòu)買(mǎi)小熊派開(kāi)發(fā)板可享受9折優(yōu)惠,有需要購(gòu)買(mǎi)小熊派以及騰訊物聯(lián)網(wǎng)開(kāi)發(fā)板的朋友,淘寶搜索即可,跟客服說(shuō)你是公眾號(hào):嵌入式云IOT技術(shù)圈 的粉絲,立享9折優(yōu)惠!

往期精彩

網(wǎng)紅物聯(lián)網(wǎng)開(kāi)發(fā)板小熊派使用評(píng)測(cè)

開(kāi)源STM32產(chǎn)品:無(wú)線(xiàn)點(diǎn)菜寶使用評(píng)測(cè)

替代傳統(tǒng)串口屏的Yoxios了解一下!

了解下小白的福音Micro-Lab(多個(gè)案例帶你快速入門(mén))

覺(jué)得本次分享的文章對(duì)您有幫助,隨手點(diǎn)[在看]并轉(zhuǎn)發(fā)分享,也是對(duì)我的支持。

免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。文章僅代表作者個(gè)人觀(guān)點(diǎn),不代表本平臺(tái)立場(chǎng),如有問(wèn)題,請(qǐng)聯(lián)系我們,謝謝!

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀(guān)點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專(zhuān)欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車(chē)的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車(chē)技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車(chē)工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車(chē)。 SODA V工具的開(kāi)發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車(chē) 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來(lái)越多用戶(hù)希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來(lái)越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開(kāi)幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱(chēng),數(shù)字世界的話(huà)語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱(chēng)"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉