Document title can span over two lines

Similar documents
untitled

(Load Project) (Save Project) (OffLine Mode) (Help) Intel Hex Motor

目 录

STM32Cube_FW_F4?RTC??????BUG

Kubenetes 系列列公开课 2 每周四晚 8 点档 1. Kubernetes 初探 2. 上 手 Kubernetes 3. Kubernetes 的资源调度 4. Kubernetes 的运 行行时 5. Kubernetes 的 网络管理理 6. Kubernetes 的存储管理理 7.

手册 doc

EK-STM32F

ICD ICD ICD ICD ICD

Document title can span over two lines

六域链联盟 SDChain-Matrix 节点搭建指南 2018/07/26 Version : 1.0.0

KL DSC DEMO 使用说明

HD ( ) 18 HD ( ) 18 PC 19 PC 19 PC 20 Leica MC170 HD Leica MC190 HD 22 Leica MC170 HD Leica MC190 HD Leica MC170 HD

ARM Cortex-M3 (STM32F) STMicroelectronics ( ST) STM32F103 Core: ARM 32-bit Cortex -M3 CPU 72 MHz, 90 DMIPS with 1.25 DMIPS/MHz Single-cycle multiplica

一 登录 crm Mobile 系统 : 输入 ShijiCare 用户名和密码, 登录系统, 如图所示 : 第 2 页共 32 页

STM32™ I²C

Microsoft Word - Data IO CS Calculate Method AppNote.doc


目录 1 IPv6 快速转发 IPv6 快速转发配置命令 display ipv6 fast-forwarding aging-time display ipv6 fast-forwarding cache ipv6 fas

Converting image (bmp/jpg) file into binary format

Microsoft Word - AVR32 UC3 isp下载.doc

Moto Z

目录 1 IPv6 快速转发 IPv6 快速转发配置命令 display ipv6 fast-forwarding aging-time display ipv6 fast-forwarding cache ipv6 fas

C语言的应用.PDF

F515_CS_Book.book

STM32™STM8™Flash

STM32F3??ADC??????????ADC

ST template WORD

DVK530/531扩展板

静态分析 投放文件 行为分析 互斥量 (Mutexes) 执行的命令 创建的服务 启动的服务 进程 cmd.exe PID: 2520, 上一级进程 PID: 2556 cmd.exe PID: 2604, 上一级进程 PID: 2520 访问的文件 C:\Users\test\AppData\Lo

Quartus Prime 软件下载和安装快速入门指南 2016 Intel Corporation. All rights reserved. Intel, the Intel logo, Intel FPGA, Arria, Cyclone, Enpirion, MAX, Megacore, N

Autodesk Product Design Suite Standard 系统统需求 典型用户户和工作流 Autodesk Product Design Suite Standard 版本为为负责创建非凡凡产品的设计师师和工程师提供供基本方案设计和和制图工具, 以获得令人惊叹叹的产品

<4D F736F F D20B5DAC8FDCBC4D5C2D7F7D2B5B4F0B0B82E646F63>

华恒家庭网关方案

0 配置 Host MIB 设备 V ( 简体版 ) 0 Update: 2016/1/30

Microsoft Word - InoTouch Editor编程软件手册 doc

Ch03_嵌入式作業系統建置_01

untitled

Microsoft Word - 正文.doc

30.00% 25.00% 25.00% 22.50% 20.00% 15.00% 12.50% 15.00% 12.50% 10.00% 7.50% 5.00% 2.50% 2.50% 0.00% 文 学 理 学 工 学 法 学 教 育 学 管 理 学 历 史 学 艺 术 学 ( 三 ) 学 生

X713_CS_Book.book

Simulator By SunLingxi 2003

Getting started with STM32 motor control SDK v5.0 - User manual

Ioncube Php Encoder 8 3 Crack 4. llamaba octobre traslado General Search colony

P1500

2 Keil µ vision 2.1 1) Keil µ vision2 V2.34 µ vision3 2) Sino_Keil.exe Keil c:\keil\ 3) JET51 USB PC C:\Keil\ USB PC 4) S-L

Abstract arm linux tool-chain root NET-Start! 2

untitled

Microsoft Word - MAN2023A_CH_APPONE.doc

ST template WORD

PowerPoint 演示文稿

untitled

DR2010.doc

USB解决方案.ppt

PCM-3386用户手册.doc

Linux服务器构建与运维管理

目 录(目录名)

简 介 本 白 皮 书 高 度 概 述 了 支 持 移 动 互 联 网 设 备 (Mobile Internet Device) 的 Intel C++ Software Development Tool Suite for Linux* OS, 目 标 读 者 主 要 是 技 术 决 策 制 订

SDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 "odps-sdk" 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基

Microsoft PowerPoint - M241 firmware flashing guide pptx

Microsoft Word - MAN2011A_CH_RTT.doc

Microsoft Word - PS2_linux_guide_cn.doc

Bus Hound 5

Microsoft Word - QTP测试Flex.doc

PowerPoint 演示文稿

PTS7_Manual.PDF

Microsoft Word - 在VMWare-5.5+RedHat-9下建立本机QTopia-2.1.1虚拟平台a.doc

2005.book

CL-S10w

STEVAL-SPIN3201STM32 MCUBLDC

/ 149 / / / / / 500 1, / / / / / / / / 1,000 3, / / IT 157 / /

Microsoft Word - AccessPortal使用手册v3.1.doc

Quartus II 软件下载和安装快速入门指南 2013 Altera 公司 保留所有权利 ALTERA ARRIA CYCLONE HARDCOPY MAX MEGACORE NIOS QUARTUS 以及 STRATIX 字词和标识是 Altera 公司的商标, 在美国专利和商标事务所以及其他

/ / (FC 3)...

< Essential LEDtube > | < Philips >

untitled

IC-900W Wireless Pan & Tilt Wireless Pan & Tilt Remote Control / Night Vision FCC ID:RUJ-LR802UWG

51 C 51 isp 10 C PCB C C C C KEIL

