日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當前位置:首頁 > > 嵌入式云IOT技術圈
[導讀]前幾天拿到了騰訊汪總贈送的EVB_MX+以及EVB_LX開發(fā)板,它們長下面這個樣子,看起來很輕便,即使是外出我也可以隨身帶著它隨時隨地進行玩耍,就和小熊派一樣,整體給人感覺就非常舒服~

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

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

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


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


迫不及待開啟評測模式,我們先來看看這兩個開發(fā)板的基本介紹以及功能分布,最后選取一個入門最快的平臺,移植TecentOS tiny,完善最基礎的實驗。

1、EVB_MX+簡介

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


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

2、EVB_LX簡介

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

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

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


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

3、TencentOS tiny EVB_MX+初體驗

3.1、準備一份裸機工程

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

(1)配置LED、按鍵

(2)配置時鐘

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

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

(5)生成基礎裸機工程

設置外設以單獨的文件生成

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

3.2、移植TencentOS tiny到EVB_MX+

TencentOS tiny整體架構

從TencentOS tiny開源的Github或者碼云倉庫下載整個SDK包,如下所示:

TencentOS tiny?Github倉庫地址:

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

TencentOS tiny參考文檔地址:

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


首先我們重新在別的地方創(chuàng)建一個TencentOS tiny,然后把我們下載到的包里的arch、board、kernel、osal四個文件夾拷貝出來放到我們新創(chuàng)建的TencentOS tiny文件夾,最后我們再手動創(chuàng)建一個TOS_CONFIG,用于放置TencentOS tiny的配置文件,效果如下:

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

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

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

這時候我們的目錄架構如上所示,打開First_Test的Keil MDK工程。

(1)添加工程文件

以上需要選擇對應芯片架構,詳細請參考10.Porting_Manual_for_KEIL.md文檔說明,如果SDK包沒有的話則需要自己去移植。


最后可以看到相關文件已經(jīng)包含進來了:

(2)添加文件路徑

這里要注意的是需要添加對應芯片架構的頭文件,詳細請參考10.Porting_Manual_for_KEIL.md文檔說明。

(3)添加相關代碼

打開stm32l4xx_it.c,包含tos_k.h頭文件:

在PendSV_Handler前加上__weak關鍵字,因為PendSV_Handler已經(jīng)在TencentOS tiny中某些文件重新實現(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?*/
}

以上這里有幾個關鍵的API的含義在官方文檔中可以查詢到:

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

__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
}

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

(4)添加OS配置文件

這個文件一般是手動創(chuàng)建的,放在上面我們創(chuàng)建的TOS_CONFIG目錄下,配置對應的宏可以開啟OS對應的功能,以下是官方給出的一個標準模板,如果還有別的需要添加的話,則需要修改以下文件。

tos_config.h

#ifndef?_TOS_CONFIG_H_
#define??_TOS_CONFIG_H_

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

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

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

#define?TOS_CFG_OBJECT_VERIFY_EN???????????1u?//?配置TencentOS?tiny是否校驗指針合法

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

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

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

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

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

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

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

#define?TOS_CFG_MESSAGE_QUEUE_EN????????1u??//?配置TencentOS?tiny是否開啟消息隊列模塊

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

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

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

#define?TOS_CFG_TIMER_EN????????????????1u??//?配置TencentOS?tiny是否開啟軟件定時器模塊

#define?TOS_CFG_PWR_MGR_EN??????????????0u??//?配置TencentOS?tiny是否開啟外設電源管理模塊

#define?TOS_CFG_TICKLESS_EN?????????????0u??//?配置Tickless?低功耗模塊開關

#define?TOS_CFG_SEM_EN??????????????????1u??//?配置TencentOS?tiny是否開啟信號量模塊

#define?TOS_CFG_TASK_STACK_DRAUGHT_DEPTH_DETACT_EN??????1u?//?配置TencentOS?tiny是否開啟任務棧深度檢測

#define?TOS_CFG_FAULT_BACKTRACE_EN??????0u??//?配置TencentOS?tiny是否開啟異常棧回溯功能

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

#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+上移植成功了!接下來我們來測試一下:

(5)添加相關代碼

在main.c中添加相關代碼:

#include?"cmsis_os.h"

//定義一個任務
#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)建一個任務
????osThreadCreate(osThread(task1),?NULL);
????//啟動內(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?*/
}

運行結果:

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

有關TencentOS tiny相關的知識,小伙伴們可以自行下載SDK包,TencentOS tiny技術團隊已經(jīng)給多個開發(fā)板編寫了相應的高質(zhì)量軟件例程。相信有不少東西值得學習和借鑒。

公眾號粉絲福利時刻

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

往期精彩

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

開源STM32產(chǎn)品:無線點菜寶使用評測

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

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

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

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

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