本文翻译于ST官网文档,《Development guidelines for STM32Cube Expansion Packages》

文章目录

  • 介绍
  • 1. 总体信息
  • 2. 参考和首字母缩写词
  • 3. STM32Cube MCU软件包和STM32Cube扩展软件包
    • 3.1 STM32Cube MCU软件包
    • 3.2 STM32Cube扩展软件包
  • 4. 包装要求
    • 4.1 使用STM32CubeMX开发示例
    • 4.2 STM32Cube MCU软件包驱动程序和中间件的扩展
  • 5. 新的中间件集成
    • 5.1 要求
    • 5.2 组织
    • 5.3 以对象格式交付
  • 6. 软件质量要求

介绍

STMCube™是意法半导体的一项原始计划,旨在通过以下方式使开发人员的生活更轻松。减少开发工作量,时间和成本。 STM32Cube涵盖了整个STM32产品组合。
STM32Cube包括:

  • STM32CubeMX,一种图形软件配置工具,允许生成 使用图形向导的C初始化代码。
  • 每个STM32微控制器都提供全面的STM32Cube MCU软件包 系列(例如STM32F4系列的STM32CubeF4),具有:
  1. STM32Cube HAL,一种STM32抽象层嵌入式软件,可确保 最大化STM32产品组合的可移植性。 HAL适用于所有外围设备
  2. 底层API(LL)提供了快速轻量的面向专家的层,该层是 比HAL更接近硬件。 LL API仅适用于一组外设。
  3. 一套一致的中间件组件,例如RTOS,USB,TCP / IP和 图形
  4. 所有嵌入式软件实用程序,随附全套示例

    此外,STM32Cube扩展软件包包含嵌入式软件组件,这些组件补充了STM32Cube MCU软件包的功能,或者使能够在各种应用领域中使用大量ST器件以及最合适的STM32微控制器,或者同时使用这两者。
    本文档介绍了STM32Cube扩展软件包开发的兼容性要求,该兼容性要求确保与STM32Cube MCU软件包和工具的正确匹配,以及STM32Cube生态系统内的总体一致性,从而能够基于经过验证的软件元素快速进行应用程序开发。
    本文档的读者必须熟悉STM32Cube架构,HAL和LL API以及编程模型。完整的文档集可从www.st.com上的STM32Cube MCU软件包页面获得。

1. 总体信息

STM32Cube MCU软件包和STM32Cube扩展软件包在基于Arm®Cortex®-M处理器的STM32 32位微控制器上运行。

2. 参考和首字母缩写词

www.st.com上的以下文档同时用于STM32Cube扩展包的开发:

  1. STM32Cube扩展包(UM2312)的开发清单
    表1列出了与更好地理解本文档有关的首字母缩写词的定义。

3. STM32Cube MCU软件包和STM32Cube扩展软件包

STM32Cube解决方案由工具部分STM32CubeMX和STM32Cube MCU软件包组成,后者提供了受益于STM32微控制器功能的软件模块。
除了STM32CubeMX和STM32Cube MCU软件包之外,STM32Cube扩展软件包还通过补充插件丰富了整个STM32Cube生态系统。

3.1 STM32Cube MCU软件包

STM32Cube MCU软件包(例如STM32F4系列中用于微控制器的STM32CubeF4)提供了使用STM32微控制器硬件功能所需的所有必要软件模块。
STM32Cube MCU软件包主要包含:

  • STM32外设驱动程序

– HAL(硬件抽象层)
– LL(低级API)

  • 涵盖STM32外设的中间件

– RTOS,TCP / IP,TLS / SSL,USB,图形,文件系统,JPEG等

  • STM32开发板的外部组件驱动程序(BSP)

–评估板
–发现套件
–核心板

  • 丰富的示例集旨在展示STM32硬件以及相关的嵌入式软件功能和用法