1-1 SH79F6431 A. 2( ) 9~15V ( 12V) U2 U3 3.3V SH79F B. 1(VCC/GND) SH79F6431 C. VDDIO SH79F6431 P4 P5 P0.6 P0.7 VDDIO VDDIO=5V D. 2 V 1.0

C/C++ - 文件IO

1

FM1935X智能非接触读写器芯片

Chapter 2


JTAG ICE PC JTAG ICE JTAG ISP... 5 IDE AVR STUDIO JTAGICE JTAGICE... 12

帝国CMS下在PHP文件中调用数据库类执行SQL语句实例

AL-MX200 Series

1 Project New Project 1 2 Windows 1 3 N C test Windows uv2 KEIL uvision2 1 2 New Project Ateml AT89C AT89C51 3 KEIL Demo C C File

Chapter #

untitled

Guava学习之Resources

C++ 程序设计 告别 OJ1 - 参考答案 MASTER 2019 年 5 月 3 日 1

untitled

一个开放源码的嵌入式仿真环境 ― SkyEye

证券期货市场之主要诚信规范

目 录 1. 简介 概览 CM 仿真器特性 CM 仿真器外观 入门指南 CM 仿真器虚拟端口功能 安装 CM 仿真器 USB CDC 驱动软件 测试 CM 仿真器虚拟端

C35_RG_E.book

CHN_p000A_Cover.ai

STM32 I2C

1abcd.doc

Transcription:

用户手册 STM32CubeProgrammer 软件说明 引言 STM32CubeProgrammer(STM32CUBEPROG) 为任意环境下的 STM32 微控制器编程提供了一个一体化的软件工具 : 多操作系统, 图形用户界面或命令行界面, 支持多种连接选择 (JTAG SWD USB UART), 采用手动操作或通过脚本自动操作 本用户手册详细介绍了硬件和软件环境先决条件, 以及可用的 STM32CubeProgrammer 软件功能 2018 年 9 月 DocID030723 Rev 1 [English Rev 1] 1/39 www.st.com 1

目录 UM2237 目录 1 入门指南................................................... 6 1.1 系统要求................................................... 6 1.2 安装 STM32CubeProgrammer.................................. 6 1.2.1 Linux 安装................................................. 6 1.2.2 Windows 安装.............................................. 6 1.2.3 macos 安装............................................... 7 1.2.4 DFU 驱动程序.............................................. 7 1.2.5 ST-LINK 驱动程序........................................... 8 2 STM32CubeProgrammer 用户接口.............................. 9 2.1 主窗口..................................................... 9 2.1.1 主菜单................................................... 9 2.1.2 日志面板................................................ 10 2.1.3 进度条.................................................. 10 2.1.4 目标配置面板............................................. 11 2.2 存储器和文件编辑........................................... 16 2.2.1 读取和显示目标存储器...................................... 16 2.2.2 读取并显示文件........................................... 17 2.3 存储器编程和擦除........................................... 18 2.3.1 内部闪存编程............................................. 18 2.3.2 外部闪存编程............................................. 19 2.3.3 为外部存储器开发自定义加载程序............................. 19 2.4 选项字节.................................................. 22 3 STM32CubeProgrammer 命令行接口 (CLI)..................... 23 3.1 命令行的使用.............................................. 23 3.2 通用指令.................................................. 25 3.2.1 连接命令................................................ 25 3.2.2 Erase 指令............................................... 29 3.2.3 下载命令................................................ 29 3.2.4 下载 32 位数据命令......................................... 30 3.2.5 Read 指令................................................ 30 3.2.6 start 指令................................................. 31 3.2.7 List 指令................................................. 31 2/39 DocID030723 Rev 1 [English Rev 1]

目录 3.2.8 QuietMode 指令........................................... 32 3.2.9 Verbosity 命令............................................. 32 3.2.10 Log 命令................................................. 33 3.2.11 外部加载命令............................................. 34 3.2.12 Read Unprotect........................................... 35 3.2.13 选项字节命令............................................. 35 3.2.14 Safety lib 命令............................................. 35 4 版本历史.................................................. 38 DocID030723 Rev 1 [English Rev 1] 3/39 3

图片索引 UM2237 图片索引 图 1. 具有 DfuSe 驱动程序的 STM32 DFU 器件........................................ 7 图 2. 具有 STM32_Programmer 驱动程序的 STM32 DFU 器件............................ 7 图 3. STM32CubeProgrammer 主窗口.............................................. 9 图 4. 展开主菜单............................................................. 10 图 5. ST-LINK 配置面板........................................................ 11 图 6. UART 配置面板.......................................................... 13 图 7. USB 配置面板........................................................... 14 图 8. 目标信息面板........................................................... 15 图 9. 存储器和文件编辑 : 设备存储器选项卡........................................ 16 图 10. 存储器和文件编辑 : 上下文菜单............................................. 16 图 11. 存储器和文件编辑 : 文件显示............................................... 17 图 12. 闪存编程和擦除 ( 内部存储器 )............................................. 18 图 13. 闪存编程和擦除 ( 外部存储器 )............................................. 19 图 14. 选项字节面板........................................................... 22 图 15. STM32CubeProgrammer 的可用命令......................................... 24 图 16. 使用 RS232 的连接操作.................................................... 26 图 17. 使用 USB 的连接操作...................................................... 27 图 18. 使用 SWD 调试端口的连接操作.............................................. 28 图 19. 下载操作............................................................... 29 图 20. 读取 32 位操作........................................................... 31 图 21. 可用串行端口列表........................................................ 32 图 22. 详细程度命令........................................................... 33 图 23. Log 命令................................................................ 33 图 24. 日志文件内容........................................................... 34 图 25. Safety lib 命令........................................................... 36 图 26. Flash 存储器映射......................................................... 36 图 27. 闪存映射示例........................................................... 37 4/39 DocID030723 Rev 1 [English Rev 1]

表格索引 表格索引 表 1. 文档版本历史........................................................... 38 表 2. 中文文档版本历史........................................................ 38 DocID030723 Rev 1 [English Rev 1] 5/39 5

