在RTOS环境中基于ARM Cortex M4的STM32F4控制器上构建OpenSSL库

在RTOS环境中基于ARM Cortex M4的STM32F4控制器上构建OpenSSL库,openssl,arm,keil,stm32f4,cmsis,Openssl,Arm,Keil,Stm32f4,Cmsis,我正在研究开发嵌入式蓝牙应用程序的可行性 在STM32F407微控制器(基于ARM Cortex M4)上支持openSSL FIPS。该应用程序不在Linux、Windows或andriod等通用操作系统上运行,但在CMSIS-RTX RTOS上运行。我在Windows中使用Keil作为开发环境,内置armc编译器(armcc)进行编译 在分析过程中,我发现了OpenSSL wiki,它解释了如何构建和安装OpenSSL库:。在该页面中,虽然有一个关于ARM平台编译的部分,但没有关于如何编译的

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

在分析过程中,我发现了OpenSSL wiki,它解释了如何构建和安装OpenSSL库:。在该页面中,虽然有一个关于ARM平台编译的部分,但没有关于如何编译的描述

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

我还浏览了以下有关使用ARM编译的链接

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

  • 是否有可用于上述平台的库

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

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

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

  • 我可以将哪些其他SSL库用于嵌入式软件?(我听说WolfSSL可能是一个选择)

  • 是的,有一个图书馆

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

    • OpenSSL是一个发布模式下的非常大的库800K。这通常不适合任何STM32F4,更不用说为您自己的应用程序留出空间
  • 首先,在Windows中编译OpenSSL并检查封装外形大小。执行此步骤并验证其是否适合设备上的可用闪存并不复杂

  • 它可能无法工作,因为它无法安装在设备上。再一次归结到尺寸问题,不是“它是否有效”,而是“它是否合适”

  • 其他SSL库:

    • 具有FIPS解决方案,已移植到STM32(支持CMSIS-RTX RTOS),并根据功能提供平均60-80K的占地面积。他们甚至得到了积极的支持info@wolfssl.com或其论坛:


  • 网站上有Keil的补丁。不幸的是,这是一个古老版本的OpenSSL 0.9.8(yuk!)。上一次我查看时,可以将作为新项目的起点。完整的OpenSSL库相当大。你想解决的问题是什么?NaCl(和tweetnacl)对你来说足够完整吗?@domen我正在努力使蓝牙连接更加安全,并且要求是针对使用OpenSSL(或其任何变体)的。我认为你需要向需求人员澄清,因为做出如此具体(另一方面又广泛)的技术决定是很奇怪的。如果他们想要像样的非对称加密,他们应该告诉他们;说OpenSSL没有多大意义,考虑到你可以选择eNULL cipher,它不起任何作用。@Jinu wolfSSL维护一个OpenSSL兼容层,因此API可以保持为OpenSSL API,但在下面使用wolfSSL。这是在您的评论“特定于使用OpenSSL(或其任何变体)的需求”的leu中,请参阅:这有帮助吗?更新:wolfSSL添加了对CubeMX硬件抽象层(HAL)的支持。对于在STM32(F0、F1、F2、F3、F4、F7、L0、L1或L4)上开发的用户,如果使用CubeMX代码生成器生成标准外设库,则可以利用wolfSSLv3.10.0版本中添加的硬件加密支持!如果在任何其他micro上工作,请参见/wolfssl/wolfcrypt/settings.h
    wolfssl_STM32F2
    wolfssl_STM32F4
    中的定义作为模型。测试是在F2和F4上完成的,因此这些是目前唯一可用的默认选项。