STM32Cube嵌入式软件以Mix Liberty + OSS +第三方V1混合许可模式分发,如www.st.com所述。

图2展示了STMicroelectronics分发,维护和支持的STM32Cube MCU软件包的顶层结构。

3.2 STM32Cube扩展软件包

STM32Cube扩展软件包包含用于补充STM32Cube MCU软件包功能的附加软件组件,用于:

  • ·新的中间件堆栈
  • ·新的硬件和电路板支持(BSP)
  • ·新实例
  • ·上面的几个项目扩展包分为两类:一些STM32Cube扩展包由意法半导体开发,维护和支持,而另一些则由不属于意法半导体的第三方开发,维护和分发。

4. 包装要求

STM32Cube MCU软件包是任何STM32Cube扩展软件包的基础。
因此,应始终组织文件夹和文件结构,而不修改原始文件夹结构,如第9页上的图3所示。
STM32Cube扩展包开发清单文件[1]中提供了STM32Cube扩展包内容的详细要求。

4.1 使用STM32CubeMX开发示例

在STM32Cube扩展包中,应使用STM32CubeMX工具开发示例。此要求意味着开发满足以下规则:

  • ·STM32CubeMX工具应用于配置STM32器件和开发板,并生成相应的初始化代码
  • ·在生成的* .h和* .c源文件中,用户应在/ * USER CODE BEGIN * /和/ * USER CODE END *
    /标记所限制的部分内添加应用代码
  • ·关联的*。 ioc文件应在示例根目录下可用
  • 如果使用其他STM32CubeMX项目设置,则。 extSettings文件应与保持同一级别。 ioc文件的位置和命名约定。
    ioc在图3中进行了描述。
4.2 STM32Cube MCU软件包驱动程序和中间件的扩展

在某些特定情况下,可能会需要STM32Cube扩展软件包的开发人员更新STM32Cube MCU软件包中提供的本机驱动程序(HAL / LL,CMSIS和BSP)或中间件(例如,用于扩展已实现的功能,在正式ST版本之前及早修复错误或其他)。
在这种情况下,用户应按以下步骤进行:

  1. 在ApplicationN Name存储库下,创建一个文件夹\ Extension,将要修补的文件复制到该文件夹​​中。
    此复制操作必须遵守文件夹层次结构。如果保留默认文件夹层次结构会导致长路径问题,则无论如何都可以减少子文件夹的数量。
  2. 通过附加_patch后缀来重命名要修补的文件。
  3. 在项目中使用修补的文件而不是原始文件。

图4提供了一个示例,其中以红色概述的文件是自定义的,以实现USB设备音频流应用程序所需的特定功能,而STM32Cube MCU软件包本身不支持这些功能。

5. 新的中间件集成

5.1 要求

中间件组件是位于STM32硬件和用户应用程序之间的固件层。基本上,任何新的中间件组件都必须符合以下要求:

  • ·必须实现模块化体系结构,将复杂性分解为更简单的块或文件。
  • ·必须独立于硬件(设备和板)。
  • ·与硬件驱动程序和其他中间件堆栈的连接应通过接口文件进行。
  • ·接口文件应作为模板提供在中间件文件夹中,以供用户自定义。
5.2 组织

中间件组件通常由以下组成:

  • ·模块:模块是通用功能子层,可以单独添加或删除。例如,TCP / IP堆栈由TCP /
    IP核心以及DHCP,HTTP和FTP组件组成。每个组件都被视为一个模块。可以通过启用或禁用它的配置文件中的特定定义/宏来添加或删除它。
  • ·核心:这是组件的内核;它管理主库状态机,并管理各个模块之间的数据流。
  • ·接口层:接口层通常用于将中间件核心组件与较低的层(例如HAL,LL和BSP驱动程序)链接。


根据中间件组件的不同,接口层可以属于以下类别之一:

  • ·与CPU的接口仅取决于所用的STM32内核
  • ·与HAL,LL和BSP驱动程序的接口

