首页 > 其他分享 >国产MCU-CW32F030开发学习- 移植rtthread-nano

国产MCU-CW32F030开发学习- 移植rtthread-nano

时间:2023-08-12 18:35:03浏览次数:118  
标签:RT nano Thread CW32F030 rtthread thread2 thread1 Nano 移植

国产MCU-CW32F030开发学习--移植rtthread-nano

硬件平台

  1. CW32_48F大学计划板
  2. CW32_IOT_EVA物联网开发评估套件

国产MCU-CW32F030开发学习- 移植rtthread-nano_CW32

RT-Thread Nano

RT-Thread Nano 是一个极简版的硬实时内核,它是由 C 语言开发,采用面向对象的编程思维,具有良好的代码风格,是一款可裁剪的、抢占式实时多任务的 RTOS。其内存资源占用极小,功能包括任务处理、软件定时器、信号量、邮箱和实时调度等相对完整的实时操作系统特性。适用于家电、消费电子、医疗设备、工控等领域大量使用的 32 位 ARM 入门级 MCU 的场合。

下图是 RT-Thread Nano 的软件框图,包含支持的 CPU 架构与内核源码,还有可拆卸的 FinSH 组件:

国产MCU-CW32F030开发学习- 移植rtthread-nano_CW32_02

支持架构:ARM:Cortex M0/ M3/ M4/ M7 等、RISC-V 及其他。

功能:线程管理、线程间同步与通信、时钟管理、中断管理、内存管理。

RT-Thread Nano的特点

  1. 下载简单
    RT-Thread Nano 以软件包的方式集成在 Keil MDK 与 CubeMX 中,可 以直接在软件中下载 Nano 软件包获取源码,获取方式详见 基于 Keil MDK 移植 RT-Thread Nano 与 基于 CubeMX 移植 RT-Thread Nano 。同时也提供 下载 Nano 源码压缩包 的途径,方便在其他开发环境移植 RT-Thread Nano,如 基于 IAR 移植 RT-Thread Nano。
  2. 代码简单 与RT-Thread 完整版不同的是,Nano 不含 Scons 构建系统,不需要 Kconfig 以及 Env 配置工具,也去除了完整版特有的 device 框架和组件,仅是一个纯净的内核。
  3. 移植简单 由于 Nano 的极简特性,使 Nano 的移植过程变得极为简单。添加 Nano 源码到工程,就已完成 90% 的移植工作。
  4. 使用简单 RT-Thread Nano 在使用上也非常简单,带给开发者友好的开发体验。
  5. 易裁剪:Nano 的配置文件为 rtconfig.h,该文件中列出了内核中的所有宏定义,有些默认没有打开,如需使用,打开即可。具体的配置可见 Nano 版块的 RT-Thread Nano 配置 教程。
  6. 易添加 FinSH 组件:FinSH 组件 可以很方便的在 Nano 上进行移植,而不再依赖 device 框架,只需要对接两个必要的函数即可完成 FinSH 移植。
  7. 资源占用小:对 RAM 与 ROM 的开销非常小,在支持 semaphore 和 mailbox 特性,并运行两个线程 (main 线程 + idle 线程) 情况下,ROM 和 RAM 依然保持着极小的尺寸,RAM 占用约 1K 左右,ROM 占用 4K 左右。 注:如果需要丰富的组件、驱动以及软件包等功能,则建议使用 RT-Thread 完整版。

