gpt4 book ai didi

c - 如何在Atollic TrueStudio中包含CMSIS-DSP header

转载 作者:太空宇宙 更新时间:2023-11-04 03:11:17 25 4
gpt4 key购买 nike

我正在尝试在STM32 F411RE板中实现DSP的使用,但是我似乎无法在不调用大量错误的情况下包含必要的文件。
背景
我以前在Keil uVision工作过CMSIS和CMSIS-DSP,但是由于32k的代码限制,我很快就超过了评估限制。因此,我一直试图将CMSIS-DSP包含到atolic TrueStudio中,但这似乎很难实现:CMSIS-DSP上可供使用的文档有限,在atolic TrueStudio中实现的文档更少。
一些相关资源可以在
Atollic TrueStudio User Guide
以及
StackOverflow topic #1

StackOverflow topic #2
. 我能找到的大多数其他相关主题都是关于Keil uVision或用户指南的使用,而没有更多的帮助。
Atolic TrueStudio确实包含了一个内置的包管理器,其中可以下载基本CMSIS,但它没有为CMSIS-DSP包提供此选项。
尝试解决方案
我试图手动下载相应的CMSIS包(STM32Cube_FW_F4_V1.24.0),并将相应的DSP包放入项目文件结构中。这样就允许使用诸如
#include arm_math.harm_rfft_fast_instance_f32 S;也可以通过使用自动完成功能调用,因此由IDE识别。
但是,由于包含的函数无法识别它们的头依赖项(例如#include arm_math.h),此过程也会调用许多错误。我发现混淆.Mc.C能够识别#include arm_math.h命令,但所包含的函数不是,但我还是尝试通过将CMSIS DSP添加到所包含的目录(在“构建属性-> C/C++构建->设置->工具设置-> C编译器>目录>)来解决这个问题。然而,这也不能解决目前的问题。
代码结果
函数找不到标题
但是main可以找到完全相同的头
头包含在构建选项->目录中
刚刚验证了它也包含在“路径和符号”中,一旦您将其包含在构建选项中,它将自动执行AFAIK:
更新
自从我的作品以来,我已经取得了一些进展,主要是通过搞乱include,symbols和linker。现在,我已经成功地克服了最初的错误(虽然很不幸,我不知道如何克服),但是我现在已经为startup-stm32文件产生了大量额外的错误。
这些都是指CMSIS中包含的模板文件(CMSIS/Device/ST/STM32F4xx/Source/Templates/ARM/…)的错误指令,这些文件无法解释这些模板中列出的各种命令。
示例错误:bad instruction __heap_base

最佳答案

我已经为我的项目解决了这个问题:包括Github repo中的CMSIS文件夹意味着在整个文件夹结构中都有很多模板。当试图在这些模板仍然存在的情况下构建/编译时,会导致许多无效类型和重新定义错误的问题。
这些模板大多位于逻辑位置,但有些模板埋藏得很深,因此可能很难找到。我将尽快制作一个视频,描述将CMSIS(DSP)从github repo添加到TrueStudio项目中的过程。
同时,以下步骤应使CMSIS和CMSIS-DSP在STM32 TrueStudio项目中工作:
确保从CMSIS文件夹中删除所有模板(文件夹)。这可能需要一些探索和试验:特别有害的是隐藏在
../STM32Cube_FW_xx_Vx.xx/Drivers/CMSIS/Device/ST/STM32xxxx/Source/{Templates}
同时,../STM32Cube_FW_xx_Vx.xx/Drivers/CMSIS/DSP/{Examples}../STM32Cube_FW_xx_Vx.xx/Drivers/CMSIS/DSP/{Projects}上还有其他的集合,我已经删除了它们,以便成功地编译/构建我的项目。
包括文件夹中所有名为Include的文件夹。AFAIK您不能只包括main../Drivers文件夹,因为includes似乎不包括底层结构,而且似乎还包括我的项目的错误。最好只是手动包含文件夹:您可以通过右键单击要包含的目标文件夹,单击底部“添加/删除包含路径”附近的选项,在“确定”包含此文件夹之前勾选两个框以进行释放和调试。对其他“include”文件夹重复此操作。
查找位于RTE_Components.h../STM32Cube_FW_xx_Vx/STM32xxxx-Nucleo\Templates\MDK-ARM\RTE文件。在NN(Neural Networks)CMSIS pack文件夹中也有此名称的文件(RTE_Components.h),请勿触摸这些文件。将此文件复制到以前包含的任何位置(将我的文件放在../Drivers/CMSIS/Include中),然后在您选择的IDE中打开它。在任何其他语句之前添加一行#define CMSIS_device_header " DEVICE_NAME.h ",并用STM32板名替换设备名。例如,我的RTE_Components.h文件看起来像

/*
* Auto generated Run-Time-Environment Component Configuration File
* *** Do not modify ! ***
* Project: 'Project'
* Target: 'STM32F410Tx_Nucleo'
*/
#define CMSIS_device_header "stm32f4xx.h" // define own board header, eg stm32f4xx.h or stm32f7xx.h
#ifndef RTE_COMPONENTS_H
#define RTE_COMPONENTS_H
#endif /* RTE_COMPONENTS_H */

确保CMSIS_device_报头的设备名与报头相对应。h
文件位于 ../Drivers/CMSIS/Device/ST/DEVICE_NAME/Include/DEVICE_NAME.h
添加所需的符号(右键单击项目,转到属性,C/C++ +一般,路径和符号;然后转到“符号符号”选项卡)定义FPU和皮质核心类型。对我来说,我需要添加 __FPU_PRESENT(没有值或值'1'),因为我在STM32F411RE上有Cortex M4芯片,所以添加 ARM_MATH_CM4。这意味着我的符号列表看起来像:
__FPU_PRESENT
__packed__attribute__((__packed__))
__weak__attribute__((weak))
- ARM_MATH_CM4
STM32F411xE
USE_HAL_DRIVER但这取决于你是否想使用HAL
再次确保必要的includes定义良好,因为不包括只有一个目录会导致大量错误。这些可以通过转到Project属性(右击项目,在底部选择),到C/C++构建,设置,然后工具设置选项卡,C编译器下拉和目录选项找到。
对于我的项目,在项目属性中有以下包含路径:
../Inc                                           (should be by default)
../Drivers/CMSIS/Device/ST/STM32F4xx/Include (should be by default)
../Drivers/STM32F4xx_HAL_Driver/Inc (should be by default)
../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy (should be by default)
../Drivers/CMSIS/Include (should be by default)

"${workspace_loc:/${ProjName}/Drivers/Device/ST/STM32F4xx/Include}"
"${workspace_loc:/${ProjName}/Drivers/CMSIS/Core/Include}"
"${workspace_loc:/${ProjName}/Drivers/CMSIS/Core_A/Include}"
"${workspace_loc:/${ProjName}/Drivers/CMSIS/DSP/Include}"

希望这对你也有帮助!

关于c - 如何在Atollic TrueStudio中包含CMSIS-DSP header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56130725/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com