与CPU的接口仅取决于所使用的STM32内核:在这种情况下,接口文件应位于Middlewares目录中,并由使用同一内核的所有应用程序使用。
FreeRTOS可以作为示例,因为它为每个ARM Core(例如Cortex @ -M3,Cortex @ -M4或其他)和每个编译器提供了移植文件,因为需要一些汇编代码来处理上下文切换和寄存器。保存和还原机制。
接口文件在中间件​​结构中的位置如图6所示。

与HAL,LL和BSP驱动程序的接口:在某些中间件组件中,该接口是一组空的或几乎空的功能,用户需要填充这些功能才能将其与HAL和LL层链接。通常,接口文件与中间件组件一起作为模板文件提供。必须在应用程序层中复制和自定义它们。

接口文件在中间件​​结构中的位置如图7所示。

每个子文件夹必须包含一个Inc文件夹和一个\ Src文件夹,分别位于头文件(“ .h)和源文件(” .c)的位置。

如果中间件组件很简单;子文件夹\ Core,Modules和\ Porting可以删除;然后,仅应在中间件组件根级别提供Inc和\ Src子文件夹。

5.3 以对象格式交付

当中间件库以二进制或对象格式交付时,它必须符合一组最低要求:

  • ·应提供头文件以将库接口API导出到最终应用程序
  • ·应提供发行说明
  • ·所有支持的编译器均应以对象格式提供库。如果库对象是编译器相关的,则必须在对象文件名中明确指出支持的编译器。

例如,LibraryNameV_CMx_C_O.a是一个库对象文件名,其中:

  • V:模块版本(例如,对于V0.1版本,V = 01)
  • x:CMx核心类(CM0,CM3,CM4,CM7,CM23,CM33)
  • C:编译器(IARTM,Keil?,GCC)
  • O:指定编译器优化
  • < empty >:高尺寸优化
  • Ot:高速优化
  • Ontsc:无大小限制的高速优化
  • Ob:高平衡优化

6. 软件质量要求

在STM32Cube扩展包(与STM32Cube MCU包相关的附加组件)中开发的BSP驱动程序,中间件和项目必须满足以下最低要求:

  • ·确保在Windows和Linux平台上使用所有受支持的编译器(EWARM,MDK-ARM和SW4STM32)进行编译,而不会出现错误或警告

(仅当扩展组件的开发者不拥有的SW组件上存在警告时,才接受警告)。

  • ·执行功能测试时不会遗留任何已知的错误(如果在组件发行说明中有记录,则可接受次要错误),并提供证据报告。

BSP驱动程序和中间件必须符合以下附加要求:

  • ·符合MISRAC®标准和静态代码分析,并提供证据报告
  • ·MISRAC®不合规规则偏差应合理。

