在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

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

3天內不再提示

使用MM32F3270基于Azure RTOS (ThreadX) 的移植

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

簡 介

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

本文描述了如何在MM32F3270系列MCU上使用Azure RTOS ThreadX做基本移植。

包括底層啟動文件的移植, 系統Systick的配置技巧,引導用戶理解Azure RTOS ThreadX基本應用。

表 1 適用系列型號

wKgaomUD5uOAHgkOAABBsCMtdho057.png

1、移植應用的準備

1.1 硬件開發板的準備

該移植過程中應用的開發板為MM32的EVBoard MB039(MM32F3273G9P)

wKgZomUD5uWAFbSCAAK4QKQZpaY148.png

EV Board (MM32F3273G9P)的簡要參數

Arm Cortex-M3 內核

板載 MM32F3273G9P(LQFP144)

USB Host / Device、SPI、I2C

4 x Key、4 x LED

I2S Speaker

TF-Card

Ethernet PHY

1.2 軟件的準備

庫函數和例程(Lib Samples)

該移植過程中應用的Firmware分別為MM32F3270 庫函數和例程

wKgZomUD5uaAJlPPAABgspXbh8s782.png

Azure RTOS ThreadX(源碼)

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 源代碼發布到 GitHub。安裝和使用該軟件進行內部開發、測試和評估無需許可證。分發或銷售組件和設備需要許可證,除非使用 Azure RTOS 許可的硬件。

ThreadX 安裝

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

shell復制

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

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

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

wKgaomUD5ueAZHpPAABoCiEGlIU433.png

如下圖所示:

Azure RTOS ThreadX(源碼)支持的開發環境

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

wKgaomUD5uiAYB-sAAAH7G66gCg440.png

本次移植過程使用keil模板為例子,做移植說明。

2、Threadx 的移植

該章節介紹了移植的過程和注意事項。

2.1 建立工程目錄

建立目標工程文件夾“MM32F3270Project”:

wKgZomUD5uyACEIqAAAJCD_IJ88177.png

復制Threadx中的“common”目錄和“ports”目錄下的“Cortex-M3”目錄到:

“MM32F3270Projectthreadxcommon”

“MM32F3270Projectthreadxportscortex_m3keil”

目錄。

wKgZomUD5u2AIGnkAABL4ESW6Eo386.png

復制LibSamples_MM32F3270中的“Device”目錄到:MM32F3270ProjectDevice

wKgaomUD5u6AJ0GKAAAHqTi6aWw809.png

復制“SamplesLibSamplesGPIOGPIO_Toggle”目錄到“MM32F3270Project”目錄。

wKgZomUD5vCAZ1XBAABYwWdno2E051.png
wKgaomUD5vGAKPoQAAAQ__yTxXw716.png

最后形成如下目標目錄:

wKgaomUD5vKAbT0HAAAOiv4eupc305.png

2.2 添加源碼到KEIL工程

打開IOtoggle工程;

wKgZomUD5vOAYO_VAAAfi6Iugpo773.png

它包含基本的LED blink功能;

wKgZomUD5vSAJwBxAAAxsBJgf4E849.png

通過完成編譯,選擇相應的調試下載工具(ULINK,Jlink,CMSIS-DAP Link,MM32LINK-OB),可以驗證EVB正常工作,實現四個LED做500ms/500ms的亮暗閃爍。

驗證過后,復制KEILPRJ工程目錄為KEILPRJ_Threadx目錄;

wKgaomUD5vaAZ09gAABDooKMKG8213.png

新建threadX/common分組,添加threadX/common/src下的所有c文件:

wKgaomUD5vmAZ-blAABp8f9TzSg638.png

新建threadX/ports/mm32f3270/keil分組,選擇對應的編譯環境。

移植使用的KEIL為5.35,選用KEIL compiler version 5編譯器(armcc)。

需要添加 threadXportscortex_m3keilsrc 下的所有 .s 文件:

wKgZomUD5vuAAHzzAABONslR0Hg258.png

新建threadX/ports/mm32f3270/keil_s分組,選擇對應的匯編文件。

添加threadxportscortex_m3keilexample_build 下的.s 文件:

tx_initialize_low_level.s:

wKgZomUD5vyAeNqGAABDnX8SNjA328.png

新建threadX/ports/mm32f3270/demo分組。

添加threadxportscortex_m3keilexample_build 下的.c 文件:

sample_threadx.c:

wKgaomUD5v2AfBXxAABI1q05A3k272.png

因為sample_threadx.c包含main()函數,需要USER 組,以刪除USER目錄下的main.c文件。

wKgZomUD5v6AVNnXAAA5Vi9CgP4480.png

設置編譯環境,選擇Use default compiler version 5,編譯器為(armcc):

wKgaomUD5wCAOVIvAABfJnWMwQ0494.png