移植过程

  1. 打开一个支持串口printf打印的工程模板
  2. 打开manage Run-Time Environment工具,选择RT-Thread,我们这里只选择kenel。
  3. 国产MCU-CW32F030开发学习- 移植rtthread-nano_RT-Thread_03

  4. 打开RTOS目录下的board.c文件,添加main.h头文件的引用、添加系统心路中断函数、添加systick初始化。
  5. 国产MCU-CW32F030开发学习- 移植rtthread-nano_RT-Thread_04

    国产MCU-CW32F030开发学习- 移植rtthread-nano_RT-Thread_05

    国产MCU-CW32F030开发学习- 移植rtthread-nano_CW32_06

  6. 打开rtthconfig.h中内存管理的选项
  7. 国产MCU-CW32F030开发学习- 移植rtthread-nano_RT-Thread_07

  8. 注释掉interrupts_cw32放0.c中HardFault_Handler、PendSV_Handler两个函数,避免出现得新定义的错误
  9. 国产MCU-CW32F030开发学习- 移植rtthread-nano_RT-Thread_08

    国产MCU-CW32F030开发学习- 移植rtthread-nano_CW32_09

  10. 注释掉cw32f030_systick.c中的SysTick_Handler函数,避免出现得新定义的错误
  11. 国产MCU-CW32F030开发学习- 移植rtthread-nano_RT-Thread_10

  12. 在main.c中添加rtthreah.h的头文件引用,再添回两个任务函数,并在主程序中启动
#include "main.h"
#include <rtthread.h>
//常用头文件放置main.h
struct rt_thread thread1;
struct rt_thread thread2;
char thread1_stack[512];
char thread2_stack[512];


void thread1_entry(void*param)
{

    while (1)
    {
        printf("thread1 is runningrn \n");
        rt_thread_mdelay(500);
    }

}
void thread2_entry(void*param)
{

    while (1)
    {
        printf("thread2is runningrn \n");
        rt_thread_mdelay(3000);
    }

}

void thread1_init(void)
{
    rt_err_t fd=rt_thread_init(&thread1,"thread1",
                               &thread1_entry,0,
                               &thread1_stack[0],
                               sizeof(thread1_stack),10,10);
    if(fd < 0)   
    {
        printf("thread1 init is fail rn \n");  
    }
    else
    {
        printf("thread1init is success rn \n");
    }

    rt_thread_startup(&thread1);

}

void thread2_init(void)
{
    rt_err_t fd=rt_thread_init(&thread2,"thread2",
                               &thread2_entry,0,
                               &thread2_stack[0],
                               sizeof(thread2_stack),10,10);
    if(fd < 0)
    {
        printf("thread2 init is fail rn \n");  
    }
    else
    {
        printf("thread2init is success rn \n");
    }
    rt_thread_startup(&thread2);
}


int32_t main(void)
{
	RCC_Configuration(); //时钟配置64M,时钟配置以移动到systejm_cw32f030.h
	UART_Configuration();//printf函数初始化,函数主体在Debug.c,使用串口1,和大学板的LED3冲突。
    thread1_init();
    thread2_init();
    printf("cw32f030-rtthread init \n");
	while(1)
	{
	
	}
	
}

测试效果

国产MCU-CW32F030开发学习- 移植rtthread-nano_RT-Thread_11

移植可能还有问题,只是初步移植,目前能串口打印,但是我感觉串口打印有乱七八糟码,而且打印速度非常快,可能这个部分有问题,后面看看能否移植FinSH组件

标签:RT,nano,Thread,CW32F030,rtthread,thread2,thread1,Nano,移植
From: https://blog.51cto.com/u_15090278/7060744