入门指南 UM2237 1 入门指南 本节介绍安装 STM32CubeProgrammer 软件工具的要求和步骤 STM32CubeProgrammer 可支持基于 Arm Cortex -M 处理器的 STM32 32 位器件 1.1 系统要求 支持的操作系统和架构为 : Linux 32 位和 64 位 ( 已在 Ubuntu 14.04 上测试 ) Windows 10-7-8 32 位和 64 位 macos ( 最小版本 OS X Yosemite) 必须安装来自 Oracle 的 Java SE 运行环境 1.8( 版本 1.8.121 或更新版本 ) ( 可从 www.oracle.com 上下载 ) 支持的最小屏幕分辨率为 1024x768 1.2 安装 STM32CubeProgrammer 本节介绍使用 STM32CubeProgrammer 软件的要求和步骤 该装置还提供了 STM32 trusted package creator 工具的可选安装, 该工具可用来创建安全的固件文件, 用于安全的固件安装与更新 更多信息请查看用户手册 UM2238 1.2.1 Linux 安装 如果使用 USB 端口连接 STM32 器件, 则需要在机器终端中输入以下命令来安装 libusb1.0 软件包 : sudo apt-get install libusb-1.0.0-dev 要使用 ST-LINK 工具或 USB DFU 连接到目标, 您需要将位于 Driver/Dev 文件夹下的规则文件复制在 Ubuntu 上的 /etc/udev/rules.d/ 文件夹中 ("sudo cp *.* /etc/udev/rules.d") 注 : 需要使用 libusb1.0.12 版本或更高版本来运行 STM32CubeProgrammer 要安装 STM32CubeProgrammer 工具, 您需要下载并解压 zip 包, 并执行 SetupSTM32CubeProgrammer-vx.y.z.linux, 它将指导您完成安装过程 1.2.2 Windows 安装 要安装 STM32CubeProgrammer 工具, 您需要下载并解压 zip 包, 并执行 SetupSTM32CubeProgrammer-vx.y.z.exe, 它将指导您完成安装过程 6/39 DocID030723 Rev 1 [English Rev 1]

入门指南 1.2.3 macos 安装 要安装 STM32CubeProgrammer 工具, 您需要下载并解压 zip 包, 并执行 SetupSTM32CubeProgrammer-vx.y.z.app, 它将指导您完成安装过程 1.2.4 DFU 驱动程序 注 : 如果您在 USB DFU 模式下使用 STM32 器件, 则需要通过运行 STM32 Bootloader.bat 文件来安装 STM32CubeProgrammer 的 DFU 驱动程序 该驱动程序随发布包提供, 可在 DFU Driver 文件夹中找到 如果您的计算机上安装了 DFUSE 驱动程序, 首先需要卸载它, 然后运行前面提到的.bat 文件 图 1. 具有 DfuSe 驱动程序的 STM32 DFU 器件 图 2. 具有 STM32_Programmer 驱动程序的 STM32 DFU 器件 注 : 在 Windows 7 PC 上使用 USB DFU 接口或 STLink 接口时, 请确保所有 USB 3.0 控制器的驱动程序都是最新的 老版本的驱动程序可能存在错误, 该错误会阻止访问或导致 USB 设备连接问题 DocID030723 Rev 1 [English Rev 1] 7/39 37

入门指南 UM2237 1.2.5 ST-LINK 驱动程序 为了能够使用 ST-LINK/V2 ST-LINKV2-1 或 ST-LINK/V3, 通过调试接口连接到 STM32 器件, 您需要运行 stlink_winusb_install.bat 文件来安装 ST-LINK 驱动程序 该驱动程序随发布包提供, 可在 Driver/stsw-link009_v3 文件夹下找到 8/39 DocID030723 Rev 1 [English Rev 1]

STM32CubeProgrammer 用户接口 2 STM32CubeProgrammer 用户接口 2.1 主窗口 图 3. STM32CubeProgrammer 主窗口 2.1.1 主菜单 主窗口由以下部分组成 : 主菜单支持在存储器和文件编辑 (Memory & file edition) 存储器编程和擦除 (Programming & erasing) 以及选项字节工具 (Option bytes) 这三个主面板之间进行切换 通过点击左上角的 Hamburger 菜单 ( 三线按钮 ), 主菜单展开并显示文字说明 : DocID030723 Rev 1 [English Rev 1] 9/39 37

STM32CubeProgrammer 用户接口 UM2237 图 4. 展开主菜单 2.1.2 日志面板 2.1.3 进度条 显示错误 警告和与该工具执行操作相关的信息性事件 使用日志文本区域上方的详细程度单选按钮可以细化显示消息的详细程度 最低详细级别为 1, 最高级别为 3, 此级别下可记录所选接口上的所有事务 所有显示的信息都使用格式 hh:mm:ss:ms 进行时间戳标记, 其中 hh 为小时, mm 为分钟, ss 为秒, ms 为毫秒 ( 三位数字显示 ) 在日志面板的右侧有两个按钮, 一个按钮可以清理日志, 第二个按钮可以将日志保存到日志文件中 进度条显示工具完成的任何操作或事务的进程 ( 读取 写入 擦除 ) 点击进度条前的 停止 按钮即可中止任何正在进行的操作 10/39 DocID030723 Rev 1 [English Rev 1]

STM32CubeProgrammer 用户接口 2.1.4 目标配置面板 这是连接目标之前要查看的第一个面板 它允许你选择目标接口 ; 可以使用 ST-LINK 调试工具的调试接口, 或者使用经过 UART 或 USB 的引导装载程序接口 刷新按钮能够检查连接到 PC 的可用接口 在选择 ST-LINK 接口时按下此按钮, 该工具将检查所连接的 ST-LINK 工具, 并在序列号组合框中将其列出 如果选择了 UART 接口, 它将检查 PC 的可用 COM 端口, 并将它们在端口组合框中列出 如果选择了 USB 接口, 它会检查连接到 PC 的 DFU 模式下的 USB 设备, 并在端口组合框中将其列出 每个接口都有自己的设置, 需要在连接之前进行设置 STLINK 设置 图 5. ST-LINK 配置面板 序列号 : 该字段包含所有连接的 ST-LINK 工具的序列号 用户可以根据其序列号选择其中一个 端口 :ST-LINK 工具支持两种调试协议 :JTAG 和 SWD DocID030723 Rev 1 [English Rev 1] 11/39 37