設“C/C++”的頭文件包含目錄:

添加threadxports下的.h文件包含目錄:

..threadxcommoninc

..threadxportscortex_m3keilinc

刪除未用到的目錄

..USER

wKgaomUD5wGAA6yRAAAYNyfnyBQ015.png

完成源代碼添加和頭文件目錄包含,進行首次編譯,

編譯報如下錯誤:

wKgZomUD5wOAbogZAAAlkliBL7s333.png

檢查適配ThreadX官方的底層適配文件tx_initialize_low_level.s,發現除了必須的函數:_tx_initialize_low_level。該tx_initialize_low_level.s還包含了匯編啟動文件startup_mm32f327x_keil.s中的配置代碼,包括stack與heap的配置、中斷向量表,從而導致了沖突:

wKgZomUD5wSADDkcAAAlSoo1jq0873.png

因此需要移除tx_initialize_low_level.s中stack與heap的配置、中斷向量表相關的代碼(參考上圖中的代碼),因為已經在startup_mm32f327x_keil.s中實現。

同樣的原因,需要刪除Reset_Handler函數:

wKgaomUD5waASIUGAAAJD9sri_E444.png

及刪除__user_initial_stackheap函數:

wKgZomUD5wiAXeHxAAATjFsH5kU814.png

并修改ThreadX適配文件tx_initialize_low_level.s中SYSTICK配置的參數。

修改SYSCLK頻率,配置systick的中斷時間間隔為1ms:

wKgaomUD5wmAc4ubAAAK5HL8LTw267.png

并修改tx_initialize_low_level.s中相關代碼,以匹配MM32F3270系列的啟動代碼startup_mm32f327x_keil.s,以下左側為tx_initialize_low_level.s原始代碼,右側為修改后代碼。

wKgaomUD5wqAelRvAAAbkox7oEQ263.png

修改__tx_vectors為__Vectors

修改|Image$$ZI$$Limit|

wKgZomUD5wuAZIOvAAA3yb4UDsk636.png

添加SysTick_Handler聲明到如下代碼:

wKgZomUD5w2AXKKkAAAPns1H_ao872.png

具體參考修改后的.s文件。

再次編譯,發現SysTick_Handler有沖突:

wKgaomUD5w6AAIJXAAAV0EM-T_g824.png

原因是系統中的DELAY_Init DELAY_Ms延時函數使用了SysTick_Handler。

wKgaomUD5w-AX1d6AAD5h1GahbA735.png

把宏定義:#define USE_SYSTICK_DELAY 1

修改為:#define USE_SYSTICK_DELAY 0

編譯通過:

wKgZomUD5xCABBd1AAAPbHCO1eM461.png

配置好下載Debugger工具(可以使用MM32LINK-OB,JLINK,U-LINK或CMSIS-DAP LINK),下載調試。

3、Threadx 的運行與調試

3.1 下載與調試

下載調試默認會運行到main()函數。

該demo示例,建立了5個線程,程序都不與芯片的外設相關:

wKgZomUD5xOAX1I3AAALaei-vmA718.png

線程只做數值自加,Demo演示了事件(Event),隊列(queue),信號量(semaphore)的功能。

wKgaomUD5xSAMcQrAAEU1Pue8Rc432.png

全速運行后,可以看到相關的數值在變化:

wKgaomUD5xWAUsjvAAAQcViWH4g239.png

4、小結

關于使用MM32F3270基于Azure RTOS ThreadX 的最小系統就移植完成,并運行起來,后面再給大家介紹Task相關的配置,信號量,互斥鎖等Azure RTOS的特色功能。

提示

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

審核編輯 黃宇

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 嵌入式
    +關注

    關注

    5087

    文章

    19158

    瀏覽量

    306439
  • threadx
    +關注

    關注

    0

    文章

    15

    瀏覽量

    13850
  • RTOS
    +關注

    關注

    22

    文章

    817

    瀏覽量

    119766
