This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TMS320F28377S:无论引导模式选择引脚状态如何、都强制引导至闪存

Guru**** 2392475 points
Other Parts Discussed in Thread: C2000WARE

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1460605/tms320f28377s-force-boot-to-flash-regardless-of-boot-mode-select-pin-state

器件型号:TMS320F28377S
Thread 中讨论的其他器件:C2000WARE

工具与软件:

我希望处理器始终引导至闪存。  如果我对 OTP 进行编程、使得 BMSP0和 BMSP1都是0xFF、这是否会导致两者都读取为1、然后强制使用 Get Boot 选项(从而从闪存引导)?  

我注意到、FF 表示器件上物理上不存在 GPIO254。

这个方法在2838x 处理器上使用来配置一个到闪存的强制启动。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Allen:

    如果未对 OTP 中的键值进行编程(OTP 密钥不等于0x5A)、则 获取模式解码应默认为闪存/等待引导模式。 这适用于您的项目吗?

    谢谢。此致、

    Charles

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Charles:

    感谢您的答复。  下面提供了更多详细信息。  这样做的动机是网络安全、我不希望黑客能够启动除我在闪存中编程的内容之外的任何内容。

    查看 TRM (CPU1独立和休眠引导流程)中的图4-4、可以看到处理器始终会检查引导 GPIO 引脚以确定如何引导。  如果两个引脚都为1、则处理器将处于 Get Mode (获取模式)、并且可以进行闪存引导。  如果引导引脚有其他值、则处理器将无法引导至闪存、而是引导至并行 IO、SCI 或等待模式。  因此、将两个引脚读作1至关重要。

    进入获取模式后、处理器将按照表4-6获取模式解码进行处理。  正如您提到的、key!= 0x5A (即未编程)的默认设置是引导至闪存。

    我想将 OTP 中的 BMSP0和 BMSP1设置为0xFF (即 GPIO254)、希望它们读为1并强制进入获取模式。  这需要 KEY 为0x5A、因此我还需要为闪存引导编程 BMODE 值(根据表4-6)。

    遗憾的是、没有记录用于为 BMSP0和 BMSP1分配不存在 GPIO 的引导 ROM 的行为(至少没有记录)。  这是我的真实问题、确认了引导 ROM 在本例中是如何运行的。

    谢谢!

    Allen

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Allen:

    Unknown 说:
    该方法用于2838x 处理器

    您是指 F2838x 还是 F2837xD? 这些器件具有不同的引导流程、但似乎您所描述的是 F2837xD 器件。  

    将来、我将介绍 F2837xD 器件:

    [报价 userid="637933" url="~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1460605/tms320f28377s-force-boot-to-flash-regardless-of-boot-mode-select-pin-state/5605361 #5605361"]我想将 OTP 中的 BMSP0和 BMSP1设置为0xFF (意思是 GPIO254)、希望将它们读作1并强制设置为 Get 模式。  这需要密钥为0x5A、因此我还需要对闪存引导的 BMODE 值进行编程(根据表4-6)。[/QUOT]

    查看 C2000Ware 中的引导 ROM 源代码(libraries\boot_rom\f2837xd\revB\rom_sources\F2837x_bootrom\cpu01-bootrom\source)、 BMSP 被 限制为最大引脚值168、否则使用默认 BMSP (GPIO72/84)。 我同意缺少相关文档、并将确保在下一个修订版中注明。  

    uint16_t c1brom_decode_bootpins(uint16_t pinconfig)
    {
        uint16_t bootpin0 = 0;
        uint16_t bootpin1 = 0;
        uint16_t bmode = 0;
        //default boot pins - mode0 is GPIO84, mode1 is GPIO72
    
        if((pinconfig &0xFF) == 0x0)
        {
            bootpin0 = 84;
        }
        else
        {
            bootpin0 = (pinconfig & 0xFF) - 1;
        }
    
        if(((pinconfig & 0xFF00) >> 8) == 0x0)
        {
            bootpin1 = 72;
        }
        else
        {
            bootpin1 = ((pinconfig & 0xFF00) >> 8) - 1;
        }
    
        if(bootpin0 > 168)
        {
        	//restrict the max pin to be used to GPIO168
        	bootpin0 = 84;
        }
    
        if(bootpin1 > 168)
        {
        	//restrict the max pin to be used to GPIO168
        	bootpin1 = 72;
        }
    
        bmode = (c1brom_GPIO_ReadPin(bootpin1) << 1);
        bmode |= c1brom_GPIO_ReadPin(bootpin0);
    
        return bmode;
    }

    Charles'的想法仍然不变:如果您编程到 BOOTCTRL OTP 密钥寄存器的某个错误(!= 0x5A)、并且 GPIO72/84连接到高电平以选择 Get 模式、那么该器件将始终启动到闪存 高电平的情况下仍可继续进行此操作 . 请注意 、如果 BOOTCTRL KEY!= 0x5A、那么默认 BMSP 将按照 TRM 中的图4-7使用

    请告诉我这对于您的应用是否合理。

    此致!

    Matt

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Matt:

    感谢您的答复!  您和 Charles 所描述的是我如何理解它的工作原理、但不能满足我的需求。

    但是、在检查完引导 ROM 代码后(非常感谢您指出它的位置!) 我可以设想一种实现我的目标的方法。

    此致!

    Allen

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Allen:

    我很高兴听到您能找到方法、如果您有任何其他问题、请随时打开新话题。

    此致!

    Matt