[应用相关] 在 KEIL 中通过 opt.s 文件设置 Option Bytes

[复制链接]
1012|13
 楼主| 问天少年 发表于 2022-5-5 13:27 | 显示全部楼层 |阅读模式
IO, TE, TI
1. 引言
实际工程中如果需要对 MCU option bytes 进行修改,可以有以下几种方式:
通过 STLINK-Utility 或是 CubeProgrammer 图形化工具进行配置
通过 ST-LINK_CLI.exe 命令行的方式进行配置
通过应用代码中软件修改寄存器的方式进行配置
以上的方式中前两种都需要脱离
KEIL 或是 IAR 的开发环境进行操作,在实际项目的开发阶段
可以使用,但是到量产阶段由于多了一道工序,增加了成本与出错的风险;通过应用代码软件修
改的方式在一定程度上也是增加了软件的复杂度。
如果客户使用
KEIL 作为软件开发环境,则存在一种更简单的方式, 就是使用 opt.s 文件,采
用该方法可以与应用工程融合在一起,一步完成
option bytes 的配置。  

 楼主| 问天少年 发表于 2022-5-5 13:28 | 显示全部楼层
2. opt.s 文件介绍
Opt.s 文件存在于 KEIL 的开发包中,以 F3 系列 MCU 为例,可以在如下的路径中找到。   24616273606e10335.png

打开该文件后,可以看到如下(部分截图),类似汇编语言的方式对变量进行赋值,其实也就
是对 option bytes 中的各个关键变量进行赋值操作。
1242162736077af3d4.png
 楼主| 问天少年 发表于 2022-5-5 14:39 | 显示全部楼层
3. 通过 opt.s 配置 option bytes
通过 opt.s 修改 option bytes 只能在 KEIL 开发环境下进行, 接下来在 STM32F334R8 的为例
说明。
Step 1:新建或是任意打开一个基于 STM32F334R8 的工程,这里直接使用 CubeMx 例程中
STM32F334R8-Nucleo 下的 GPIO_IOToggle 例程。
Step 2:将 STM32F3xx_OPT.s 添加到功能目录中,如下:   3213627370fa3c760.png



 楼主| 问天少年 发表于 2022-5-5 14:40 | 显示全部楼层
Step 3:双击打开 STM32F3xx_OPT.s 文件, 如下图所示。 KEIL 提供了两种编辑方式, 如果
对.s 文件的编程方式以及 option bytes 变量的每个 bit 都非常熟悉的话,可以直接在 text editor 下
对.s 文件中进行修改;更加简单的方式是直接在 Configuration Wizard 下进行配置。建议采用后面
一种配置方式,更加简单明了。

 楼主| 问天少年 发表于 2022-5-5 14:42 | 显示全部楼层
Step 4: Configuration Wizard 下修改配置,比如将 RDP 由 level 0 更改为 level 1 并保存修
改,此时可以通过 Text Editor 查看对应的 RDP 的值也变了。  

533326273717b8d2cb.png
767646273717f83605.png
 楼主| 问天少年 发表于 2022-5-5 14:43 | 显示全部楼层
Step 5:重新编译工程,可以看到 opt.s 文件被直接编译到应用工程中。  


52129627371ca00265.png
 楼主| 问天少年 发表于 2022-5-5 14:46 | 显示全部楼层
Step 6: 将生成的烧录文件直接下载到目标板中。此时需要注意的是,在烧录前一定要将对
应的 Flash options 的烧录算法添加到 Programming Algorithm 中,如下所示,完成后直接连接目
标板进行烧录即可。  

235276273720dc5911.png
 楼主| 问天少年 发表于 2022-5-5 14:47 | 显示全部楼层
完成以上的操作后,可以对上述进行的 option bytes 的修改进行验证,这里直接打开
CubeProgrammer 读取目标板的 option bytes,得到的结果如下图所示,可以看到, RDP 的结果
与上述配置一致。  

52939627372f016411.png
 楼主| 问天少年 发表于 2022-5-5 14:48 | 显示全部楼层
4. 小结
通过将 opt.s 文件添加到工程中实现 option bytes 的配置,好处是将配置融合到烧录文件中,
不需要通过其他工具或是在应用代码中去操作
option bytes,简化量产过程中的烧录工序。 但是目
前该方法不是所有的
MCU 型号都适用, 例如对 G4 Bank 系列就存在问题,需要等待官方提供
适合双
Bank option bytes 的烧录算法与 opt.s 文件。  

Jacquetry 发表于 2022-10-5 21:42 | 显示全部楼层
好难,没看懂
Uriah 发表于 2022-10-7 10:14 | 显示全部楼层

大部分能够读取或者识别Flash上的数据就能够获得Firmware文件
Bblythe 发表于 2022-10-7 13:13 | 显示全部楼层

如果在编程时加密锁定位被使能/锁定,就无法用普通编程器直接读取单片机内的程序
Pulitzer 发表于 2022-10-7 16:12 | 显示全部楼层

大部分单片机都带有加密锁定位或者加密字节
Clyde011 发表于 2023-6-1 07:15 | 显示全部楼层

主定时器为TIM1,通道2配置为PWM输出
万图 发表于 2023-6-1 09:11 | 显示全部楼层

主从定时的方式占用CPU资源少
Uriah 发表于 2023-6-1 10:14 | 显示全部楼层

主从定时器门控的方式
帛灿灿 发表于 2023-6-1 12:10 | 显示全部楼层

中断计数的方式实现简
Bblythe 发表于 2023-6-1 13:13 | 显示全部楼层

当PWM频率较高时,频繁的中断将影响程序运行的效率
周半梅 发表于 2023-6-1 15:09 | 显示全部楼层

都可以产生指定个数的PWM脉冲
Pulitzer 发表于 2023-6-1 16:12 | 显示全部楼层

输出了5个频率为10KHz的PWM脉冲
您需要登录后才可以回帖 登录 | 注册

本版积分规则

79

主题

564

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部