STM32Cube扩展包开发指南
本文翻译于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),具有:
- STM32Cube HAL,一种STM32抽象层嵌入式软件,可确保 最大化STM32产品组合的可移植性。 HAL适用于所有外围设备
- 底层API(LL)提供了快速轻量的面向专家的层,该层是 比HAL更接近硬件。 LL API仅适用于一组外设。
- 一套一致的中间件组件,例如RTOS,USB,TCP / IP和 图形
- 所有嵌入式软件实用程序,随附全套示例
此外,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扩展包的开发:
- 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版本之前及早修复错误或其他)。
在这种情况下,用户应按以下步骤进行:
- 在ApplicationN Name存储库下,创建一个文件夹\ Extension,将要修补的文件复制到该文件夹中。
此复制操作必须遵守文件夹层次结构。如果保留默认文件夹层次结构会导致长路径问题,则无论如何都可以减少子文件夹的数量。 - 通过附加_patch后缀来重命名要修补的文件。
- 在项目中使用修补的文件而不是原始文件。
图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扩展包开发指南相关推荐
- laravel框架应用和composer扩展包开发
laravel5.5+ laravel官方地址 laravel是目前最流行的php框架,发展势头迅猛,应用非常广泛,有丰富的扩展包可以应付你能想到的各种应用场景,laravel框架思想前卫,跟随时代潮 ...
- laravel扩展包开发步骤总结
1. 创建包 1 php artisan workbench vendor/package --resources 注: vendor:开发商名 package:包名 2.修改下包里compos ...
- 金蝶扩展报表开发指南(基本开发流程)
一.扩展报表菜单 1-1.进入扩展报表工具,路径如下图: 1-2.打开之后,可以看到如下界面: 扩展报表的制作主要分为两部分: 一个是数据集,数据集是去查询数据库返回来的数据,比如基础资料或者单据的一 ...
- Laravel大型项目系列教程(七)之7 扩展包和Artisan开发
本节教程将讲解扩展包开发和Artisan扩展开发,并浏览不同分辨率下的自适应效果.本节结束后整个教程就结束了,文章最后有完整版程序代码的下载. 1.扩展包开发 在前面开发中,我们经常要用到通知,如修改 ...
- Laravel 开发扩展包基本流程
介绍 在Laravel中就有Laravel Composer Package开发的相关介绍 这其中需要运用 Service Providers 当然对于我们Laravel开发人员 来说 开发一个扩展包 ...
- php扩展包启动,Composer 扩展开发:本地运行扩展包
假设你开发了一个网站,并希望将网站的其中一部分分开独立成为一个包.你新建了一个新的仓库并在开发环境中准备好了,这时候你想看看网站和你自己新的包是怎样整合一起使用的,应该怎样去做呢? 本文将介绍如何使用 ...
- laravel-admin 开发 bootstrap-treeview 扩展包
laravel-admin 扩展开发文档 https://laravel-admin.org/doc... 效果图: 开发过程: 1.先创建Laravel项目,并集成laravel-admin,教程: ...
- 如何开发、本地测试、发布 Laravel 扩展包?Class ‘Angkee\Admin\AdminServiceProvider‘ not found
在按照文档实践当中遇到错误.我修正一下. Class 'Angkee\Admin\AdminServiceProvider' not found 应该是这样的 "Angkee\Admin\& ...
- Chrome扩展开发指南
前言 Chrome 扩展(通常也叫插件)也是软件程序,使用 Web(HTML, CSS, and JavaScript)技术栈开发.允许用户自定义 Chrome 浏览体验.开发者可以通过增加特效或功能 ...
最新文章
- 自制爬虫,爬取分类总阅读量,总评论量。全部文章阅读量和,以及评论量和。但是发现数据不对
- MODE ——计算了 任意多个数字的平均值(知识点:for的循环)
- python中栈的描述是_数据结构与算法:Python语言描述 栈和队列.ppt
- 俊鸟的数据输入校验专题(三) WPF 的五种输入校验概述
- 软件开发者最重要的四大技能
- Virtual Studio 2013 每次加载程序(dll)缓慢的问题
- 各浏览器中的鼠标滚轮事件处理
- 隐秘攻击:恶意病毒可使智能手机加速老化
- 387. First Unique Character in a String - String
- mysql 判断语句_mysql条件判断语句讲解
- 记一次mykings暗云挖矿木马的排查与解决
- 知识分享!什么是中继器?-道合顺大数据Infinigo
- 《正则表达式深入浅出》开放下载,快快收藏!
- Elastic:配置 Elasticsearch 服务器 logs
- 大小写英文字母对应的ASCII值
- Linux内存是怎么工作的?
- 11个好玩有趣的网站,一打开就停不下来
- win7安装MySQL5.6.17
- 查看微信好友是否删除自己
- 微汇智能袁文龙受邀剪彩北斗微芯长沙高新区项目开工
热门文章
- 迷你旅游网——项目初始化(从GitHub上pull项目并导入IDEA......)
- mysql修改密码Linux 解决 ERROR 1045 (28000): Access denied for user ‘xxx‘@‘localhost‘ (using password: Yes)
- Redis数据库【一文教必备操作】
- “房间里有100个人,每人都有100元钱,每轮每人要拿一元钱随机给另一个人”最后分布的python结果
- 学画画真的很需要天赋吗,不一定看看他是怎么说的
- Windows 8学习资源汇总
- Depth-Guided Camouflaged Object Detection阅读笔记
- 《Elasticsearch:权威指南》Query DSL -- Term-level queries --Terms Query
- docker安装官网
- vue项目通过puppeteer做SEO,可以使用Puppeteer在Vue项目中进行SEO,通过服务端渲染获取渲染后的HTML内容,以便搜索引擎爬虫能够正确地索引您的网页内容。