相关文章

  • RT-Thead学习-GD32移植(基于RT-Thread Nano源码)
    1前言当前关于RT的移植教程有很多,纯复制大佬们的很迷糊,参考官方手册和一些经验贴,完成了基于Nano源码的移植,最简单的移植教程就是基于keil的和这一种。参考资料1.野火资料(https://doc.embedfire.com/rtos/rtthread/zh/latest/application/porting_to_stm32.html)2.微信公众号(物联网......
  • 国产MCU-CW32F030开发学习-圆形GC9A01_LCD模块
    国产MCU-CW32F030开发学习-圆形GC9A01_LCD模块硬件平台CW32_48F大学计划板CW32_IOT_EVA物联网开发评估套件1.28寸圆形彩色TFT显示屏高清IPS模块240X240SPI接口GC9A01产品介绍1.28寸圆形IPS彩屏,支持RGB65K色显示,显示色彩丰富240X240分辨率,显示清晰IPS全视角面板,超宽可视范围采用......
  • 国产MCU-CW32F030开发学习-OLED模块
    国产MCU-CW32F030开发学习-OLED模块硬件平台CW32_48F大学计划板CW32_IOT_EVA物联网开发评估套件0.96IIColed模块软件平台KeilMDK5.31IAR串口调试助手IIC总线处理器和芯片间的通信可以形象的比喻成两个人讲话:1、你说的别人得能听懂:双方约定信号的协议。2、你的语速别人得能接受......
  • 国产MCU-CW32F030开发学习-BH1750模块
    国产MCU-CW32F030开发学习-BH1750模块硬件平台CW32_48F大学计划板CW32_IOT_EVA物联网开发评估套件BH1750数字型光照强度传感器BH1750BH1750是一款数字型光照强度传感器,能够获取周围环境的光照强度。其测量范围在0~65535lx。lx勒克斯,是光照强度的单位。BH1750可用于调节......
  • 国产MCU-CW32F030开发学习--移植rtthread-nano
    国产MCU-CW32F030开发学习--移植rtthread-nano硬件平台CW32_48F大学计划板CW32_IOT_EVA物联网开发评估套件RT-ThreadNanoRT-ThreadNano是一个极简版的硬实时内核,它是由C语言开发,采用面向对象的编程思维,具有良好的代码风格,是一款可裁剪的、抢占式实时多任务的RTOS。......
  • 国产MCU-CW32F030开发学习-圆形GC9A01_LCD模块
    国产MCU-CW32F030开发学习-圆形GC9A01_LCD模块硬件平台CW32_48F大学计划板CW32_IOT_EVA物联网开发评估套件1.28寸圆形彩色TFT显示屏高清IPS模块240X240SPI接口GC9A01产品介绍1.28寸圆形IPS彩屏,支持RGB65K色显示,显示色彩丰富240X240分辨率,显示清晰IPS全视角面板,超......
  • 友善NanoPi M4换源和装ROS
    1、命令打开sudogedit/etc/apt/sources.list#默认注释了源码镜像以提高aptupdate速度,如有需要可自行取消注释debhttp://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/bionicmainrestricteduniversemultiverse#deb-srchttp://mirrors.tuna.tsinghua.edu.cn/ubuntu......
  • MCU之Microchip PIC16F17146 Curiosity NANO Evaluation Kit评测报告
    对比完RISC(Proprietary)与RISC-V(OpenSource),来点Microchip的PIC16F17146CuriosityNano(Revision4hasPIC16F17146revB2)EvaluationKit的实测:这块板是多层PCB设计,大量使用SMD贴片元器件,使整板轻而小(51mm20mm5mm,包括按钮开关高度),整个大拇指大小,最重要的是......
  • MCU之Microchip PIC16F17146 Curiosity NANO Evaluation Kit申请与收到有感
    申请到寄到已过去好长时间(三个月):2023-04-22提交发布申请;2023-07-21收到批准包裹.对比十多年以前,ADI美国模拟器件公司与TI美国德州仪器公司的Samples/EvaluationKit,是从美国的Sample/EvaluationKit管理中心,直接用UPS/FedEx/DHL(这三个都有收到过)的AirMail或AirP......
  • 开放原子训练营(第二季)RT-Thread Nano学习营刘玉宽
         4月22日周六,早早起床充满期待的来到了北京艾丽华酒店,参加“2023年RT-Thread线下培训”。这是疫情三年以来开放原子在北京第一次组织的线下活动。    进入到会场,被震撼了,好火爆啊————满满一屋子人,有白发苍苍的老者、有职场专家、有在校大学生、还有年仅6岁......