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

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

3天内不再提示

在MIMXRT1020CAG4B中设置BT_FUSE_SEL熔丝位

li1756686189 来源:嵌入式 MCU 作者:嵌入式 MCU 2022-11-07 10:44 次阅读

从参考手册中了解到,在软件运行时才能设置eFuse。如何设置BT_FUSE_SEL,使用Keil MDK烧写 eFuse进行批量生产呢?这样保持每次固定只从外部的 QSPI Flash引导,而不需要判断外部BOOT GPIO引脚电平,可以减少外部下拉电阻的设置,对于原理图设计会简化许多。根据手册,BT_FUSE_SEL位于熔丝地址 0x460的第四位。

882bfce2-5cd5-11ed-a3b6-dac502259ad0.png

88ae0db8-5cd5-11ed-a3b6-dac502259ad0.png

当配置Boot_Mode在内部引导(b10)时,BT_FUSE_SEL的状态确定引导配置是否取自熔丝位或引脚状态。如果BT_FUSE_SEL=0,boot_cfg是从GPIO获取的。如果BT_FUSE_SEL=1,则从熔丝中获取引导配置cfg。

当配置Boot_Mode为BOOT_MODE[1:0]=b00:

——BT_FUSE_SEL=0,引导器件中没有应用程序,BootROM进入串行下载模式

——BT_FUSE_SEL=1,引导器件中有应用程序,BootROM从FUSE获取所有引导设备信息

当配置Boot_Mode为BOOT_MODE[1:0]=b10:

——BT_FUSE_SEL=0,引导器件中的有效应用程序,BootROM从boot_cfg引脚获取引导设备信息

——BT_FUSE_SEL=1,引导器件中的有效应用程序,BootROM从熔丝位获取所有引导设备信息

即使配置了 BT_FUSE_SEL=1,当配置了 BOOT_MODE[1:0]=01b时,仍然可以进入串行下载器模式,这与BT_FUSE_SEL没有关系,仅当配置BOOT_MODE[1:0]=00b时,ROM引导加载程序将检查BT_FUSE_SEL。所以,如果有BOOT_MODE两个引脚,仍然可以进入串行下载模式。

在MDK IDE环境下运行如下固件代码,该代码在固件首次启动时烧写BT_FUSE_SEL。在批量生产中,调试器对Flash进行编程并第一次调用启动。所以不再需要引导 Boot引脚判断。

