本帖最后由 正点原子 于 2022-7-25 14:39 编辑
1)实验平台:正点原子STM32MP157开发板
2) 章节摘自【正点原子】STM32MP1 M4裸机CubeIDE开发指南 V1.5.2
3)购买链接:https://detail.tmall.com/item.htm?id=631745687288
4)全套实验源码+手册+视频下载地址:http://www.openedv.com/docs/boards/arm-linux/zdyzmp157.html1.0.0 文档
5)正点原子官方B站:https://space.bilibili.com/394620890
6)STM32MP157技术交流QQ群:703341432
第三章 开发环境搭建
工欲善其事,必先利其器。搭建好了开发环境,后面的开发才可以继续进行,接下来,我们将向大家介绍STM32MP1的开发环境搭建,通过本章的学习,我们将了解到有哪些常用的开发工具,包括IDE、调试器、串口工具等。
本章将分为如下几个小节:
3.1、STM32Cube生态简介;
3.2、常用开发工具准备;
3.3、STM32CubeIDE安装;
3.4、CH340 USB虚拟串口驱动安装;
3.1 STM32Cube生态简介
STM32Cube生态系统是ST公司开发的一套开源免费开发工具和开发软件包,其致力于使STM32的开发人员在 STM32平台上快速、轻松地开发应用,该生态系统主要分为两大部分:
1)STM32Cube PC软件工具
STM32CubeMX、STM32CubeIDE、STM32CubeProgrammer和STM32CubeMonitor等。
2)软件库
STM32CubeMCU/MPU包 和STM32Cube扩展包等。
图3.1. 1 STM32生态系统
3.1.1 STM32CubeMX
STM32CubeMX是近年来开发STM32比较流行的一个配置代码工具,目前已经更新了很多个版本,新的版本功能也越来越强大。
STM32CubeMX是图形化配置工具,可以直观的选择MCU/MPU型号,可以动态地配置引脚、配置时钟树、配置中间件、配置内存,可以生成MCU初始化代码和MPU设备树源码,可以进行DDR测试等。STM32CubeMX的好处是具有直观的图形配置界面,而且它把很多东西封装的比较好,例如硬件抽象层、中间层、外围器件和示例代码以及Arm Cortex-A内核部分Linux设备树等等,它可以独立使用或作为 Eclipse 插件使用,例如在STM32CubeIDE上就集成了STM32CubeMX。STM32CubeMX开源且跨平台,支持在Windows、Linux和macOS 操作系统上运行(64位)。
图3.1.1. 1 STM32CubeMX支持ST全系列
软件获取链接:
https://www.st.com/content/st_com/zh/products/development-tools/software-development-tools/stm32-software-development-tools/stm32-configurators-and-code-generators/stm32cubemx.html
3.1.2 STM32CubeIDE
STM32CubeIDE是ST于2019年新推出的一款多功能的集成开发工具,它集成了TrueSTUDIO和STM32CubeMX插件,并基于GDB进行调试,它允许集成数百个现有插件,这些插件完成Eclipse的功能。
TrueSTUDIO插件是一款建立在Eclipse CDT、GCC和GDB的C/C++集成开发工具,其具有项目创建和管理、代码编辑、代码编译以及代码在线调试等功能。STM32CubeMX插件具有图形化配置功能,可以直观地选择MCU/MPU型号、动态配置引脚和设置时钟树、动态设置外围设备和中间器件的模式,可以自动处理引脚冲突和生成初始化代码。TrueSTUDIO和STM32CubeMX的强强联手,使STM32CubeIDE得以和MDK进行媲美。STM32CubeIDE完全开源,并且跨平台,目前支持Windows、Linux和macOS多个操作系统(64位版本)。
图3.1.2. 1 STM32CubeIDE
软件获取链接:
https://www.st.com/content/st_com/zh/products/development-tools/software-development-tools/stm32-software-development-tools/stm32-ides/stm32cubeide.html
3.1.3 STM32CubeProgrammer
STM32CubeProgrammer看名字就知道和编程有关,它属于多合一软件工具,它将ST Visual Programmer、DFUse Device Firmware Update、Flash Loader和 ST-Link等软件功能整合到了一起,为用户提供STM32 微控制器代码烧写和固件安全安装、更新功能,帮助用户更快地开发特定外部存储器的加载程序。
STM32CubeProgrammer支持对外部存储器如EEPROM,NOR Flash,SPI Flash,NAND Flash 进行擦除和烧写,用户烧写STM32微控制器既可使用片上SWD (单线调试)或JTAG调试端口,也可以用程序引导装入端口(例如 UART和USB),它支持 Motorola S19、Intel HEX、ELF 和 二进制格式(BIN文件),支持ST-LINK固件更新,支持OTP编程,支持图形化界面操作也支持命令行操作,在命令行界面,用户可通过脚本实现自动化编程。目前STM32CubeProgrammer支持Windows、Linux和macOS多个操作系统(64位版本)。
图3.1.3. 1 STM32CubeProgrammer
软件获取链接:
https://www.st.com/content/st_com/zh/products/development-tools/software-development-tools/stm32-software-development-tools/stm32-programmers/stm32cubeprog.html
3.1.4 STM32CubeMonitor
STM32CubeMonitor是一款用于诊断STM32应用程序的工具,具有实时读取程序变量的功能。
STM32CubeMonitor具有可视化的图形界面,通过流的图形编辑器,使用者不需要编程就可以轻松构建自定义仪表板,并快速添加仪表盘,例如仪表、条形图和曲线图,通过ST-LINK (SWD、JTAG协议)可以连接到任何STM32设备,借助具有多种格式显示功能的本机,可以实现远程监控,使用起来非常方便,性能比STM Studio还要强大。目前STM32CubeMonitor支持Windows、Linux Ubuntu 和 macOS操作系统。
图3.1.4. 1 STM32CubeMonitor
软件获取链接:
https://www.st.com/content/st_com/en/products/development-tools/software-development-tools/stm32-software-development-tools/stm32-performance-and-debuggers/stm32cubemonitor.html
3.1.5 软件库
软件库是STM32Cube生态中重要的组成部分,包括STM32CubeMCU/MP包和STM32Cube扩展包。STM32CubeMCU/MP包主要包括:底层驱动硬件抽象层(HAL)和低层(LL)、中间件层Middlewares和参考例程,其中:
硬件抽象层(HAL):通过标准化的API调用实现了不同STM32设备之间的可移植性;
底层(LL):提供一组轻量级、优化、面向专家的API,确保最佳的性能和运行时效率;
中间件层:一套一致的中间件,包括RTOS、USB库、文件系统、TCP / IP堆栈和触摸感应库或图形库等。
参考例程:包含所有嵌入式软件实用程序与全套外设应用的例程。
STM32Cube扩展包包含嵌入式软件组件,除了ST自家的也有第三方合作伙伴的资源,这些组件可以补充STM32Cube的功能。
图3.1.5. 1 ST软件库
如果没有了解过STM32 MCU/MPU的朋友,对这些软件库就会比较陌生。简而言之,它们是ST官方为了简化开发人员的工作、节约开发时间和开发成本而开发的代码包,里边的代码可以为开发人员所用,根据代码包的框架,开发人员可以在不同的ST系列芯片上进行代码移植,实现想要的功能。我们后面的学习内容,主要也是和代码包打交道。
3.2 常用开发工具准备
3.2.1 有话要说
在介绍开发环境搭建前,笔者有话想和大家说说。
正点原子已经有《STM32MP1 M4裸机HAL库开发指南》了,为何还要出《STM32MP1 M4裸机CubeIDE开发指南》呢?不错,两个文档都是基于HAL库进行开发,前者基于MDK进行开发,后者基于STM32CubeIDE进行开发,只是换了一个IED,本质上换汤不换药,但还是有差别的,下面我们来说说它们的优势和差异。
ST公司提供了多达20种IDE来对STM32的开发支持,在众多IDE里,MDK和IAR的用户是比较多的,很多人一开始学习单片机的时候使用的是MDK或者IAR来开发,这两个IED使用起来简单、好用并且普及很广。例如MDK,其开发界面美观,不需要做很麻烦的配置就可以进行开发,编译速度快,并且具有一键下载功能,可以说是比较傻瓜式的,对初学者来说比较友好。不过,MDK是一款付费集成开发环境,如果要商用,需要联系Keil公司购买,而免费版或评估版要么有器件型号限制,要么有程序容量限制。
使用MDK进行开发,易于上手,操作简单,如果之前有接触MDK的人,可以更快上手STM32 MCU开发。但MDK没有没有图形化配置界面,也没有自动生成初始化代码的功能,需要自己手动去实现,不过这有助于加深学习者对底层操作过程的理解。
使用STM32CubeIDE进行开发,可以借助STM32CubeMX插件的图形化配置功能进行配置,操作直观,可以自动生成初始化代码。STM32CubeMX插件把很多东西封装的比较好,就是因为封装的比较好,所以我们可以直接跳过对部分底层的操作,不过这不利于对底层的理解。当然,我们也可以不使用STM32CubeMX插件的图形化配置功能和初始化代码生成功能,可以直接使用TrueSTUDIO插件的功能,这个时候可以在STM32CubeIDE上导入已有的TrueSTUDIO工程来进行开发也是可以的,使用上就和TrueSTUDIO、MDK差不多。STM32CubeMX插件的图形界面操作加上TrueSTUDIO插件的ECLIPSE/CDT框架,使得STM32CubeIDE的配置过程比MDK要麻烦,而且没有一键下载功能,使用上会让人觉得有一种“慢”的感觉,就笔者的使用体验来看,比起MDK,STM32CubeIDE是有点慢、卡顿,而且还有一些小bug,但不影响使用(笔者使用最新的1.4.0版本)。
以上是笔者的理解,两种IDE各有千秋,大家可以根据自己的需要选择相应的IDE来进行开发。
3.2.2 开发工具准备
我们开发STM32需要用到一些开发工具,如:IDE、仿真器、串口调试助手等。常见的工具如表3.2.2.1所示:
表3.2.2. 1常用开发工具
大家可以根据自己的需要和喜好,选择合适的开发工具。表中加粗部分是我们推荐使用的STM32开发工具,即IDE推荐使用MDK或者STM32CubeIDE,仿真器推荐使用STLINK,或者正点原子的无线调试器以及DAP仿真器(参考4.3小节),串口调试助手推荐使用XCOM。
本篇开发手册主要是基于STM32CubeIDE来开发,如果想使用MDK来开发的可以参考正点原子的《STM32MP1 M4裸机HAL库开发指南》。下面,我们正式进入开发环境搭建之旅。
注:
下文有的地方,我们会将STM32CubeIDE简称为CubeIDE,将STM32CubeMX简称为CubeMX。
3.3 STM32CubeIDE安装
3.3.1 下载安装包
本章节我们介绍在Windows操作系统中安装STM32CubeIDE,本手册使用的软件版本是1.4.0版本,我们已经放在 开发板光盘A-基础资料\5、开发工具\2、ST官方开发工具 中,如图3.3.1.1所示:
图3.3.1. 1 STM32CubeIDE安装包
如果大家想自己在ST官网下载,推荐先在ST官网注册个人账号以后再下载软件安装包。
ST官网:https://www.st.com/content/st_com/en.html
注册好ST官网账号以后,先登录账号,然后在搜索框中搜索STM32CubeIDE,找到软件,或者可以直接点击下方的软件获取链接:https://www.st.com/content/st_com/zh/products/development-tools/software-development-tools/stm32-software-development-tools/stm32-ides/stm32cubeide.html
点击软件获取链接下载Win版本的STM32CubeIDE,我们选择目前最新的1.4.0版本,如果想安装其它的版本可以在选择版本列表里选中对应的版本。STM32CubeIDE支持Windows、Linux和macOS多个操作系统(64位版本),其中STM32CubeIDE-Win就是Win版本,我们点击获取软件进行下载,如图3.3.1.2所示。
图3.3.1. 2 STM32CubeIDE安装包下载
点击获取软件后,会弹出许可协议界面,我们点击接受。
图3.3.1. 3许可协议界面
如果您已经注册和登录了ST账户,会直接跳到下载界面:
图3.3.1. 4下载界面
如果您没有注册ST账户,或者没有登录账户,那么会弹出如下提示,按照提示登记姓名和邮箱地址,然后你的邮箱便会收到安装包的下载链接,我们根据注册和提示操作即可。
图3.3.1. 5注册登录界面
3.3.2 安装Java环境
我们选择安装1.4.0版本的STM32CbeIDE,相比于以前的版本其修复了一些bug并新增了部分功能,其集成的STM32CubeMX是V6.0.0版本。
在安装STM32CbeIDE前,我们要先安装Java的环境,Java 运行环境版本必须是 V1.7 及以上,否则会导致STM32CbeIDE无法使用,如果你的电脑安装过 V1.7 以下版本,请先删掉后重新安装最新版本。如果找不到卸载的程序,最直接的可以在软件管家工具中找到,选中后卸载。如图3.3.2.1是笔者之前安装的V1.8.0_45版本的Java环境,这里将其删掉:
图3.3.2. 1通过软件管家卸载软件
关于版本,这里推荐大家安装V1.8.0_271版本64位的Java,因为正点原子《STM32MP1嵌入式Linux驱动开发指南》中会用到STM32CubeProgrammer来烧写程序,而教程里提供的STM32CubeProgrammer软件使用的是V1.8.0_271版本的Java。
注:
STM32CubeIDE已经集成了STM32CubeMX,STM32CubeIDE生成的工程文件中,有STM32CubeMX工程文件,也就是说,可以用独立的STM32CubeMX软件来打开STM32CubeIDE生成的STM32CubeMX工程文件,不过要求STM32CubeMX软件版本为V6.0.0或以上版本才可以打开工程文件。所以想使用独立的STM32CubeMX软件来打开STM32CubeIDE生成的STM32CubeMX工程文件的朋友,需要安装V6.0.0或以上版本的STM32CubeMX才可以哦。正点原子的《STM32MP1 M4裸机HAL库开发指南》里有安装STM32CubeMX的说明,安装的版本为V6.0.1版本,该版本是可以打开STM32CubeIDE生成的STM32CubeMX工程文件的。
大家可以到 Java 官网www.java.com查找下载对应的 Java 软件,也可以直接从我们光盘复制安装包,目录为:开发板光盘A-基础资料\3、软件\Java 安装包。
图3.3.2. 2 Java安装包
对于 Java 运行环境安装,我们这里就不做过多讲解,大家直接双击安装包,根据提示安装即可,安装完成之后提示界面如图3.3.2.3:
图3.3.2. 3 Java安装成功提示界面
安装完 Java 运行环境之后,为了检测是否正常安装,我们可以打开 Windows 的cmd命令输入框,输入:java –version 命令查询Java版本,如果显示 Java 为1.8.0_271版本64位(注意,是64位的),则安装成功,提示信息如图3.3.2.4:
图3.3.2. 4 Java版本查询
3.3.3 STM32CubeIDE安装
将下载好的STM32CubeIDE安装包解压到非中文路径下,如果路径中有中文,双击安装的时候会提示如图3.3.3.1所示错误。
图3.3.3. 1报错提示
双击解压出来的st-stm32cubeide_1.4.0_7511_20200720_0928_x86_64.exe可执行文件进行安装,程序进入图3.3.3.2安装向导界面:
图3.3.3. 2安装向导
点击Next弹出许可协议界面,点击I Agree,如图图3.3.3.3:
图3.3.3. 3安装许可协议界面
选择安装的路径,默认是安装在C盘,可根据个人情况选择安装路径,此处本文选择安装在D盘。注意,安装路径不能有中文,否则会导致STM32CubeIDE软件无法安装,即使成功安装以后,也会导致无法正常创建和保存工程,无法正常进行编译。
图3.3.3. 4选择安装路径
在选择组件对话框选择与STM32CubelDE一起安装的GDB服务器组件,默认选择J-Link 和 ST-Link的组件,我们选择默认即可。
图3.3.3. 5选择组件
点击Install后进入安装进度条界面,待安装程序进度完成。如果弹出需要安装的驱动,选择安装即可。
图3.3.3. 6驱动提示界面
最后点击NestFinish完成安装,默认勾选创建桌面快捷键。
图3.3.3. 7驱动提示界面
安装完成后桌面有一个快捷启动图标,双击此快捷图标可以启动STM32CubeIDE。
图3.3.3. 8快捷图标
3.3.4 STM32CubeIDE卸载
如果不想要STM32CubeIDE,可以双击STM32CubeIDE安装路径下的uninstall.exe卸载可执行文件进行卸载,如果已经打开了STM32CubeIDE软件,先将其关闭再卸载。这样卸载的好处是,软件卸载的干净,一些注册表信息也同时会被清除,如果用其它软件卸载工具来卸载的话,可能会存在卸载不干净的情况,例如注册表信息可能没有被清除。
图3.3.4. 1uninstall.exe卸载程序
点击uninstall.exe卸载可执行文件进行卸载,弹出如下界面,我们选择Uninstall进行卸载。
图3.3.4. 2卸载界面
待进度条完成后,点击Close关闭,软件卸载完毕。
图3.3.4. 3卸载完毕
3.4 CH340 USB虚拟串口驱动安装
安装CH340 USB虚拟串口驱动,以便我们使用电脑通过USB和STM32进行串口通信。开发板使用的USB虚拟串口芯片是CH340C,其驱动我们已经放在开发板光盘A-基础资料3、软件 CH340驱动(USB串口驱动)_XP_WIN7共用 文件夹里面,如图3.4.1所示:
图3.4. 1 CH340驱动
双击SETUP.EXE进行安装,安装完成后,如图3.4.2所示:
图3.4. 2驱动安装成功
在驱动安装成功之后,将开发板的USB_UART接口通过USB连接到电脑,此时电脑就会自动给其安装驱动了。在安装完成之后,可以在电脑的设备管理器里面找到USB串口(如果找不到,则重启下电脑),如图3.4.3所示:
图3.4. 3设备管理器显示CH340 USB虚拟串口
在图3.4.3中可以看到,我们的USB虚拟串口被识别为COM14,这里需要注意的是:不同电脑可能不一样,你的可能是COM4、COM5等,但是USB-SERIAL CH340,这个一定是一样的。如果没找到USB串口,则有可能是你安装有误,或者系统不兼容。
在安装完CH340 USB虚拟串口以后,我们就可以使用串口调试助手,比如XCOM,和我们的开发板,通过串口进行通信了,这个我们在后续内容再给大家介绍。至此,STM32的开发环境就搭建完成了。
|