STM32CubeProgrammer 用户接口 UM2237 注 : JTAG 并不适用于安装在 STM32 Nucleo 或 Discovery 板上的所有嵌入式 ST-LINK 频率 :JTAG 或 SWD 时钟频率 访问端口 : 选择要连接的访问端口 大多数 STM32 设备只有一个访问端口, 即 Access 端口 0 DAP 端口 : 当前版本不支持 模式 : 正常 : 使用 Normal 连接模式时, 目标是休眠的, 随后挂起 使用 Reset Mode 选项来选择复位的方式 复位下连接 : Connect Under Reset 模式允许在执行指令之前使用复位向量捕获连接到目标 这在很多情况下是很有用的, 例如当目标包含了禁用 JTAG/SWD 引脚的代码时 热插拔 : Hot Plug 模式下可以在不停机或复位的情况下连接到目标 这对于在应用运行时更新 RAM 地址或 IP 寄存器非常有用 复位模式 : 软件系统复位 : 通过 Cortex-M 应用中断和复位控制寄存器 (AIRCR) 来复位除调试以外的所有 STM32 组件 硬件复位 : 通过 nrst 引脚来复位 STM32 器件 JTAG 连接器 ( 引脚 15) 的 RESET 引脚应连接到器件复位引脚 内核复位 : 通过应用中断和复位控制寄存器 (AIRCR) 仅将内核 Cortex-M 复位 目标电压 : 使用 ST-LINK/V2 或 ST-LINK/V2-ISOL 时, 测量目标电压并在此显示 固件版本 : 显示 ST-LINK 固件版本 固件升级按钮可以升级 ST-LINK 固件 12/39 DocID030723 Rev 1 [English Rev 1]

STM32CubeProgrammer 用户接口 UART 设置 图 6. UART 配置面板 端口 : 选择目标 STM32 所连接的 COM 端口 您可以使用刷新按钮重新检查 PC 上可用的 COM 端口 注 : 应该使用启动引脚和 / 或选项位, 使得 STM32 在引导加载程序模式下启动 关于 STM32 引导加载程序的更多详细信息, 请参考 AN2606 波特率 : 选择 UART 波特率 奇偶校验 : 选择奇偶校验 ( 偶, 奇, 无 ) 对于所有的 STM32 器件, 奇偶校验应为 偶 数据位 : 应始终为 8 STM32 仅支持 8 位数据 停止位 : 应始终为 1 STM32 仅支持 1 位停止位 流控制 : 应始终关闭 DocID030723 Rev 1 [English Rev 1] 13/39 37

STM32CubeProgrammer 用户接口 UM2237 USB 设置 图 7. USB 配置面板 注 : 端口 : 选择 DFU 模式下连接到 PC 的 USB 设备 您可以使用刷新按钮重新检查可用设备 应该使用启动引脚和 / 或选项位, 使得 STM32 在引导加载程序模式下启动 关于 STM32 引导加载程序的更多详细信息, 请参考 AN2606 设置了正确的接口设置后, 点击 连接 按钮即可连接到目标接口 如果连接成功, 按钮上方的指示灯会变成绿色 连接后, 目标信息将在设置区下面的设备信息区中显示, 然后该设置区被禁用, 如图 8 所示 : 14/39 DocID030723 Rev 1 [English Rev 1]

STM32CubeProgrammer 用户接口 图 8. 目标信息面板 DocID030723 Rev 1 [English Rev 1] 15/39 37

STM32CubeProgrammer 用户接口 UM2237 2.2 存储器和文件编辑 存储器和文件编辑面板允许你做两件事 : 读取和显示目标存储器内容和文件内容 2.2.1 读取和显示目标存储器 图 9. 存储器和文件编辑 : 设备存储器选项卡 目标连接后, 可以使用此面板读取 STM32 目标存储器 要实现这一点, 您需要指定要读取的数据地址和大小, 然后单击左上角的读取按钮 您可以使用 Data width 组合框以不同格式 (8 位 16 位和 32 位 ) 显示数据 您可以打开多个设备存储器选项卡来显示目标存储器的不同位置 要做到这一点, 只需单击 + 选项卡来显示一个上下文菜单, 该菜单允许您添加新的 Device memory 选项卡, 或打开文件并将其显示在 文件 选项卡中 : 图 10. 存储器和文件编辑 : 上下文菜单 16/39 DocID030723 Rev 1 [English Rev 1]

STM32CubeProgrammer 用户接口 2.2.2 读取并显示文件 要打开并显示文件, 只需点击 + 并选择 Open File 菜单, 如图 11 所示 支持的文件格式为二进制文件 (.bin) ELF 文件 (.elf,.axf,.out) Intel 十六进制文件 (.hex) 和 Motorola S-record 文件 (.Srec) 图 11. 存储器和文件编辑 : 文件显示 文件打开并解析后, 会在专用选项卡中显示其文件名, 如图 11 所示 文件大小显示在 Size 字段中, 十六进制 srec 或 ELF 文件的起始地址显示在 Address 字段中 对于二进制文件, 它为 0 您可以修改地址栏, 使其从某个偏移量开始显示文件内容 对于 设备内存 Device memory 选项卡, 您可以使用 Data width 组合框以不同格式 (8 位 16 位和 32 位 ) 显示文件存储器内容 DocID030723 Rev 1 [English Rev 1] 17/39 37