STM32Cube扩展包开发指南相关推荐

  1. laravel框架应用和composer扩展包开发

    laravel5.5+ laravel官方地址 laravel是目前最流行的php框架,发展势头迅猛,应用非常广泛,有丰富的扩展包可以应付你能想到的各种应用场景,laravel框架思想前卫,跟随时代潮 ...

  2. laravel扩展包开发步骤总结

    1. 创建包 1 php artisan workbench vendor/package --resources 注:  vendor:开发商名   package:包名 2.修改下包里compos ...

  3. 金蝶扩展报表开发指南(基本开发流程)

    一.扩展报表菜单 1-1.进入扩展报表工具,路径如下图: 1-2.打开之后,可以看到如下界面: 扩展报表的制作主要分为两部分: 一个是数据集,数据集是去查询数据库返回来的数据,比如基础资料或者单据的一 ...

  4. Laravel大型项目系列教程(七)之7 扩展包和Artisan开发

    本节教程将讲解扩展包开发和Artisan扩展开发,并浏览不同分辨率下的自适应效果.本节结束后整个教程就结束了,文章最后有完整版程序代码的下载. 1.扩展包开发 在前面开发中,我们经常要用到通知,如修改 ...

  5. Laravel 开发扩展包基本流程

    介绍 在Laravel中就有Laravel Composer Package开发的相关介绍 这其中需要运用 Service Providers 当然对于我们Laravel开发人员 来说 开发一个扩展包 ...

  6. php扩展包启动,Composer 扩展开发:本地运行扩展包

    假设你开发了一个网站,并希望将网站的其中一部分分开独立成为一个包.你新建了一个新的仓库并在开发环境中准备好了,这时候你想看看网站和你自己新的包是怎样整合一起使用的,应该怎样去做呢? 本文将介绍如何使用 ...

  7. laravel-admin 开发 bootstrap-treeview 扩展包

    laravel-admin 扩展开发文档 https://laravel-admin.org/doc... 效果图: 开发过程: 1.先创建Laravel项目,并集成laravel-admin,教程: ...

  8. 如何开发、本地测试、发布 Laravel 扩展包?Class ‘Angkee\Admin\AdminServiceProvider‘ not found

    在按照文档实践当中遇到错误.我修正一下. Class 'Angkee\Admin\AdminServiceProvider' not found 应该是这样的 "Angkee\Admin\& ...

  9. Chrome扩展开发指南

    前言 Chrome 扩展(通常也叫插件)也是软件程序,使用 Web(HTML, CSS, and JavaScript)技术栈开发.允许用户自定义 Chrome 浏览体验.开发者可以通过增加特效或功能 ...

最新文章

  1. 自制爬虫,爬取分类总阅读量,总评论量。全部文章阅读量和,以及评论量和。但是发现数据不对
  2. MODE ——计算了 任意多个数字的平均值(知识点:for的循环)
  3. python中栈的描述是_数据结构与算法:Python语言描述 栈和队列.ppt
  4. 俊鸟的数据输入校验专题(三) WPF 的五种输入校验概述
  5. 软件开发者最重要的四大技能
  6. Virtual Studio 2013 每次加载程序(dll)缓慢的问题
  7. 各浏览器中的鼠标滚轮事件处理
  8. 隐秘攻击:恶意病毒可使智能手机加速老化
  9. 387. First Unique Character in a String - String
  10. mysql 判断语句_mysql条件判断语句讲解
  11. 记一次mykings暗云挖矿木马的排查与解决
  12. 知识分享!什么是中继器?-道合顺大数据Infinigo
  13. 《正则表达式深入浅出》开放下载,快快收藏!
  14. Elastic:配置 Elasticsearch 服务器 logs
  15. 大小写英文字母对应的ASCII值
  16. Linux内存是怎么工作的?
  17. 11个好玩有趣的网站,一打开就停不下来
  18. win7安装MySQL5.6.17
  19. 查看微信好友是否删除自己
  20. 微汇智能袁文龙受邀剪彩北斗微芯长沙高新区项目开工

热门文章

  1. 迷你旅游网——项目初始化(从GitHub上pull项目并导入IDEA......)
  2. mysql修改密码Linux 解决 ERROR 1045 (28000): Access denied for user ‘xxx‘@‘localhost‘ (using password: Yes)
  3. Redis数据库【一文教必备操作】
  4. “房间里有100个人,每人都有100元钱,每轮每人要拿一元钱随机给另一个人”最后分布的python结果
  5. 学画画真的很需要天赋吗,不一定看看他是怎么说的
  6. Windows 8学习资源汇总
  7. Depth-Guided Camouflaged Object Detection阅读笔记
  8. 《Elasticsearch:权威指南》Query DSL -- Term-level queries --Terms Query
  9. docker安装官网
  10. vue项目通过puppeteer做SEO,可以使用Puppeteer在Vue项目中进行SEO,通过服务端渲染获取渲染后的HTML内容,以便搜索引擎爬虫能够正确地索引您的网页内容。