//写熔丝位
if (!(SRC->SBMR2 & SRC_SBMR2_BT_FUSE_SEL_MASK))
{
int timing = OCOTP_TIMING_STROBE_PROG(1325) | OCOTP_TIMING_RELAX(2) | OCOTP_TIMING_STROBE_READ(11) |OCOTP_TIMING_WAIT(24); //ipg_clk=132MHz
OCOTP->TIMING = timing;
while ((OCOTP->CTRL & (1<CTRL & (1< int ocotp_ctrl = OCOTP->CTRL;
ocotp_ctrl &= ~OCOTP_CTRL_ADDR_MASK;
ocotp_ctrl|= OCOTP_CTRL_ADDR(6);
ocotp_ctrl &= ~OCOTP_CTRL_WR_UNLOCK_MASK ;
ocotp_ctrl|= OCOTP_CTRL_WR_UNLOCK(0x3E77);
OCOTP->CTRL = ocotp_ctrl; //写地址,解锁
OCOTP->DATA = (long)((1<<4)|(1<<16));//写入 BT_FUSE_SEL (1<<4) 和FORCE_INTERNAL_BOOT (1<<16)
}

那么如何在生产中做到这一点呢?使用MIMXRT1021CAG4B,之前BT_CFG_xx信号与GND相连,目前想利用这些GPIO 去连接外部的GPIO或者是LCD或者是ADC芯片,上面介绍的代码可以做到这一点。注意,当编程到外部 Flash中时,如何让MCU 执行这些代码?BT_CFG_xxx信号最初是否不需要正确设置才能执行代码,或者是否需要额外使用调试器工具进行了一些设置?在后台启动keil的批处理文件,也可以在下载到flash后开始代码处执行(参见如下µVision用户指南:命令行)。因此,它在编程Flash 后第一次使用调试器启动,届时熔丝位将被写入。

µVision User's Guide (arm.com)

当然 MCU BootUtility或者MFG都是比较好的烧录Fuse的工具。

参考文档"i.MX MCU Manufacturing User's Guide.pdf"Rev. 1, 01/2018, 第8部分有 load fuse命令,例如load fuse 0x00000008 -> 0x06

意味着将32位的数值0x00000008 写入到 OTP 区0, 字6 (ADDR = 0x06)。在参考手册中,生产配置OTP Bank0 Word6 (HW_OCOTP_CFG5)] ,表示熔丝位的偏置是 460h 。

89156b66-5cd5-11ed-a3b6-dac502259ad0.png

审核编辑:汤梓红

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

    关注

    146

    文章

    16016

    浏览量

    343607
  • 熔丝位
    +关注

    关注

    0

    文章

    19

    浏览量

    11170
  • Fuse
    +关注

    关注

    0

    文章

    11

    浏览量

    12271

原文标题:在MIMXRT1020CAG4B中设置BT_FUSE_SEL熔丝位

文章出处:【微信号:嵌入式 MCU,微信公众号:嵌入式 MCU】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    AVR 设置及拯救方法

    AVR 设置及拯救方法
    发表于 07-26 22:48

    atmel studio 7如何设置

    如何设置atmel studio 7的界面
    发表于 05-11 11:48

    AVR操作时的要点和需要注意的相关事项

    `AVR的器件手册,对使用已编程(Programmed)和未编程(Unprogrammed)定义
    发表于 04-08 10:25

    【文末福利!】基于IMX6ULL开发板的启动方式——开源资料,操作详解

    通过GPIO来选择启动设备;当BT_FUSE_SEL为1时就会通过eFUSE来选择启动设备。开发阶段,我们使用GPIO来选择设备,这就引入下面第3个问题。 ③ 如何通过eFUSE或GPIO选择、设置启动
    发表于 09-08 17:18

    AVR的器件手册怎样去定义的状态?

    AVR的器件手册,怎样去定义的状态?
    发表于 07-08 07:30

    AVR单片机的

    1.简介:状态为“1”表示未编程,
    发表于 07-13 07:36

    如何对AVR进行配置

    相关章节,附录中将给出一个完整的汇总表。(1)AVR的器件手册,对使用已编程(Pro
    发表于 07-13 07:24

    如何设置AVR单片机加密

    什么是?如何设置AVR单片机加密
    发表于 09-24 06:55

    SD SRD104模式不可用的原因?

    30390070”输出,BT_FUSE_SEL 为 0,即 22000009。BT_FUSE_SEL 是该数字的第 4 ,确实为“0”。长话短说,我想在不向这些引脚施加逻辑电压的情
    发表于 03-17 07:45

    BLHost从NOR执行应用程序无法正常启动的原因?

    FLASH_AUTO_PROBE_EN=1 和 BT_FUSE_SEL=1。这使我们成功启动了应用程序,同时 BOOT_MODE[1:0] = 00(从启动)和 BOOT_MODE[1:0] = 10(内部 ROM
    发表于 03-23 07:37

    如果SJC被禁用,MCU i.MXRT 1051加密的XIP启动软件重置后失败怎么解决?

    =0b10、DIR_BT_DIS、SEC_CONFIG[1]、BT_FUSE_SEL)。当设备通过所有测试时,我们会烧断锁定 SerialDownloader 和调试支持的保险(烧断
    发表于 04-04 07:41

    MIMXRT1021CAG4A无法正常启动是为什么?

    问题描述我们有一个硬件问题,MIMXRT1021CAG4A 无法正常启动当BOOT_MODE寄存器设置为01(串口下载器)时,MCU不枚举为HID而且我们无法使用 MCUXpresso Secure
    发表于 04-18 06:21

    如何使用SD卡启动MIMXRT1024CAG4B

    我们计划使用 SD 卡启动 MIMXRT1024CAG4B。 基于参考手册 IMXRT1024RM chapter9.6.6.3,我们假设引导操作不支持 SDR50 和 SDR104。希望支持SDR50和SDR104的SD卡正常运行(数据传输率)。我的理解正确吗?
    发表于 05-05 08:08

    progisp168的设置在哪里修改?

    谁用这个软件设置,我的没有了,(USB
    发表于 11-03 06:17

    的作用是什么?如何设置呢?

    的作用是什么?如何设置? 给个清晰明白的
    发表于 11-06 07:14