STM32CubeProgrammer 用户接口 UM2237 2.3 存储器编程和擦除 该面板专用于闪存编程和擦除操作 2.3.1 内部闪存编程 图 12. 闪存编程和擦除 ( 内部存储器 ) 存储器擦除 连接到目标后, 存储器扇区将显示在右侧面板中, 显示每个扇区的起始地址和大小 要擦除一个或多个扇区, 请在第一列中进行选择, 然后单击 Erase selected sectors 按钮 Full chip erase 按钮将擦除所有的闪存 存储器编程 要编程存储器, 您需要执行以下步骤 : 1. 点击浏览按钮并选择要编程的文件 支持的文件格式为二进制文件 (.bin) ELF 文件 (.elf,.axf,.out) Intel 十六进制文件 (.hex) 和 Motorola S-record 文件 (.Srec) 2. 在编程二进制文件的情况下, 应该设置编程的地址 3. 选择编程选项 : 编程后验证 : 读回所编程的内存并逐个字节地与文件进行比较 编程前跳过闪存擦除 : 如果选中该选项, 则工具在编程前不会擦除内存 只有当您确定目标内存已被擦除时才应选中该选项 编程后运行 : 编程后立即启动应用程序 4. 点击 开始编程 按钮开始 窗口底部的进度条显示擦除和编程操作的进度 18/39 DocID030723 Rev 1 [English Rev 1]

STM32CubeProgrammer 用户接口 2.3.2 外部闪存编程 如果您需要通过任意可用接口 (SPI,FMC,FSMC,QSPI,OCTOSPI ) 对连接到 STM32 的外部存储器进行编程, 那么您需要一个外部加载程序 对于大多数带有外部存储器的 STM32 评估和探索板,STM32CubeProgrammer 一并提供了对应的外部加载程序, 可在 bin / ExternalLoader 目录下找到 如果您需要创建新的外部加载程序, 请参阅第 2.3.3 节 : 为外部存储器开发自定义加载程序获取有关如何创建它的更多详细信息 要编程外部存储器, 您需要选择工具要用的外部加载程序来读取 编程或擦除外部存储器, 如图 12b 所示 选定之后, 该外部加载程序就可用于其存储器范围内的任何存储器编程 右侧的 External flash erasing 选项卡显示存储器扇区, 并允许扇区擦除或全芯片擦除 图 13. 闪存编程和擦除 ( 外部存储器 ) 2.3.3 为外部存储器开发自定义加载程序 基于 bin/externalloader 目录下的示例, 用户可以为给定的外部存储器开发自定义加载程序 这些示例可用于三种工具链 :MDK-ARM,EWARM 和 TrueSTUDIO 自定义加载程序的开发可以使用上述三个工具链之一来执行, 能够保持相同的编译器 / 链接器配置, 如示例中所示 外部闪存编程机制与 STM32 ST-LINK 实用工具所用的机制相同 为用于 ST-LINK 实用程序所开发的任何闪存加载程序都能与 STM32CubeProgrammer 工具兼容, 并且可以不加任何修改地使用 要创建一个新的外部存储器加载程序, 请按照以下步骤操作 : 1. 使用外部存储器相关的正确信息, 来更新 Dev_Inf.c 文件的 StorageInfo 结构中的设备信息 2. 在 Loader_Src.c 文件中重写相应的函数代码 3. 更改输出文件名 DocID030723 Rev 1 [English Rev 1] 19/39 37

STM32CubeProgrammer 用户接口 UM2237 注 : 一些函数是强制性的, 不能省略 ( 参见 Loader_Src.c 文件中的函数说明 ) 不应修改链接文件 (linker files) 或分散链接描述文件 (scatter files) 在构建外部加载程序项目之后, 会生成一个 ELF 文件 ELF 文件的扩展名取决于所用工具链 ( 对于 Keil 为.axf, 对于 EWARM 为.out, 以及对于 TrueSTUDIO 或任何基于 gcc 的工具链为.elf) 必须将 ELF 文件的扩展名更改为.stldr, 且必须将该文件复制到 bin/externalloader 目录下 Loader_Src.c 文件 基于特定 IP 为内存开发外部加载程序需要以下函数 : Init 函数 Init 函数定义将外部存储器连接到设备所用的 GPIO 引脚, 并初始化所用 IP 的时钟 如果成功则返回 1, 失败则返回 0 int Init (void) Write 函数 Write 函数将一块 RAM 范围中的缓冲区数据写入到指定的地址上去 如果成功则返回 1, 失败则返回 0 int Write (uint32_t Address, uint32_t Size, uint8_t* buffer) SectorErase 函数 SectorErase 函数擦除指定扇区的存储器 如果成功则返回 1, 失败则返回 0 int SectorErase (uint32_t StartAddress, uint32_t EndAddress) 其中 StartAddress = 要擦除的第一个扇区的地址, EndAddress = 要擦除的扇区末尾地址 注 : 注意 : 该函数在外部 SRAM 存储器加载程序中不能使用 在外部加载程序中定义上述函数是必要的 工具用其来擦除和编程外部存储器 例如, 如果用户从外部加载程序菜单中单击程序按钮, 该工具将执行以下操作 : 自动调用 Init 函数来初始化接口 (QSPI FMC ) 和闪存 调用 SectorErase() 来擦除所需的闪存扇区 调用 Write() 函数来编程存储器 除了这些函数, 我们还可以定义以下函数 : Read 函数 Read 函数用来读取指定范围的存储器, 并将读取的数据返回到 RAM 里的缓冲区中 如果成功则返回 1, 失败则返回 0 int Read (uint32_t Address, uint32_t Size, uint16_t* buffer) 其中 Address = 读取操作起始地址, Size 为读取操作的大小, buffer 为指向读取后的数据的指针 20/39 DocID030723 Rev 1 [English Rev 1]

