[RTOS移植]--STM32F767移植RTThread

文章讲述了在使用STM32Cube创建工程并尝试移植RTOSRT-Thread3.1.5时,遇到了关于Cortex-M7CPUCache函数未定义的编译错误,以及如何解决这些问题和考虑采用其他方法如裸机工程和UI配置移植。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

通过STM32cube创建一个工程

在这里插入图片描述

选择要移植的RTOS源

在这里插入图片描述

下载到本地

在这里插入图片描述

如果没有重启软件

在这里插入图片描述

选择对应配置

Build started: Project: STM32F767
*** Using Compiler 'V5.06 update 7 (build 960)', folder: 'D:\myapp\00-live\03stm32\00 keil5\ARM\ARM506\Bin'
Build target 'STM32F767'
compiling cpu_cache.c...
D:/myapp/00-live/03stm32/00 keil5/RealThread/RT-Thread/3.1.5/libcpu/arm/cortex-m7/cpu_cache.c(21): warning:  #223-D: function "SCB_EnableICache" declared implicitly
      SCB_EnableICache();
D:/myapp/00-live/03stm32/00 keil5/RealThread/RT-Thread/3.1.5/libcpu/arm/cortex-m7/cpu_cache.c(26): warning:  #223-D: function "SCB_DisableICache" declared implicitly
      SCB_DisableICache();
D:/myapp/00-live/03stm32/00 keil5/RealThread/RT-Thread/3.1.5/libcpu/arm/cortex-m7/cpu_cache.c(41): warning:  #223-D: function "__DSB" declared implicitly
          __DSB();
D:/myapp/00-live/03stm32/00 keil5/RealThread/RT-Thread/3.1.5/libcpu/arm/cortex-m7/cpu_cache.c(44): error:  #20: identifier "SCB" is undefined
              SCB->ICIMVAU = address;
D:/myapp/00-live/03stm32/00 keil5/RealThread/RT-Thread/3.1.5/libcpu/arm/cortex-m7/cpu_cache.c(49): warning:  #223-D: function "__ISB" declared implicitly
          __ISB();
D:/myapp/00-live/03stm32/00 keil5/RealThread/RT-Thread/3.1.5/libcpu/arm/cortex-m7/cpu_cache.c(55): warning:  #223-D: function "SCB_EnableDCache" declared implicitly
      SCB_EnableDCache();
D:/myapp/00-live/03stm32/00 keil5/RealThread/RT-Thread/3.1.5/libcpu/arm/cortex-m7/cpu_cache.c(60): warning:  #223-D: function "SCB_DisableDCache" declared implicitly
      SCB_DisableDCache();
D:/myapp/00-live/03stm32/00 keil5/RealThread/RT-Thread/3.1.5/libcpu/arm/cortex-m7/cpu_cache.c(75): warning:  #223-D: function "SCB_CleanInvalidateDCache_by_Addr" declared implicitly
          SCB_CleanInvalidateDCache_by_Addr((uint32_t *)startAddr, size_byte);
D:/myapp/00-live/03stm32/00 keil5/RealThread/RT-Thread/3.1.5/libcpu/arm/cortex-m7/cpu_cache.c(75): error:  #20: identifier "uint32_t" is undefined
          SCB_CleanInvalidateDCache_by_Addr((uint32_t *)startAddr, size_byte);
D:/myapp/00-live/03stm32/00 keil5/RealThread/RT-Thread/3.1.5/libcpu/arm/cortex-m7/cpu_cache.c(75): error:  #29: expected an expression
          SCB_CleanInvalidateDCache_by_Addr((uint32_t *)startAddr, size_byte);
D:/myapp/00-live/03stm32/00 keil5/RealThread/RT-Thread/3.1.5/libcpu/arm/cortex-m7/cpu_cache.c(75): error:  #18: expected a ")"
          SCB_CleanInvalidateDCache_by_Addr((uint32_t *)startAddr, size_byte);
D:/myapp/00-live/03stm32/00 keil5/RealThread/RT-Thread/3.1.5/libcpu/arm/cortex-m7/cpu_cache.c(79): warning:  #223-D: function "SCB_CleanDCache_by_Addr" declared implicitly
          SCB_CleanDCache_by_Addr((uint32_t *)startAddr, size_byte);
D:/myapp/00-live/03stm32/00 keil5/RealThread/RT-Thread/3.1.5/libcpu/arm/cortex-m7/cpu_cache.c(79): error:  #20: identifier "uint32_t" is undefined
          SCB_CleanDCache_by_Addr((uint32_t *)startAddr, size_byte);
D:/myapp/00-live/03stm32/00 keil5/RealThread/RT-Thread/3.1.5/libcpu/arm/cortex-m7/cpu_cache.c(79): error:  #29: expected an expression
          SCB_CleanDCache_by_Addr((uint32_t *)startAddr, size_byte);
D:/myapp/00-live/03stm32/00 keil5/RealThread/RT-Thread/3.1.5/libcpu/arm/cortex-m7/cpu_cache.c(79): error:  #18: expected a ")"
          SCB_CleanDCache_by_Addr((uint32_t *)startAddr, size_byte);
D:/myapp/00-live/03stm32/00 keil5/RealThread/RT-Thread/3.1.5/libcpu/arm/cortex-m7/cpu_cache.c(83): warning:  #223-D: function "SCB_InvalidateDCache_by_Addr" declared implicitly
          SCB_InvalidateDCache_by_Addr((uint32_t *)startAddr, size_byte);
D:/myapp/00-live/03stm32/00 keil5/RealThread/RT-Thread/3.1.5/libcpu/arm/cortex-m7/cpu_cache.c(83): error:  #20: identifier "uint32_t" is undefined
          SCB_InvalidateDCache_by_Addr((uint32_t *)startAddr, size_byte);
D:/myapp/00-live/03stm32/00 keil5/RealThread/RT-Thread/3.1.5/libcpu/arm/cortex-m7/cpu_cache.c(83): error:  #29: expected an expression
          SCB_InvalidateDCache_by_Addr((uint32_t *)startAddr, size_byte);
D:/myapp/00-live/03stm32/00 keil5/RealThread/RT-Thread/3.1.5/libcpu/arm/cortex-m7/cpu_cache.c(83): error:  #18: expected a ")"
          SCB_InvalidateDCache_by_Addr((uint32_t *)startAddr, size_byte);
D:/myapp/00-live/03stm32/00 keil5/RealThread/RT-Thread/3.1.5/libcpu/arm/cortex-m7/cpu_cache.c(71): warning:  #177-D: variable "size_byte"  was declared but never referenced
      rt_uint32_t size_byte = size + (rt_uint32_t)addr - startAddr;
D:/myapp/00-live/03stm32/00 keil5/RealThread/RT-Thread/3.1.5/libcpu/arm/cortex-m7/cpu_cache.c: 10 warnings, 10 errors
"STM32F767\STM32F767.axf" - 10 Error(s), 10 Warning(s).
Target not created.
Build Time Elapsed:  00:00:00

失败报错一大堆
这种方法放弃

采用cube 创建裸机工程,移植rt_thread nano 3.03工程,可以运行

后续补充

通过UI 配置移植

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值