基于MM32F5270 MCU初步学习移植FreeRTOS

2024-08-30 MindMotion(灵动MM32MCU公众号)
MCU,MM32F5270,MindMotion MCU,MM32F5270,MindMotion MCU,MM32F5270,MindMotion MCU,MM32F5270,MindMotion

1简介

在嵌入式领域中,嵌入式实时操作系统正得到越来越广泛的应用。采用嵌入式实时操作系统(RTOS)可以更合理、更有效地利用 CPU 的资源,简化应用软件的设计,缩短系统开发时间,更好地保证系统的实时性和可靠性。


FreeRTOS是一个RTOS类的嵌入式实时操作系统,具有源码公开、可移植、可裁减、调度策略灵活的特点,可以方便地移植到各种单片机上运行。


MM32F5270是一款搭载了安谋科技 Arm® Cortex-M33/STAR-MC1内核的MCU产品,其工作频率可达 120MHz,具有256KB Flash和192KB RAM,内置单精度浮点运算单元(Floating Point Unit,FPU),并支持数字信号处理(Digital Signal Processing, DSP)扩展,提供实时处理和高级中断处理能力,实现性能和电源效率的平衡,适合用于各种类型的实时控制应用。


本系列微课堂基于MM32F5270 MCU初步学习使用FreeRTOS开发,不足之处欢迎指出。

参考资料:

FreeRTOS官网:www.freertos.org

灵动微电子官网:www.mm32mcu.com


2FreeRTOS移植

2.1 源码下载

点击官网标题下的Download可以去下载FreeRTOS源码,当前版本是V10.5.1(task.h文件中有注明版本)。

内容如下:

包括3个文件夹、4个HTML格式的网页和2个.txt文档,重点在于上面的FreeRTOS 和FreeRTOS-Plus两个文件夹,其中FreeRTOS文件夹的内容就是FreeRTOS内核源码,而Plus版本还包括内核以外的组件和第三方补充,对于FreeRTOS移植,我们只需要用到FreeRTOS内核源码就行了。


FreeRTOS文件夹内容:

Demo文件夹里面是 FreeRTOS的例程;

License文件夹里面是相关的许可信息;

Source文件夹是FreeRTOS源码;

Test文件夹是FreeRTOS的相关测试。


Source文件夹内容:

其中.c文件就是FreeRTOS的源码文件,include文件夹是源码包含的一些头文件,portable文件夹是FreeRTOS操作系统和具体硬件的连接层。


portable文件夹内容:

不同MCU内核及编译环境对应的portable文件有所差异,MemMang文件跟内存管理相关。


2.2 移植

移植 FreeRTOS首先需要一个基础工程,可以参考MM32F5270 LibSamples创建工程,或直接在任一例程基础上改动。


1) 向工程中添加FreeRTOS源码

在工程中新建一个名为FreeRTOS的文件夹:

将FreeRTOS相关文件复制到此文件夹下:

portable文件夹只留下GCC和MemMang两个文件夹,其他的都可以删除。


2) 向工程分组中添加文件

打开基础工程,新建分组 FreeRTOS_CORE 和 FreeRTOS_PORTABLE,然后向这两个分组中添加文件:

port.c文件位于portable\GCC\ARM_CM33_NTZ\non_secure文件夹。

heap_4.c文件位于portable\MemMang文件夹,提供RTOS内核所需的内存分配。


3) 添加头文件路径

添加FreeRTOS源码的头文件路径:


4) 加入FreeRTOSConfig.h文件

FreeRTOSConfig.h是FreeRTOS的配置文件,通过宏定义来完成对系统的配置和裁剪。可以自己创建(参考 http://www.freertos.org/a00110.html),也可以从FreeRTOS的官方移植工程中复制。这里复制FreeRTOS\Demo\CORTEX_MPU_M33F_Simulator_Keil_GCC\Config\FreeRTOSConfig.h。


5) 修改重复定义的函数

FreeRTOS在port.c中定义了SysTick_Handler()、SVC_Handler()和PendSV_Handler()这三个函数,需要将工程mm32f5270_it.c中定义的三个同名函数注释掉。


6) 编译和修改

编译后如果一些报错或警告,根据提示修改即可,一般和Contex-M33的特定配置选项有关,如configENABLE_MPU、configENABLE_FPU、configENABLE_TRUSTZONE 根据实际应用情况来适配。

另外还要在FreeRTOSConfig.h修改如下宏定义:

设置configCPU_CLOCK_HZ为120000000,和当前MCU配置的系统时钟频率一致。