STM32CubeProgrammer 用户接口 注 : 对于 QSPI/OSPI(Quad-SPI/Octo-SPI) 存储器, 可以在 Init 函数中定义存储器映射模式 ; 这种情况下,Read 函数无用, 因为数据可以直接从 JTAG/SWD 接口读取 Verify 函数选择 verify while programming 模式时会调用 Verify 函数 该函数检查编程的存储器是否与 RAM 中定义的缓冲区保持一致 它返回一个 uint64, 定义如下 : 返回值 = ((checksum<<32) + AddressFirstError) 其中 AddressFirstError 为第一次失配的地址, checksum 所编程缓冲区的校验和值 uint64_t Verify (uint32_t FlashAddr, uint32_t RAMBufferAddr, uint32_t Size) MassErase 函数 MassErase 函数擦除整个存储器 如果成功则返回 1, 失败则返回 0 int MassErase (void) 校验和函数 所有上述函数在成功操作的情况下返回 1, 在失败的情况下返回 0 Dev_Inf.c 文件 此文件中定义的 StorageInfo 结构提供有关外部存储器的信息 该结构定义的信息类型示例如下所示 : #if defined ( ICCARM ) root struct StorageInfo const StorageInfo = { #else struct StorageInfo const StorageInfo = { #endif "External_Loader_Name", // Device Name + version number MCU_FLASH, // 器件类型 0x08000000, // 器件起始地址 0x00100000, // 器件以字节计的大小 (1MBytes/8Mbits) 0x00004000, // 页编程大小 16KBytes 0xFF, // 被擦除的存储器初始值 // 指定扇区的大小和地址 ( 查看下面的示例 ) 0x00000004, 0x00004000, // Sector Num : 4,Sector Size: 16KBytes 0x00000001, 0x00010000, // Sector Num : 1,Sector Size: 64KBytes 0x00000007, 0x00020000, // Sector Num : 7,Sector Size: 128KBytes 0x00000000, 0x00000000, }; DocID030723 Rev 1 [English Rev 1] 21/39 37

STM32CubeProgrammer 用户接口 UM2237 2.4 选项字节 选项字节面板允许按类别分组读取和显示目标选项字节 选项位在表格中显示, 有三列内容, 其中包含位名 其值以及其对设备的影响的描述 您可以通过更新值字段来修改这些选项字节的值, 然后单击应用按钮, 进行编程以及验证修改的选项字节是否编程良好 您可以随时点击读取按钮, 读取并刷新显示的选项字节 图 14. 选项字节面板 更多详细信息, 请参阅 www.st.com 上闪存编程手册和参考手册中的选项字节部分 22/39 DocID030723 Rev 1 [English Rev 1]

STM32CubeProgrammer 命令行接口 (CLI) 3 STM32CubeProgrammer 命令行接口 (CLI) 3.1 命令行的使用 注 : 以下各节介绍如何由命令行来使用 STM32CubeProgrammer 可用命令如图 15 中所示 要在 macos 上启动命令行界面, 您需要调用 STM32CubeProgrammer.app/Contents/MacOs/bin/STM32_Programmer_CLI DocID030723 Rev 1 [English Rev 1] 23/39 37

STM32CubeProgrammer 命令行接口 (CLI) UM2237 图 15. STM32CubeProgrammer 的可用命令 24/39 DocID030723 Rev 1 [English Rev 1]

STM32CubeProgrammer 命令行接口 (CLI) 3.2 通用指令 3.2.1 连接命令 本节介绍所有 STM32 系列都支持的一组命令 -c, --connect 说明 : 建立到设备的连接 该命令允许主机打开所选设备的端口 (UART/USB/JTAG/SWD) 语法 :-c port=<portname> [noinit=<noinit_bit>] [br=<baudrate>] [P=<Parity>] [db=<data_bits>] [sb=<stop_bits>] [fc=<flowcontrol>] port=<portname> ( 对于 : 接口标识符, 例如 COMx( 对于 windows),/dev/ttysx linux), 对于 USB 接口为 usbx [noinit=<noinit_bit>] : 设置 No Init 位, 值为 {0,1}..., 默认为 0 如果先前的连接始终处于活动状态 ( 无需发送 0X7F), 则使用 Noinit = 1 [br=<baudrate>] : 波特率, 例如 9600, 115200,, 默认值为 115200 [P=<Parity>] : 奇偶校验位, 值为 (EVEN, NONE, ODD), 默认为 EVEN [db=<data_bit>] : 数据位, 值为 (6, 7, 8), 默认值为 8 [sb=<stop_bit>] : 停止位, 值为 (1, 1.5, 2), 默认值为 1 [fc=<flowcontrol>] : 流控制, 值为 (OFF, Software, Hardware), 默认为 OFF [freq=<frequency>] : 频率, 单位为 khz, 用于连接 SWD 端口默认值为 4000 khz,jtag 端口默认值为 9000 khz DocID030723 Rev 1 [English Rev 1] 25/39 37

STM32CubeProgrammer 命令行接口 (CLI) UM2237 输入的频率值四舍五入, 以便与 ST-LINK 工具支持的值相匹配 [index=<probe_index>] : 调试工具的索引 默认索引值为 0 [mode=<connect_mode>] : 连接模式 值为 <UR/HOTPLUG/NORMAL> 默认值为 NORMAL [ap=<access_port>] : 访问端口索引 默认访问索引值为 0 示例 : 使用 UART:./STM32_Programmer.sh -c port=/dev/ttys0 br=115200 此示例的结果如图 16: 使用 RS232 的连接操作中所示 : 图 16. 使用 RS232 的连接操作 使用 USB:./STM32_Programmer.sh -c port=usb1 此示例的结果如图 17: 使用 USB 的连接操作中所示 : 26/39 DocID030723 Rev 1 [English Rev 1]

STM32CubeProgrammer 命令行接口 (CLI) 图 17. 使用 USB 的连接操作 注 : 使用 USB 接口时, 所有配置参数都将被忽略 ( 波特率 奇偶校验 数据位 频率 索引等 ) 要使用 UART 接口进行连接, 端口配置 ( 波特率 奇偶校验 数据位 停止位和流控制 ) 应根据所用设备进行有效组合 使用 JTAG/SWD 调试端口 注 : 要使用端口连接模式 <JTAG / SWD> 与 ST-LINK 工具进行连接, 至少需要使用连接命令说明端口名称 ( 例如 :-c port=jtag) 在尝试通过 JTAG 进行连接时, 请确保所用设备包含有 JTAG 调试端口 还有其他一些与 JTAG/SWD 调试端口有关的参数, 它们都使用默认值 ( 请参阅工具的帮助菜单获取有关默认值的更多信息 ) DocID030723 Rev 1 [English Rev 1] 27/39 37

