Part Number:TMS320F28388DOther Parts Discussed in Thread:C2000WARE,
Support:
cware2000:C2000Ware_3_04_00_00
因为需要使用emif通讯,所以想将芯片的boot模式改为zero boot mode .按照论坛中的介绍:TMS320F28388D: How to set the boot mode of the chip to “Zero boot mode select pins” – C2000 microcontrollers forum – C2000︎ microcontrollers – TI E2E support forums
非常麻烦,我想直接通过修改寄存器的值进行配置。但是我发现寄存器中的值修改不了。不知道为什么。
Green Deng:
你是否有对这个寄存器进行过编程?
设置0引脚boot模式的话是需要修改OTP寄存器的,所以,这类寄存器只能修改一次
,
user5363809:
对开发板第一次编程这个寄存器。不知道出厂的时候是否已经编程过
,
Green Deng:
如果是TI官方的话出厂应该不会编程过OTP。我看到bmsp0的值是90,正常应该是0xFF,也就是255。有可能已经被修改过了。
你可以看一下芯片TRM的5.4.3 Boot Mode Example Use Cases,里面有举例如何修改Zero Boot Mode Select Pins
,
user5363809:
按照5.4.3 Boot Mode Example Use Cases说明,重新买了两个开发板
并且对应上图中的这两个寄存器中的值为FFFFFFFF初始值。
按照5.4.3 Boot Mode Example Use Cases操作说明执行如下操作
1、
#define ZEROBOOT 0x5F008 //Z1-BOOTPINCONFIG 改写为 0x78008也试过#define BOOTDEF 0x5F00C //Z1-BOOTDEF-LOW 改写为 0x7800C也试过
2、
typedef struct bootconfigdef{ uint32_t bmsp0:8; uint32_t bmsp1:8; uint32_t bmsp2:8; uint32_t key:8;} BOOTPINCONFIG;
typedef struct BootDefStru{ uint32_t BOOT_DEF0:8; uint32_t BOOT_DEF1:8; uint32_t BOOT_DEF2:8; uint32_t BOOT_DEF3:8;}BOOTDEFStru;
BOOTPINCONFIG* BootpinConfig=(BOOTPINCONFIG*)ZEROBOOT ; //映射地址BOOTDEFStru *BootDef = (BOOTDEFStru*)BOOTDEF;
3、main函数的初始化中设置
asm(" EALLOW"); BootpinConfig->key = 0x5A; BootpinConfig->bmsp0 = 0xFF; BootpinConfig->bmsp1 = 0xFF; BootpinConfig->bmsp2 = 0xFF;
BootDef->BOOT_DEF0 = 0x03; BootDef->BOOT_DEF1 = 0XFF; BootDef->BOOT_DEF2 = 0XFF; BootDef->BOOT_DEF3 = 0XFF; asm(" EDIS");
结果:
值并未发生改变,不知道为何,应该是个挺简单的过程,辛苦帮忙分析一下。
,
Green Deng:
好的收到,最近帖子比较多,我会在今天回复你
,
user5363809:
好滴,非常之感谢
,
Green Deng:
你好,推荐你试一下TI的C2000 DCSM Security Tool工具。
你可以先参考一下例程:C:\ti\c2000\C2000Ware_3_04_00_00\driverlib\f2838x\examples\c28x\dcsm
和文档4.2 ZONE1/ZONE2 Header Submodule的说明:https://www.ti.com.cn/cn/lit/an/spracp8a/spracp8a.pdf
我按照文档配置的如下DCSM模块,但是因为是要写入OTP的,所以没有测试,你可以参考测试一下:
,
user5363809:
Hi Deng
非常感谢,问题已经解决了
,
Green Deng:
客气了,方便的话帮忙点一下确认答案,方便后续有其他工程师有需要的话可以参考。