问题标签 [arm-none-eabi-gcc]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
31 浏览

openssl - 如何为 arm-none-eabi-gcc 交叉编译 openssl

我想在我的 stm32 开发板上使用 OpenSSL 的 SM2 算法,

当我搜索一种方法时,我发现所有解决方案都是通过 arm-none-linux-gnueabi 编译 OpenSSL,所以我按照描述进行了操作。

得到一个libcrypt.so后,我想用arm-none-eabi-ld链接库,但是出现了系统错误,看来我不能用arm-none-eabi-gcc。

那么,我能为它做些什么呢?

0 投票
1 回答
63 浏览

cmake - 静态库中中断向量的弱函数定义优于强函数定义

介绍

  • arm-none-eabi-gcc 版本 10.3-2021.10 20210824
  • 设备:北欧nRF52840/nRF52832/nRF52833
  • 受影响的库:Nordic NRF5 SDK 17.1.0 - 自定义构建系统 (CMake)

我为 Nordic NRF5 SDK 编写了 CMake 构建系统(它本身只支持 makefile)。构建系统有一个可执行文件(应用程序)和多个底层静态库。依赖关系是这样的:

问题

我在 Nordic nRF5 SDK 之上创建了一个自定义 C 硬故障处理程序。它适用于以前的构建系统(makefile 构建系统)。必须注意的是,以前的构建系统不会创建静态库,新的 CMake 系统也是如此。它只是无条件地链接一切。

在理想情况下,SDK 的用户(即我)应该定义一个回调(HardFault_c_handler),它会在硬故障的情况下被中断向量调用。

在 nRF5 SDK 库中,目标 nrf5_sdk(静态库)中包含一个启动文件(modules/nrfx/mdk/gcc_startup_nrf52840.S)。此问题的相关代码:

HardFault_Handler此外,在 ac 文件中有一个强定义,应该优先于这个弱定义。文件(components/libraries/hardfault/nrf52/handler/hardfault_handler_gcc.c)包含:

在硬故障的情况下,MCU 应该调用 c 文件中的代码,但事实并非如此。

我的问题是为什么?如何让它更喜欢强大的功能?我现在的想法,虽然我不确定。因为这个回调,即 ,HardFault_Handler在主应用程序中(或在进入启动文件之前)没有被引用,链接器不需要解析它。只有当它在启动文件中看到这个符号时,它才会查找它,并且因为这是一个静态库,它只查找第一次出现。

我尝试过的事情

  • 删除静态库,这解决了问题,
  • 将弱定义分离HardFault_Handler到单独的程序集文件中,这使得链接器从首先出现的文件中链接函数,使用-Wl,-trace-symbol=HardFault_Handler我看到链接器只查找第一次出现而不是停止(与弱和强无关)。
  • 将 c 文件放在源文件中的启动文件之前,不会改变结果。

编辑

我的链接器标志:

0 投票
2 回答
114 浏览

c++ - 为什么我不能将 std::string 与 arm-none-eabi-g++ 编译器一起使用?

这个编译器业务不是我的强项...

我想<string>在我的嵌入式 c++ 代码中使用模板库。

例如(须藤代码):

当我尝试编译此代码时,出现错误:

我的 Makefile 包含以下标志:

据我了解,包含标志-std=gnu++14应该让我覆盖不?

0 投票
0 回答
31 浏览

c++ - 关于如何正确makefile arm stm32

我知道这已经是一个长期讨论的话题,但我还不能完全理解/实现适合我的文件夹系统和要求的 makefile。

这是我的任何项目的文件夹系统的样子:

我想要每个子文件夹(即 subdir_x.mk)的本地生成文件,其源文件是一个级别的(即../Src/file1.cpp),为此我构建了一个这样的生成文件(在这种情况下以 subdir_src.mk 为例)

当我得到输出时,这种方式似乎不起作用: make: *** No targets specified and no makefile found. Stop. 当我在 cmd 中键入“make objects”时

我希望当我提示 /Debug/Makefile 时,我希望该 makefile 使用每个 subdir.mk 来构建对象,然后“大”makefile 链接所有对象。

我试图看看 stm32 构建系统,但我就是不太明白......所以我来了。

我很欣赏关于如何制作这个 makefile 的想法和评论,因为我目前的做法很陈旧。

另外我需要知道如何明确清除每个子文件夹中的相应文件。

0 投票
1 回答
52 浏览

c - 为什么我不能将函数返回的结构分配给结构?

我写了“轻量级”时间库,我有这样的 struct 和 typedef:

我有一个返回的函数tm_t

我想像这样使用它:

我收到此错误:

从类型'int'分配给类型'tm_t' {aka'struct tmt'}时不兼容的类型


我也尝试像这样更改函数和变量:

我做错了什么?