STM32CubeProgrammer 命令行接口 (CLI) UM2237 图 18 中示例显示了 STM32 连接到设备 ID 0x450 的示例 : 图 18. 使用 SWD 调试端口的连接操作 这个例子的对应命令行是 c port=swd freq=3900 ap=3 r32 0xE000ED00 0x4 在连接命令中 (-c port=swd freq=3900 ap=3) <port> 参数是必需的 该命令行中未提及索引 索引参数取默认值 0 输入的频率为 3900 khz, 但是利用 4000 khz 来建立连接 这是由于使用 SWD 和 JTAG 调试端口时,ST-LINK 工具使用固定值 ST-LINK v2/v2.1 SWD(4000 1800 950 480 240 125 100 50 25 15 5)kHz JTAG(9000 4500 2250 1125 562 281 140)kHz ST-LINK v3 SWD(24000 8000 3300 1000 200 50 5) JTAG(21333 16000 12000 8000 1777 750) 如果输入的值不符合这些值中的任何一个, 则会考虑次高值 默认频率值为 : SWD:STLinkV2:4000 khz,stlinkv3:24000 khz JTAG:STLinkV2:9000 khz,stlinkv3:21333 khz. 注 : JTAG 频率选择仅支持从 V2J23 开始的 ST-LINK 固件版本 本例中要连接到访问端口 3, 如果使用了 ap 参数, 那么连接命令之后使用的任何命令都要通过所选定的访问端口来建立 如本例所示,32 位存储器读命令用来通过访问端口 3 读取地址 0xE000ED00 注 : 连接到设备时会显示 ST-LINK 工具固件版本 请确保您拥有 ST-LINK 固件 V2J28M17 的最新版本, 它在 ST 网站上有提供 (STSW- LINK005) 28/39 DocID030723 Rev 1 [English Rev 1]

STM32CubeProgrammer 命令行接口 (CLI) 3.2.2 Erase 指令 -e, --erase 描述 : 根据给定的参数, 该命令可擦除存储器的指定扇区或擦除整个 Flash 存储器 完成此操作可能需要 1 秒或更长时间, 具体时长取决于所擦除的存储器的大小 语法 :-e [all] [sectorscodes] 示例 : [all] 3.2.3 下载命令 [sectorscodes] [<[start end]>] : 擦除全部闪存 : 仅擦除指定扇区 擦除从 start 到 end 代码的所有扇区./STM32_Programmer.sh --connect port=/dev/ttys0 -e 2 4 此命令仅擦除扇区 2 和 4 -w, --write, -d, --download 说明 : 将指定二进制文件中的内容下载到设备存储器中 下载操作之前先进行擦除操作, 然后下载闪存 写入地址仅用于下载二进制文件 语法 : -w <file_path> [start_address] 示例 : [file_path] [start_address] : 要下载的文件路径 : 下载的起始地址 -c port=com4 -w RefSMI_MDK/All_Flash_0x1234_256K.bin 0x08008000 该命令将二进制文件 All_Flash_0x1234_256K.bin 编程到地址 0x08008000 处 此示例的结果如图 19 中所示 图 19. 下载操作 DocID030723 Rev 1 [English Rev 1] 29/39 37

STM32CubeProgrammer 命令行接口 (CLI) UM2237 注 : 要验证下载是否成功, 您可以在写入命令后调用验证选项 (-v 或 -verify), 否则将忽略验证选项 3.2.4 下载 32 位数据命令 -w32 说明 : 将指定的 32 位数据从指定地址开始下载到闪存中 语法 : -w32 <start_address> <32_data_bits> <start_address> : 下载的起始地址 <32_data_Bits> : 要下载的 32 位数据 数据应使用空格进行分割 注 : 示例 :./STM32_Programmer.sh -c port=/dev/ttys0 br=9600 -w32 0x08000000 0x12345678 0xAABBCCFF 0x12AB34CD verify 该命令允许 32 位数据 (0x12345678,0xAABBCCFF,0x12AB34CD) 从地址 0x08000000 开始写入闪存 3.2.5 Read 指令 -r, --read, -u, --upload 说明 : 从指定地址开始读取设备存储器内容并将其上传到指定的二进制文件中 语法 : --upload <start_address> <size> <file_path> <start_address> <size> <file_path> 示例 : : 读取的起始地址 : 要读取的存储器内容大小 上载存储器内容的二进制文件路径./STM32_Programmer.sh -c port=/dev/ttys0 br=9600 --upload 0x20007000 2000 /local/ benayedh/binaries/read2000.bin 此命令可以从地址 0x20007000 开始读取 2000 个字节, 并将其上传到二进制文件 /local/benayedh/binaries/read2000.bin -r32 说明 : 读取 32 位数据存储器 语法 : -r32 <start_address> <size> <start_address> <size> 示例 : : 读取的起始地址 : 要读取的存储器内容大小./STM32_Programmer.sh -c port=swd r32 0x08000000 0x100 30/39 DocID030723 Rev 1 [English Rev 1]

STM32CubeProgrammer 命令行接口 (CLI) 图 20. 读取 32 位操作 注 : -r32 命令最大支持 32KB 3.2.6 start 指令 -g, --go, -s, --start 3.2.7 List 指令 -l, -list 说明 : 该命令允许从指定地址开始执行设备存储器中的程序 语法 : --start [start_address] [start_address]: 要执行的应用程序起始地址 示例 :./STM32_Programmer.sh --connect port=/dev/ttys0 br=9600 --start 0x08000000 该命令运行在 0x08000000 处指定的代码 说明 : 此命令列出所有可用的 RS232 串行端口 语法 : -l, --list 示例 :./STM32_Programmer.sh --list 此示例的结果如图 21: 可用串行端口列表中所示 : DocID030723 Rev 1 [English Rev 1] 31/39 37

STM32CubeProgrammer 命令行接口 (CLI) UM2237 图 21. 可用串行端口列表 注 : JTAG/SWD 调试端口不支持该命令 3.2.8 QuietMode 指令 -q, --quietmode 说明 : 该命令在下载和读取命令期间禁用进度条显示 语法 : -q, --quietmode 示例 :./STM32_Programmer.sh c port=/dev/ttys0 br=115200 quietmode w binarypath.bin 0x08000000 3.2.9 Verbosity 命令 -vb, --verbosity 说明该命令允许显示更多消息, 以便更加详细 语法 : -vb <level> <level> 示例 : : 详细级别, 值为 {1, 2, 3} 默认值 vb=1./stm32_programmer.sh c port=/dev/ttys0 br=115200 vb 3 此示例的结果如图 22: 详细程度命令中所示 : 32/39 DocID030723 Rev 1 [English Rev 1]

