【问题标题】:Building OpenSSL Library on ARM Cortex M4 based STM32F4 controller in an RTOS environment在 RTOS 环境中在基于 ARM Cortex M4 的 STM32F4 控制器上构建 OpenSSL 库
【发布时间】:2017-01-24 11:48:49
【问题描述】:

我正在研究开发嵌入式蓝牙应用程序的可行性 在 STM32F407 微控制器(基于 ARM Cortex M4)上支持 openSSL-FIPS。该应用程序不能在 Linux、Windows 或 Android 等通用操作系统上运行,但它可以在 CMSIS-RTX RTOS 上运行。我在Windows中使用Keil作为开发环境,内置armc编译器(armcc)进行编译。

在我的分析过程中,我找到了解释如何构建和安装 openSSL 库的 OpenSSL wiki:Compilation and Installation。页面中虽然有ARM平台编译的部分,但没有说明如何编译。

我还在 stackoverflow 中讨论了一些关于在 ARM 中交叉编译 openSSL 的讨论。但是所有这些讨论都是基于 ARM+Linux 的,没有一个是基于 RTOS 的。

我也浏览了以下关于使用 ARM 编译的链接

但是这里指定的编译器是GCC。

  1. 是否有可以在上述平台上使用的库?

  2. 是否可以将 openSSL 移植到带有 RTOS 的 ARM Cortex M4 平台?更具体地说,是否可以使用 CMSIS RTX 将其移植到 STM32F407 ?

  3. 如果可能,我应该从哪里开始,它有多复杂?

  4. 如果我在 GCC 编译器中编译 openSSL 库并在 armc 编译的应用程序中使用它,它会工作吗? (我感觉不会)

  5. 我可以在嵌入式软件中使用哪些其他 SSL 库? (我听说 WolfSSL 可能是一个选择)

【问题讨论】:

  • 网上有 Keil 的补丁。不幸的是,它是 OpenSSL 0.9.8 的古董版本(yuk!)。上次看的时候,可以作为一个新项目的起点。
  • 完整的 OpenSSL 库非常大。您要解决的问题是什么? NaCl(和 tweetnacl)对您来说足够完整吗?
  • @domen 我正在尝试使蓝牙连接更加安全,并且要求特定于使用 OpenSSL(或其任何变体)。
  • 我认为您需要向需求人员澄清,因为做出如此具体(另一方面也很广泛)的技术决策很奇怪。如果他们想要体面的非对称加密,他们应该告诉他们;说 OpenSSL 并没有多大意义,考虑到您可以选择不做任何事情的 eNULL 密码。
  • @Jinu wolfSSL 维护一个 OpenSSL 兼容层,因此 API 可以保留为 OpenSSL API,但在下面使用 wolfSSL。这是您的评论“要求特定于使用 OpenSSL(或其任何变体)”的 leu,请参阅:wolfssl.com/wolfSSL/… 这有帮助吗?

标签: openssl arm keil stm32f4 cmsis


【解决方案1】:
  1. 是的,有可用的库

  2. 如果设备有足够的闪存来容纳已编译的二进制文件,则可以将 openSSL 移植到 ARM cortex m4

    • OpenSSL 是一个非常大的库openssl-too-big 800K 处于发布模式。这通常不适用于任何 STM32F4,更不用说为您自己的应用留出空间。 STM32F-datasheet
  3. 您将首先在 Windows 中编译 OpenSSL 并检查占用空间大小。执行此步骤并验证它不适合您设备上的可用闪存应该并不复杂。

  4. 它可能无法工作,因为它不适合设备。再次归结为尺寸问题,而不是“它是否有效”,而是“它是否适合”。

  5. 其他 SSL 库:

【讨论】:

  • 更新:wolfSSL 添加了对 CubeMX 硬件抽象层 (HAL) 的支持。对于那些在 STM32(F0、F1、F2、F3、F4、F7、L0、L1 或 L4)上开发的人,如果您使用 CubeMX 代码生成器来生成标准外设库,那么您可以利用 Harware Crypto wolfSSLv3.10.0 版本中添加了支持!如果在任何其他 micros 上工作,请参阅 /wolfssl/wolfcrypt/settings.h WOLFSSL_STM32F2WOLFSSL_STM32F4 中的定义作为模型。在 F2 和 F4 上进行了测试,因此这些是目前唯一可用的默认选项。
猜你喜欢
  • 2018-12-04
  • 2017-11-10
  • 2017-06-23
  • 1970-01-01
  • 2012-07-16
  • 2019-12-14
  • 1970-01-01
  • 2019-06-27
  • 2018-09-29
相关资源
最近更新 更多