设置configTICK_RATE_HZ为1000,即FreeRTOS时钟节拍周期是1ms。


3验证

开发板使用Mini-F5277-OB,编写简单的FreeRTOS应用代码,测试FreeRTOS的移植是否成功。设计四个任务:start_task()、led1_task ()、led2_task ()和 float_task(),功能如下:


start_task():用来创建其他三个任务。

led1_task ():控制 LED1 的闪烁,提示系统正在运行。

led2_task ():控制 LED2 的闪烁。

float_task():浮点测试任务,用于测试FPU是否工作正常。


代码如下:

void start_task(void *pvParameters)
{
    taskENTER_CRITICAL();

    xTaskCreate((TaskFunction_t)led1_task,
                (const char*) "led1_task", 
                (uint16_t)LED1_STK_SIZE,
                (void *)NULL,
                (UBaseType_t)LED1_TASK_PRIO,
                (TaskHandle_t*)&LED1Task_Handler);

    xTaskCreate((TaskFunction_t)led2_task,
                (const char*) "led2_task", 
                (uint16_t)LED2_STK_SIZE,
                (void *)NULL,
                (UBaseType_t)LED2_TASK_PRIO,
                (TaskHandle_t*)&LED2Task_Handler);

    xTaskCreate((TaskFunction_t)float_task,
                (const char*) "float_task", 
                (uint16_t)FLOAT_STK_SIZE,
                (void *)NULL,
                (UBaseType_t)FLOAT_TASK_PRIO,
                (TaskHandle_t*)&FLOATTask_Handler);

    vTaskDelete(StartTask_Handler);
    taskEXIT_CRITICAL();
}


void led1_task(void *p_arg)
{
    while(1)
    {
        PLATFORM_LED_Toggle(LED1);
        vTaskDelay(100);
    }
}


void led2_task(void *p_arg)
{
    while(1)
    {
        PLATFORM_LED_Toggle(LED2);
        vTaskDelay(500);
    }
}


void float_task(void *p_arg)
{
    static float float_num=0.00;
    while(1)
    {
        float_num+=0.01f;
        printf("float_num = %.4f\r\n", float_num);
        vTaskDelay(1000);
    }
}


主函数:

int main(void)
{
    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);

    PLATFORM_Init();

    xTaskCreate( (TaskFunction_t)start_task,
                 (const char*) "start_task", 
                 (uint16_t)START_STK_SIZE,
                 (void *)NULL,
                 (UBaseType_t)START_TASK_PRIO,
                 (TaskHandle_t*)&StartTask_Handler);

    vTaskStartScheduler();
}


程序执行情况:


板载LED1、LED2分别间隔100ms、500ms闪烁。

串口调试助手打印float_num的值不断增加,每次增加0.01,工程和KEIL已经设置使用FPU,调试观察会用到浮点寄存器s0、s2和浮点指令VLDR、VADD.F32。

与程序设置相符,FreeRTOS移植成功。



授权代理商:世强先进(深圳)科技股份有限公司
技术资料,数据手册,3D模型库,原理图,PCB封装文件,选型指南来源平台:世强硬创平台www.sekorm.com
现货商城,价格查询,交期查询,订货,现货采购,在线购买,样品申请渠道:世强硬创平台电子商城www.sekorm.com/supply/
概念,方案,设计,选型,BOM优化,FAE技术支持,样品,加工定制,测试,量产供应服务提供:世强硬创平台www.sekorm.com
集成电路,电子元件,电子材料,电气自动化,电机,仪器全品类供应:世强硬创平台www.sekorm.com
  • +1 赞 0
  • 收藏
  • 评论 0

本文由赵优秀转载自MindMotion(灵动MM32MCU公众号),原文标题为:灵动微课堂 (第283讲)|基于MM32F5270移植FreeRTOS,本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

评论

   |   

提交评论