STM32CubeProgrammer 命令行接口 (CLI) 图 22. 详细程度命令 3.2.10 Log 命令 -log, --log 说明 : 此可追溯性命令允许将整个流量 ( 详细级别最高 ) 存储到日志文件中 语法 : -log [filepath.log] [filepath.log] 示例 : : 日志文件路径, 默认路径为 $HOME/.STM32CubeProgrammer/trace.log./STM32_Programmer.sh c port=/dev/ttys0 br=115200 log trace.log 此示例的结果如日志命令和图 23:Log 命令中所示 : 图 23. Log 命令 DocID030723 Rev 1 [English Rev 1] 33/39 37

STM32CubeProgrammer 命令行接口 (CLI) UM2237 日志文件 trace.log 包含有详细信息, 如下 : 图 24. 日志文件内容 3.2.11 外部加载命令 -el 说明 : 该命令允许输入外部存储器加载程序的路径, 使用外部存储器执行编程 写入擦除和读取操作 语法 : -el [externalloaderfilepath.stldr] [externalloaderfilepath.stldr] 外部加载文件的绝对路径 示例 1:./STM32_Programmer.sh -c port=swd -w file.bin 0x90000000 v el /local/user/externalloaderpath.stldr 注 : 示例 2:./STM32_Programmer.sh -c port=swd e all el /local/user/externalloaderpath.stldr 仅有 SWD/JTAG 端口支持该命令 34/39 DocID030723 Rev 1 [English Rev 1]

STM32CubeProgrammer 命令行接口 (CLI) 3.2.12 Read Unprotect -rdu, --readunprotect 说明 : 此命令通过将 RDP 级别从级别 1 更改为级别 0 来删除存储器读保护 语法 : --readunprotect 示例 :./STM32_Programmer.sh c port=swd rdu 3.2.13 选项字节命令 -ob, --optionbytes 注 : 说明 : 该命令允许用户通过显示或修改设备的选项字节来控制它们 语法 : -ob [displ] / -ob [OptByte=<value>] [displ] : [OptByte=<value>]: 示例 : 该选项允许用户显示整套选项字节 该选项允许用户编程给定的选项字节./STM32_Programmer.sh c port=swd ob rdp=0x0 ob displ 关于设备选项字节的更多详细信息, 请参阅 www.st.com 网站上设备闪存编程手册和参考手册中的选项字节部分 3.2.14 Safety lib 命令 -sl, --safelib 说明 : 该命令允许通过添加加载区 ( 段 ) 来修改固件文件, 加载区 ( 段 ) 中包含有用户程序计算出的 CRC 值 支持格式为 :bin, elf, hex 和 Srec 语法 :-sl <file_path> <start_address> <end_address> <slice_size> <file_path> <start_address> <end_address> <slice_size> 示例 : : 文件路径 (bin elf hex 或 Srec) : 闪存起始地址 : 闪存结束地址 : 每个 CRC 值的大小 STM32_Programmer_CLI.exe sl TestCRC.axf 0x8000000 0x8010000 0x400 结果示于图 25:Safety lib 命令中 : DocID030723 Rev 1 [English Rev 1] 35/39 37

STM32CubeProgrammer 命令行接口 (CLI) UM2237 图 25. Safety lib 命令 闪存程序存储器分为多个片段 ( 如上例所示, 片段大小作为安全库命令的参数给出 ) 对于每个片段, 分别计算 CRC 值并将其置于 CRC 区域中 CRC 区位于闪存末尾, 如图 26:Flash 存储器映射所示 : 图 26. Flash 存储器映射 CRC MSv48697V1. CRC 区域的地址和大小确定如下 : CRCs_Area_Size = Flash_Size / Slice_Size * 4 字节 CRCs_Start_Address = Flash_End_Address - CRCs_Area_Size 36/39 DocID030723 Rev 1 [English Rev 1]

STM32CubeProgrammer 命令行接口 (CLI) CRC 区域中的 CRC 值根据闪存中用户程序的位置放置, 参见图 27: 闪存映射示例 : 图 27. 闪存映射示例 CRC CRC 3 CRC 2 CRC 1 3 2 1 MSv48698V1. CRC 区域内的 CRC 范围地址计算如下 : UserProg_Start_Address Flash_Start_Address @ = CRCs_Start_Address + -------------------------------------------------------------------------------------------------------------------------------- 4 bytes Slice_Size DocID030723 Rev 1 [English Rev 1] 37/39 37

版本历史 UM2237 4 版本历史 表 1. 文档版本历史 日期版本变更 2017 年 12 月 15 日 1 初始版本 表 2. 中文文档版本历史 日期版本变更 2018 年 9 月 3 日 1 中文初始版本 38/39 DocID030723 Rev 1 [English Rev 1]

重要通知 - 请仔细阅读 意法半导体公司及其子公司 ( ST ) 保留随时对 ST 产品和 / 或本文档进行变更 更正 增强 修改和改进的权利, 恕不另行通知 买方在订货之前应获取关于 ST 产品的最新信息 ST 产品的销售依照订单确认时的相关 ST 销售条款 买方自行负责对 ST 产品的选择和使用, ST 概不承担与应用协助或买方产品设计相关的任何责任 ST 不对任何知识产权进行任何明示或默示的授权或许可 转售的 ST 产品如有不同于此处提供的信息的规定, 将导致 ST 针对该产品授予的任何保证失效 ST 和 ST 徽标是 ST 的商标 所有其他产品或服务名称均为其各自所有者的财产 本文档中的信息取代本文档所有早期版本中提供的信息 本文档的中文版本为英文版本的翻译件, 仅供参考之用 ; 若中文版本与英文版本有任何冲突或不一致, 则以英文版本为准 2018 STMicroelectronics - 保留所有权利 DocID030723 Rev 1 [English Rev 1] 39/39 39