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.

TMS320F28388D: 关于修改默认Boot模式的疑问

Part Number: TMS320F28388D
Other Parts Discussed in Thread: C2000WARE

28388D默认的boot引脚是GPIO72和GPIO84

由于设计失误,没有向官方控制卡那样对这两个两个引脚加上下拉电阻及拨码开关

上图为28388D控制卡的boot模式选择部分的设计

看到TRM手册中有如下描述:

从相关章节的描述看 上述的操作不是太复杂 不过我没有在C2000ware里找到相关的例程

我想将启动模式修改成这部分描述的那样,不靠外部管脚配置,只有一种启动模式,Flash启动就可以,我的应用里对启动没有太多要求

问题1.请问TI工程师,C2000Ware里面有5.4.3.1.章节对应的例程吗?对diverlib目前使用还不是太熟,找相关的上层函数有些吃力

问题2.修改启动模式要操作OTP,一次性可编程是指只能对该区域修改一次吗,即便是操作失误?

问题3.如果将boot模式修改为5.4.3.1章节描述的那这样,会影响JTAG在线连接器件(C281、C282、CLA及CM)吗?会影响工程的JTAG调试吗?

  • 您好,

    1. 您参考一下Table 5-9. CPU1 BOOTPINCONFIG Bit Fields

    spruii0d_TMS320F2838x Real-Time Microcontrollers With Connectivity Manager TRM (Rev. D)

    按照5.4.3.1 Zero Boot Mode Select Pins所述修改相应寄存器位即可;

    2. 是的;

    3. 不会。

    C:\ti\c2000\C2000Ware_4_01_00_00\driverlib\f2838x\examples\c28x\boot

    C:\ti\c2000\C2000Ware_4_01_00_00\libraries\boot_rom\f2838x

    这两个路径下的例程您可以参考一下。

  • 您好 您指出的两个路径下的工程

    C:\ti\c2000\C2000Ware_4_01_00_00\driverlib\f2838x\examples\c28x\boot 是关于secure flash boot的

    C:\ti\c2000\C2000Ware_4_01_00_00\libraries\boot_rom\f2838x是关于bootlaoder相关的例程,这个我没有太仔细的看,不知道理解的对不对,看到文件夹下的子文件夹比较多

    对我来讲 这两个路径下的工程似乎都是复杂些,我最终找到了\TI\c2000ware\C2000Ware_4_01_00_00\driverlib\f2838x\examples\c28x\dcsm文件夹下的dcsm_security_tool例程

    导入工程后,勾选dcsm_security_tool.syscfg的Configure Boot Setting可以比较方便的调整boot方式

    不过今天手边没有28388的控制卡,但是有一块28379的LaunchPad,28379也有一个类似的dcsm_security_tool工程:

    我把ZONE 1的boot control pin1也改成了GPIO84,在active ram的模式下编译并烧录工程,

    问题1. 不过虽然是在active ram下编译和烧录的,看到烧录过程中缺擦除了flash,默认的launchpad例程被擦除了,这是为什么呢?

    烧录完成后CCS的状态如下:

    问题2. 请问例程烧录后的这个状态 是正常的吗?

    随后,我重新烧录了LaunchPad例程,从最终的调试结果看,boot确实和GPIO72无关了

    将拨码开关中间off(默认三个都是on的状态)即将GPIO72置为0,每次按电路板的复位按键,例程都能跑起来,不会卡在SCIboot模式,证明改动是生效的,这样改动以后,boot flash只和GPIO84的状态相关。

    调试过程中遇到这样一个现象,将GPIO84对应的拨码同样置为off,连接usb线缆,代码可以正常跑起来,但是按复位键之后,就无法启动了。复位后无法启动应该是因为GPIO84置低,但是将GPIO84置低后每次连接USB线缆代码能正常启动是为什么呢这是问题3.

    当我想改回之前boot模式的默认配置时,再次烧录dcsm_security_tool工程出现如下错误:

    问题4.请问这是因为OTP只能被操作一次导致的吗?不过我不确定调试的时候是不是仅仅烧录了一次该工程,记不太清楚了

  • 1. 您可以看一下工程的配置,看是否选择了擦除Flash;

    2. 正常的。首先,右上角的变量应该是调试其它工程添加的;其次,在暂停时,PC指向某些函数内部,但是这些函数中没有办法打断点,或者其它的原因,所以就会出现屏幕中间左边的信息;

    3. 调试的boot流程和standalone的boot流程不一样,在spruhm8i_TMS320F2837xD Dual-Core Delfino Microcontrollers Technical Reference Manual (Rev. I)4.8 Device Boot Flow Diagrams有详细介绍。

    4. 如果使用的是仿真器,那么操作的就是仿真OTP,可以多次修改;如果操作的是芯片的OTP,则只能修改一次:

  • 对于您的答复1 您能说明下是在哪里查看吗 我在工程属性里没有找到

    对于您的答复3,我觉得之所插上仿真器能启动,可能是由于以下原因吧:

    第一、仿真器连接状态下我看了下EMU OTP的内容如下:

    key是5A 模式是00 满足黄色高亮的“If an emulator is not connected with the boot mode selected to "Get Mode" boot,”,即仿真器连接状态下的模式不是get mode

    第二、OTP的内容如下

    0B 说明设置了flash启动模式,0x5555,说明启动相关的俄pin1和pin0都是GPIO84,但是我在插USB线的时候 断开了GPIO84的拨码,因此满了绿色高亮的“invalid OTP configured boot mode”

    以上两点,导致了flash启动成功。

  • 1. 

    2. 连接仿真器之后应该是查看EMU_BOOTCTRL。boot pin select, key, 以及boot mode都是查看EMU_BOOTCTRL(0x0D00开始的32位)。

    高亮这部分的意思是,如果通过boot pin没有选择另外3种boot mode,而是选择的"Get mode",那么无效的EMU_BOOTCTRL.key或bmode value将会引起flash mode。