全部评论(0

暂无评论

相关推荐

Keil分散加载文件浅析

分散加载文件(scatter file)是一个文本文件,用于描述 ARM 链接器生成映像文件所需要的信息,在一些应用场景中嵌入式系统可能会使用分散加载。本章节简要介绍了分散加载文件的基本概念和语法,旨在对分散加载文件有初步认识。

设计经验    发布时间 : 2023-12-28

灵动微电子MM32F0160系列MCU FlexCAN-FD通信应用指南

MM32F0160系列MCU具有一个 FlexCAN 模块,该模块遵循 ISO 11898-1 标准、 CAN FD 和 CAN 2.0B 协议规范,不仅兼容传统CAN,还支持CAN FD模式。本章节初步学习使用MM32F0160 FlexCAN-FD接口实现CAN FD通信,相关例程参考灵动官网的LibSamples或在此基础上修改。

设计经验    发布时间 : 2024-01-07

使用灵动MM32F5270 MCU UART配置实现LIN通信

本文主要简述MM32F5270 UART是如何实现LIN通信的。从LIN驱动程序、 主机程序、从机程序和验证等方面来讲代码实现。

设计经验    发布时间 : 2024-02-23

HVAC FLAP以MM32SPIN023C为主控设计提供All in one方案

暖通空调 (HVAC) 系统旨在调节、加热、冷却、通风、清洁或除湿车厢内的空气质量 (IAQ)。暖通空调系统由前端的传感器和机械/电子开关、鼓风机电机、执行器(用于新鲜空气循环控制、气流控制和温度控制)以及制冷装置组成,这些装置将空气输送到后端的座舱,以确保驾驶员和乘客的热舒适性。HVAC FLAP以 MM32SPIN023C 为主控。

应用方案    发布时间 : 2024-03-25

New Milestone! Following the Success of MM32G0001, MindMotion Launches the Next-Level, High-Value MCU – MM32F0120

MindMotion Microelectronics is excited to announce the official launch of its next-level MCU, the MM32F0120. In 2023, MindMotion‘s entry-level MCU, MM32G0001, made a huge impact with its cost-performance ratio, comparable to or even surpassing 8/16-bit MCUs, earning high praise in the market.

产品    发布时间 : 2024-09-14

MindMotion(灵动微) MCU选型表

32位高性能,高性价比MCU,Core核心有M0、M0+、2XM0、M3、STAR-MC1,Flash存储容量范围 16KB~2048KB,RAM存储容量范围 2KB~128KB,工作电压:1.8~48V,CPU频率(MHz):48~180MHz,GPIO 端口数(个):6~86,LQFP/TSSOP/QFN等多种封装形式。

产品型号
品类
GPIO 端口数(个)
Flash(KB)
内核
管脚数(个)
工作温度(℃)
封装/外壳/尺寸
CPU频率(MHz)
工作电压(V)
SRAM (KB)
MM32F0163D7PV
32位MCU
57
128KB
M0
64
-40℃~105℃
LQFP64
96MHz
2.0~5.5V
16KB

选型表  -  MindMotion 立即选型

The “MindMotion·Star” Series MM32 High-performance MCU Products Based on the Arm China Star-MC1 Core

The “MindMotion·Star” series MM32 high-performance MCU products, equipped with the Arm China Star-MC1 core, deliver 1.5 DMIPS / MHz and a 20% improvement, with 4.02 CoreMark / MHz, also showing a 20% enhancement. The series currently includes four sub-series: MM32F3, MindMotion·Dubhe MM32F5 MindMotion·Alioth MM32G5, and MindMotion·Phecda MM32H5, offering users a flexible and diverse range of options.

产品    发布时间 : 2024-09-14

【IC】灵动新推出32位MCU MM32F0120,主频高达72MHz,提供64KB Flash和8KB RAM

灵动微电子发布的MM32F0120,搭载Cortex M0内核,主频高达72MHz,提供64KB Flash和8KB RAM,最高支持48pin封装。适用于屏显控制、电动玩具、电源管理、马达控制、无线快充等多种应用场合。

产品    发布时间 : 2024-09-11

【IC】灵动发布全新入门级32位MCU MM32G0001系列,内置时钟全温度范围内偏差不超过±2%

灵动股份推出全新超值型MM32G0001系列MCU。2023年初,灵动首次发布了其主打高性价比的MM32G系列,目前已陆续推出了G0140,G0160和G5330系列产品。为进一步丰富MM32G系列产品组合,灵动和上下游合作伙伴通力合作,打造出全新入门级超值型MM32G0001系列MCU。

新产品    发布时间 : 2023-07-01

累计交付超4亿颗!世强硬创获低功耗32位MCU厂商灵动股份授权

MindMotion(灵动股份)MM32WB0510系列配套软件支持各种蓝牙Profile,提供小尺寸协议栈,最小仅占用12KB Flash和2KB RAM。

签约新闻    发布时间 : 2023-07-24

喜讯|灵动再获工信部第三批重点专精特新“小巨人”荣誉称号

为了深入贯彻习总书记关于“培育一批“专精特新”中小企业”的重要指示精神,上海灵动微电子股份有限公司积极配合工业和信息化部开展的第三批专精特新“小巨人”企业复核工作,并顺利通过了相关审核。

厂牌及品类    发布时间 : 2024-09-06

【经验】灵动MindSDK搭建Keil MDK开发环境指南

本文介绍基于Windows操作系统构建嵌入式系统开发环境过程中需要使用的主要软件Keil MDK,并对一些需要特别关注的要点重点说明。Keil MDK是灵动官方的软件开发平台MindSDK支持的主要编译工具之一。

设计经验    发布时间 : 2023-07-02

The High-performance MCU MM32F52 Series featuring the Arm China “STAR-MC1” Processor Is Available for Order

The MM32F52 series is MindMotion announced the first family of high-performance MCUs featuring the Arm China “STAR-MC1” processor, which is based on the Arm-v8 architecture and offers approximately 20% higher performance per unit compared to Cortex-M3 and Cortex-M4.

新产品    发布时间 : 2023-06-07

基于MM32F5270 MCU的Ethernet实现LwIP协议栈移植

LwIP是轻量化的TCP/IP协议,由瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。本文基于搭载了MM32F5277E9P MCU的开发板 PLUS-F5270 V2.0进行实现LwIP协议栈移植。

设计经验    发布时间 : 2024-08-30

展开更多

电子商城

查看更多

只看有货

品牌:MindMotion

品类:高性能MCU

价格:

现货: 0

品牌:MindMotion

品类:电机专用SOC

价格:¥8.2805

现货: 335

品牌:MindMotion

品类:32位MCU

价格:¥7.7125

现货: 250

品牌:MindMotion

品类:电机专用MCU

价格:¥4.2617

现货: 250

品牌:MindMotion

品类:电机专用MCU

价格:¥3.7500

现货: 250

品牌:MindMotion

品类:电机专用MCU

价格:¥4.9500

现货: 250

品牌:MindMotion

品类:电机专用MCU

价格:¥10.6250

现货: 160

品牌:MindMotion

品类:高性能MCU

价格:¥14.6125

现货: 90

品牌:MindMotion

品类:32位MCU

价格:¥1.6125

现货: 72

品牌:MindMotion

品类:电机专用MCU

价格:¥2.5706

现货: 25

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

现货市场

查看更多

品牌:MindMotion

品类:32位MCU

价格:¥5.9400

现货:19,996

品牌:MindMotion

品类:32位MCU

价格:¥2.3800

现货:6,427

品牌:恒烁

品类:MCU

价格:¥1.0800

现货:154,600

品牌:RENESAS

品类:MCU

价格:¥15.6605

现货:140,156

品牌:ST

品类:单片机(MCU)

价格:¥14.2871

现货:114,259

品牌:MICROCHIP

品类:MCU

价格:¥6.6000

现货:100,000

品牌:RENESAS

品类:32-BIT GENERAL MCU

价格:¥7.3800

现货:76,715

品牌:RENESAS

品类:32-BIT GENERAL MCU

价格:¥15.3000

现货:75,000

品牌:MICROCHIP

品类:MCU

价格:¥9.0000

现货:64,841

品牌:Sonix

品类:MCU

价格:¥0.8500

现货:51,104

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

服务

查看更多

TFT LCD液晶显示屏/模组定制

可定制显示屏的尺寸0.96”~15.6”,分辨率80*160~3840*2160,TN/IPS视角,支持RGB、MCU、SPI、MIPI、LVDS、HDMI接口,配套定制玻璃、背光、FPCA/PCBA。

最小起订量: 1000 提交需求>

MCU烧录/Flash烧录/CPLD烧录

可烧录IC封装SOP/MSOP/SSOP/TSOP/TSSOP/PLCC/QFP/QFN/MLP/MLF/BGA/CSP/SOT/DFN;IC包装Tray/Tube/Tape;IC厂商不限,交期1-3天。支持IC测试(FT/SLT),管装、托盘装、卷带装包装转换,IC打印标记加工。

最小起订量: 1pcs 提交需求>

世强和原厂的技术专家将在一个工作日内解答,帮助您快速完成研发及采购。
我要提问

954668/400-830-1766(工作日 9:00-18:00)

service@sekorm.com

研发客服
商务客服
服务热线

联系我们

954668/400-830-1766(工作日 9:00-18:00)

service@sekorm.com

投诉与建议

E-mail:claim@sekorm.com

商务合作

E-mail:contact@sekorm.com

收藏
收藏当前页面