收藏 人收藏

    評論

    相關推薦

    使用MM32F3270基于Azure RTOS定時器組的應用

    Azure RTOS ThreadX 是 Microsoft 提供的高級工業級實時操作系統 (RTOS)。它是專門為深度嵌入式實時 IoT 應用程序設計的。
    的頭像 發表于 12-29 17:26 ?1750次閱讀

    MM32F3270系列32位MCU的特點有哪些

    上海靈動微電子推出全新主流型MM32F3270系列32位MCU,此款MM32F3270系列是基于M3內核的32位微控制器,MM32F3270適用于要求高集成度的高性能控制領域,如:工業控制、消防監控
    發表于 11-03 07:20

    使用MM32F3270基于Azure RTOS定時器組的應用

    各種產品(包括消費者設備、醫療電子設備和工業控制設備)上的部署次數已達數十億次。在前文描述移植基本內核的基礎上,該應用手冊描述了MM32F3270系列MCU結合Azure RTOS
    發表于 02-07 14:18

    靈動微電子MM32F3270系列MCU的特點介紹

    上海靈動微電子推出全新主流型MM32F3270系列32位MCU,此款MM32F3270系列是基于M3內核的32位微控制器,MM32F3270適用于要求高集成度的高性能控制領域,如:工業控制、消防監控
    發表于 03-22 16:57 ?2176次閱讀

    【國產MCU移植MM32F3270 EVBoard

    【國產MCU移植MM32F3270 EVBoard
    發表于 12-03 17:21 ?5次下載
    【國產MCU<b class='flag-5'>移植</b>】<b class='flag-5'>MM32F3270</b> EVBoard

    基于MM32F3270 以太網 Client使用

    接下來給大家介紹基于TCP包的通訊。內容分為基于MM32F3270以太網Client的使用與基于MM32F3270以太網Server的使用。
    發表于 02-08 15:10 ?0次下載
    基于<b class='flag-5'>MM32F3270</b> 以太網 Client使用

    使用MM32F3270基于Azure RTOS信號量的應用

    Azure RTOS ThreadX 是 Microsoft 提供的高級工業級實時操作系統 (RTOS)。它是專門為深度嵌入式實時 IoT 應用程序設計的。
    的頭像 發表于 12-16 09:23 ?1069次閱讀

    使用MM32F3270基于Azure RTOS動態內存管理的應用

    Azure RTOS ThreadX 是 Microsoft 提供的高級工業級實時操作系統 (RTOS)。它是專門為深度嵌入式實時 IoT 應用程序設計的。
    的頭像 發表于 12-23 11:01 ?988次閱讀

    使用MM32F3270基于Azure RTOS事件標志組的應用

    使用MM32F3270基于Azure RTOS事件標志組的應用
    的頭像 發表于 10-27 11:31 ?537次閱讀
    使用<b class='flag-5'>MM32F3270</b>基于<b class='flag-5'>Azure</b> <b class='flag-5'>RTOS</b>事件標志組的應用

    MM32F3270 ADC注入通道

    MM32F3270 ADC注入通道
    的頭像 發表于 09-27 15:59 ?1023次閱讀
    <b class='flag-5'>MM32F3270</b> ADC注入通道

    使用MM32F3270 FSMC驅動OLED

    使用MM32F3270 FSMC驅動OLED
    的頭像 發表于 09-27 15:30 ?982次閱讀
    使用<b class='flag-5'>MM32F3270</b> FSMC驅動OLED

    使用MM32F3270 FSMC驅動TFT-LCD

    使用MM32F3270 FSMC驅動TFT-LCD
    的頭像 發表于 09-27 15:34 ?1098次閱讀
    使用<b class='flag-5'>MM32F3270</b> FSMC驅動TFT-LCD

    基于MM32F3270以太網Client使用

    基于MM32F3270以太網Client使用
    的頭像 發表于 09-27 15:44 ?720次閱讀
    基于<b class='flag-5'>MM32F3270</b>以太網Client使用

    基于MM32F3270以太網UDP使用

    基于MM32F3270以太網 UDP使用
    的頭像 發表于 09-27 15:42 ?519次閱讀
    基于<b class='flag-5'>MM32F3270</b>以太網UDP使用

    基于MM32F3270以太網Client_Socket使用

    基于MM32F3270以太網Client_Socket使用
    的頭像 發表于 09-27 15:37 ?557次閱讀
    基于<b class='flag-5'>MM32F3270</b>以太網Client_Socket使用
    主站蜘蛛池模板: 黄欧美| 国产真实偷乱视频在线观看| 亚洲成人观看| 国内黄色一级片| 免费的黄色大片| 一级特黄aaa大片29| 中国一级特黄真人毛片| 黄色在线观看视频网站| 免费超爽视频| 日本口工福利漫画无遮挡| 国产在线成人一区二区| 黑人干亚洲| 亚洲一本高清| 91黄视频在线观看| 2021最新久久久视精品爱| 欧美二级| 国内激情自拍| 亚洲一区 在线播放| 永久黄网站色视频免费观看 | 成人在线综合网| 亚洲黄色一区二区| 国产女在线| 亚欧一区| 亚洲人成一区| sese综合| 伊人久久综合网站| 欧美色视频网| 又粗又爽又色男女乱淫播放男女| 人人精品| 亚洲韩国日本欧美一区二区三区| 亚洲欧美精品一区二区| 人人插97| 综合黄色| 2018天天操夜夜操| 国产精品污视频| 日本韩国三级在线| 丁香婷婷影院| 极品吹潮视频大喷潮tv| 欧美成人一区亚洲一区| 日韩一级片在线观看| 爱爱小说视频永久免费网站|