首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Ceedling和STM32CubeIDE: arm eabi/bin/ld:警告:找不到条目符号Reset_Handler;默认为0000000008000000

Ceedling和STM32CubeIDE: arm eabi/bin/ld:警告:找不到条目符号Reset_Handler;默认为0000000008000000
EN

Stack Overflow用户
提问于 2022-11-09 11:55:34
回答 1查看 64关注 0票数 0

我正在尝试为我的STM32CubeIDE项目创建一个使用Ceedling/Unity/CMoke的第一个单元测试。

该项目已开始构建,但出现了一个错误:

“链接test_functions_STM32G474RB.out./Applications/STMicroelectronics/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.macos64_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/bin/ld:警告:找不到条目符号Reset_Handler;默认为0000000008000000正在运行test_functions_STM32G474RB.out.

错误:测试可执行文件"test_functions_STM32G474RB.out“失败。

在build/test/out/test_functions_STM32G474RB.out::sh:

中,没有产生最终的测试结果计数,没有这样的文件或目录,并且退出状态:0。这通常是源代码或测试代码中内存访问错误的症状。

拉克流产了!

这是project.yml文件:

代码语言:javascript
运行
复制
---

# Notes:
# Sample project C code is not presently written to produce a release artifact.
# As such, release build options are disabled.
# This sample, therefore, only demonstrates running a collection of unit tests.

:project:
  :use_exceptions: FALSE
  :use_test_preprocessor: TRUE
  :use_auxiliary_dependencies: TRUE
  :build_root: build
#  :release_build: TRUE
  :test_file_prefix: test_
  :which_ceedling: gem
  :ceedling_version: 0.31.1
  :default_tasks:
    - test:all
        
#:test_build:
#  :use_assembly: TRUE

#:release_build:
#   :output: MyApp.out
#  :use_assembly: FALSE

:environment:

:extension:
  :executable: .out

:paths:
  :test:
    - +:test/**
    - -:test/support
  :source:
    - Core/Inc/**
    - Core/Src/**
    - Core/**
    - Drivers/CMSIS/Device/ST/STM32G4xx/Include/**
    - Drivers/CMSIS/Include/**
    - Drivers/STM32G4xx_HAL_Driver/Inc/**
    - Drivers/STM32G4xx_HAL_Driver/Inc/Legacy/**
  :support:
    - test/support
  :libraries: []

:defines:
  # in order to add common defines:
  #  1) remove the trailing [] from the :common: section
  #  2) add entries to the :common: section (e.g. :test: has TEST defined)
  :common: &common_defines []
  :test:
    - *common_defines
    - TEST
  :test_preprocess:
    - *common_defines
    - TEST

:cmock:
  :mock_prefix: mock_
  :when_no_prototypes: :warn
  :enforce_strict_ordering: TRUE
  :plugins:
    - :ignore
    - :callback
  :treat_as:
    uint8:    HEX8
    uint16:   HEX16
    uint32:   UINT32
    int8:     INT8
    bool:     UINT8
  :includes:
    - <stdbool.h>
    - <stdint.h>
  :treat_externs: :include

# Add -gcov to the plugins list to make sure of the gcov plugin
# You will need to have gcov and gcovr both installed to make it work.
# For more information on these options, see docs in plugins/gcov
:gcov:
  :reports:
    - HtmlDetailed
  :gcovr:
    :html_medium_threshold: 75
    :html_high_threshold: 90

#:tools:
# Ceedling defaults to using gcc for compiling, linking, etc.
# As [:tools] is blank, gcc will be used (so long as it's in your system path)
# See documentation to configure a given toolchain for use

:tools:
  :test_compiler:
    :executable: arm-none-eabi-gcc
    :arguments:
      - '${1}'
      - '-mcpu=cortex-m4'
      - '-std=gnu11'
      - '-g3'
      - '-DDEBUG'
      - '-DUSE_HAL_DRIVER'
      - '-DSTM32G474xx'
      - '-c'
      - '-I Core/Inc'
      - '-I Core/Startup'
      - '-I Drivers/STM32G4xx_HAL_Driver/Inc'
      - '-I Drivers/STM32G4xx_HAL_Driver/Inc/Legacy'
      - '-I Drivers/CMSIS/Device/ST/STM32G4xx/Include'
      - '-I Drivers/CMSIS/Include'
      - '-I #{Ceedling.load_path}/../vendor/unity/src'
      - '-I Core/Startup'
      - '-O0'
      - '-ffunction-sections'
      - '-fdata-sections'
      - '-Wall'
      - '-fstack-usage'
      - '--specs=nano.specs'
      - '-mfpu=fpv4-sp-d16'
      - '-mfloat-abi=hard'
      - '-mthumb'
  :test_linker:
    :executable: arm-none-eabi-gcc
    :arguments:
      - '-o "STM32G474RB - PLATFORM.elf"'
      - '-mcpu=cortex-m4'
      - '-T"/Users/raul/Documents/repository/platform-firmware-c/STM32G474RB - PLATFORM/STM32G474RBTX_FLASH.ld"'
      - '--specs=nosys.specs'
      - '-Wl,-Map="${BuildArtifactFileBaseName}.map"'
      - '-Wl,--gc-sections'
      - '-static'
      - '--specs=nano.specs'
      - '-mfpu=fpv4-sp-d16'
      - '-mfloat-abi=hard'
      - '-mthumb'
      - '-Wl,--start-group'
      - '-lc'
      - '-lm'
      - '-Wl,--end-group'

# LIBRARIES
# These libraries are automatically injected into the build process. Those specified as
# common will be used in all types of builds. Otherwise, libraries can be injected in just
# tests or releases. These options are MERGED with the options in supplemental yaml files.
:libraries:
  :placement: :end
  :flag: "-l${1}"
  :path_flag: "-L ${1}"
  :system: []    # for example, you might list 'm' to grab the math library
  :test: []
  :release: []

:plugins:
  :load_paths:
    - "#{Ceedling.load_path}"
  :enabled:
    - stdout_pretty_tests_report
    - module_generator
...

我尝试在编译器/链接器标志上添加.S文件。但是,要么我做错了,要么它不起作用。

我真的很感激比我更有经验的人能指出我做错了什么。

提前谢谢。

EN

回答 1

Stack Overflow用户

发布于 2022-11-10 21:30:25

对于未来的访问者,如果有任何帮助,…

最后我使用了gcc编译器而不是arm编译器。我从: source : include中删除了HAL驱动程序和其他源文件。然后,我用我想测试的代码创建了一个单独的.h和.c。然后,为了能够构建测试代码,我不得不模拟一些包含了最小要求的函数和变量的头文件。在某些情况下,对函数和变量进行了调整/模拟,以使其正常工作。

祝你好运…

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74374494

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档