0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

在 KEIL 中通过 opt.s 文件设置 Option Bytes

jf_pJlTbmA9 来源:STM32单片机 作者:STM32单片机 2023-09-28 17:30 次阅读

1、引言

实际工程中如果需要对 MCU 的 option bytes 进行修改,可以有以下几种方式:

• 通过 STLINK-Utility 或是 CubeProgrammer 图形化工具进行配置

• 通过 ST-LINK_CLI.exe 命令行的方式进行配置

• 通过应用代码中软件修改寄存器的方式进行配置

以上的方式中前两种都需要脱离 KEIL 或是 IAR 的开发环境进行操作,在实际项目的开发阶段可以使用,但是到量产阶段由于多了一道工序,增加了成本与出错的风险;通过应用代码软件修改的方式在一定程度上也是增加了软件的复杂度。

如果客户使用 KEIL 作为软件开发环境,则存在一种更简单的方式,就是使用 opt.s 文件,采用该方法可以与应用工程融合在一起,一步完成 option bytes 的配置。

2、opt.s 文件介绍

Opt.s 文件存在于 KEIL 的开发包中,以 F3 系列 MCU 为例,可以在如下的路径中找到。

1666769955539036.png

打开该文件后,可以看到如下部分截图,类似汇编语言的方式对变量进行赋值,其实也就是对 option bytes 中的各个关键变量进行赋值操作。

1666769964550170.png

3、通过 opt.s 配置 option bytes

通过 opt.s 修改 option bytes 只能在 KEIL 开发环境下进行,接下来在 STM32F334R8 为例说明。

Step 1:新建或是任意打开一个基于 STM32F334R8 的工程,这里直接使用 CubeMx 例程中STM32F334R8-Nucleo 下的 GPIO_IOToggle 例程。

Step 2:将 STM32F3xx_OPT.s 添加到功能目录中,如下:

1666769978991580.png

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

1666769990265882.png

Step 4:Configuration Wizard 下修改配置,比如将 RDP 由 level 0 更改为 level 1 并保存修改,此时可以通过 Text Editor 查看对应的 RDP 的值也变了。

1666770001104499.png

Step 5:重新编译工程,可以看到 opt.s 文件被直接编译到应用工程中。

1666770021261625.png

Step 6:将生成的烧录文件直接下载到目标板中。此时需要注意的是,在烧录前一定要将对应的 Flash options 的烧录算法添加到 Programming Algorithm 中,如下所示,完成后直接连接目标板进行烧录即可。

1666770028703345.png

完成以上的操作后,可以对上述进行的 option bytes 的修改进行验证,可以直接打开CubeProgrammer 读取目标板的 option bytes,得到的结果如下图所示,可以看到,RDP 的结果与上述配置一致。

1666770039746029.png

4、小结

通过将 opt.s 文件添加到工程中实现 option bytes 的配置,好处是将配置融合到烧录文件中,不需要通过其他工具或是在应用代码中去操作 option bytes,简化量产过程中的烧录工序。但是目前该方法不是所有的 MCU 型号都适用,例如对 G4 双 Bank 系列就存在问题,需要等待官方提供适合双 Bank 的 option bytes 的烧录算法与 opt.s 文件。

来源:STM32单片机

免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • keil
    +关注

    关注

    68

    文章

    1196

    浏览量

    165333
收藏 人收藏

    评论

    相关推荐

    STM8L051的LSI设置,用IAR没法option byte设置LSI-EN怎么解决?

    option byte里面没有LSI-EN选项,是软件问题还是这个芯片有什么制约?我想用LSI作为系统时钟该怎么设置
    发表于 04-26 07:26

    STM32G0x0_OPT.FLM文件怎么MDK工程里使用?

    STM32G0x0_128.FLM文件可以工程里直接添加实现代码的烧录调试,但是STM32G0x0_OPT.FLM不知道如何使用?MDK工程要怎么修改?有例程吗?
    发表于 03-29 06:33

    如何使用OPT_FLM文件实现解除读保护功能?

    MDK工程里debug选项选择烧录的FLM文件就可以下载调试代码,那OPT_FLM文件该怎么工程里使用实现解除读保护功能呢?直接在debug里选择是不行的,求指点
    发表于 03-28 07:11

    使用STM32CubeMX生成的keil文件keil运行时报错的原因?

    使用STM32CubeMX过程,生成的keil文件。 file:///C:/Users/Zhanggp/AppData/Local/Temp/ksohtml11808/wps1.j
    发表于 03-26 07:10

    CN0359例程的程序源码,KEIL编译时startup_ADuCM360.s文件报错的原因?怎么解决?

    CN0359例程的程序源码,KEIL编译时,startup_ADuCM360.s文件报错。
    发表于 01-12 07:08

    keil如何生成bin文件

    Keil是一种集成开发环境(IDE),专为ARM架构的嵌入式系统开发而设计。在Keil中生成bin文件是将代码编译并转换为可执行文件的过程。本文将详细介绍
    的头像 发表于 12-15 13:43 3339次阅读

    【昉·星光 2 高性能RISC-V单板计算机体验】昉·星光2上安装配置新编译的OpenWRT

    proto \'dhcp\' config interface \'wan6\' option device \'eth1\' option proto \'dhcpv6\' 保存文件,并
    发表于 11-18 11:22

    keil4用stc12c5a60s2芯片不能生hex文件的原因?

    你好,请问keil4用stc12c5a60s2芯片,能编译,不能生hex文件是什么原因?
    发表于 10-26 07:41

    STM8S003程序偶尔会不见是为什么?

    我目前使用STM8S003 並且有使用到option byte 正常使用的過程,有時候程式就突然不見了, 不知道各位有沒有過沒這樣的問題? 然後重新燒錄的時候會失敗並且出現下面的
    发表于 10-20 08:19

    STM8S配置字节OPTION BYTE

    的尴尬。选项字节用于配置硬件特性和存储器保护状态,这些字节位于同一页的特定存储器阵列。 选项字节可以I C P / S W I M模式或I A P模式
    发表于 10-10 06:07

    STM32G4 应用程序与 Option Bytes 同时烧录问题

    STM32G4 应用程序与 Option Bytes 同时烧录问题
    的头像 发表于 09-28 18:02 646次阅读
    STM32G4 应用程序与 <b class='flag-5'>Option</b> <b class='flag-5'>Bytes</b> 同时烧录问题

    Option的基础用法

    , Some(T) 表示 Option 中存在一个值 T , None 表示 Option 中不存在值。 基础用法 创建 Option Rust 中可以通过 Some(value) 创
    的头像 发表于 09-20 11:07 1522次阅读

    原理图 Cloud Option Board

    原理图 Cloud Option Board
    发表于 07-05 20:18 0次下载
    原理图 Cloud <b class='flag-5'>Option</b> Board

    想使用64 Bytes FIFO该如何设定?

    官方TRM中提到NUC230/240的UART0有提供到64 Bytes的接收缓冲区,UART1及UART2只提供了16Bytes的接收缓冲区,但uart.h文件RFITL设定仅供到
    发表于 06-13 08:43

    keil里如何烧录data flash数据的?

    data flash当eeprom用时keil配置好data flash,编译的文件使用keil 在线下载能保存数据,但是使用烧录工具下载时掉电后数据不能保存 1、如何设置data
    发表于 06-13 07:48