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.

TMS320F28P650DK: 关于SCI BOOT更改引脚问题

Part Number: TMS320F28P650DK
Other Parts Discussed in Thread: SYSCONFIG, C2000WARE

在我的项目开发中,由于之前的芯片(28335,280045)的SCI BOOT的默认引脚均为GPIO28,GPIO29,但是在28P65中默认引脚改为了GPIO12,GPIO13,我的硬件仍然连接的是28,29,所以需要更改SCI BOOT的引脚。

通过TRM手册得知, 我更改OTP中的BOOTDEF的值就能更改引脚

我的问题如下:

1.如何更改OTP中的值?只能通过debug中的on-chip flash更改还是能通过程序中直接编程OTP中的BOOTDEF?

2.一块芯片OTP只能更改一次吗?后续想要继续更改引脚就没有办法了吗?

3.下图有说明在debug中可以更改 EMU-BOOTDEF,那我已经在debug中了怎么进入SCI BOOT,这个值掉电还能保存吗

  • 您好,

    已经收到了您的案例,调查需要些时间,感谢您的耐心等待。

  • 您好

    1.如何更改OTP中的值?只能通过debug中的on-chip flash更改还是能通过程序中直接编程OTP中的BOOTDEF?

    您有多个选项可供选择:片上闪存插件、SysConfig 的 DCSM 工具 GUI 或通过程序。 您可以参阅 TRM 以了解需要进行编程的相关引导配置寄存器:BOOTPIN-CONFIG 和 BOOTDEF。 建议您查看第4.4.3章"引导模式示例用例"、了解如何对寄存器进行编程。

    如需使用 DCSM 工具 GUI 直观地配置引导模式、请参阅此应用报告:

    https://www.ti.com/lit/an/spracp8/spracp8.pdf

    如需使用程序来设置引导模式、请访问 https://www.ti.com/lit/an/spraca2/spraca2.pdf。 它基于旧器件、但可以轻松应用于 F28P65x 器件。

    2.一块芯片OTP只能更改一次吗?后续想要继续更改引脚就没有办法了吗?

    由于 DCSM OTP 存储器中有两个区域(Z1和 Z2)、因此从技术上讲、OTP 中的引导配置可编程两次。 我强烈建议首先对 Z1 OTP 进行编程、因为 Z2 OTP 会取代 Z1配置。

    3.下图有说明在debug中可以更改 EMU-BOOTDEF,那我已经在debug中了怎么进入SCI BOOT,这个值掉电还能保存吗

    可以在 TRM 中的表4-17所提供的存储器位置(使用存储器浏览器)访问仿真引导配置寄存器。 它们在配置中类似于 OTP 引导寄存器、但位于 RAM 中。 因此、当器件断电时、仿真配置会丢失。 我强烈建议您在尝试对 OTP 进行编程之前在仿真引导模式下测试引导配置。 如果有兴趣、我可以提供更多详细信息、但强烈建议您先查看 TRM、尤其是第4.4章。

  • 感谢你的回复与建议,

    我已详细查看了TRM,然后我想设置的两个BOOT如下:

    BOOTDEFx

    BOOT MODE

    0

    SCI BOOT

    1

    FLASH BOOT

    然后选择ONE BMSP模式,BMSP0 = 72(0x48)。SCI BOOT选择GPIO28&29(0xA1),FLASH选择从BANK0启动(0x03)

    我的硬件方面是GPIO72默认上拉,即默认从FLASH启动,通过跳线帽下拉,则从SCI启动。

    1.请问我图中的内存修改的值对吗?如果不对,请麻烦指出并提供建议

    2.不知是何原因我的CCS12.8.0连接不上芯片了(提示can't read device register),我使用的是CCS20.0.2,在我改完模拟EMU-BOOT内存的值之后,接上跳线帽(则跳转BOOTDEF1),我应该直接向GPIO28&29发送“A”来测试是否修改成功?还是需要进行其他操作?

  • 您好

    1.请问我图中的内存修改的值对吗?如果不对,请麻烦指出并提供建议

    是的、它们符合您的引导要求。

    2.不知是何原因我的CCS12.8.0连接不上芯片了(提示can't read device register),我使用的是CCS20.0.2,在我改完模拟EMU-BOOT内存的值之后,接上跳线帽(则跳转BOOTDEF1),我应该直接向GPIO28&29发送“A”来测试是否修改成功?还是需要进行其他操作?

    仿真引导的一个巨大优势是、您可以通过加载引导 ROM 源来逐步执行和调试器件引导 ROM。 在调试会话中、转到"Run"菜单并选择"Edit source search paths..." 这将打开一个类似如下的对话框:

    然后、您可以单击"添加"按钮以添加以下路径:C2000C2000\libraries\boot_rom\f28P65x\rev0\rom_sources\CPU1\f28P65x_rom Ware_Root 这将使您能够查看/调试器件在引导 ROM 和 SCI 引导加载程序中的当前位置。 如果成功使用 BMSP 配置了 BOOTDEF1、则可以看到器件进入引导 ROM 中的 SCI 引导加载程序。

  • 您好,我根据你的指引找到了F28P65x_rom中,但是我没有Ware_Root这个文件/文件夹,我的C2000_WARE版本是C2000Ware_5_04_00_00,然后在论坛中无法显示您发的图片,如下图所示:

    我的疑问如下:

    1.您能说明我需要添加的具体路径吗?

    2.更改EMU-BOOT从哪里可以看到我处于哪一个BOOT中呢?

  • 您好

    ,但是我没有Ware_Root这个文件/文件夹,我的C2000_WARE版本是C2000Ware_5_04_00_00

    是正确的文件夹。 "C2000Ware"是指"C2000Ware_5_04_00_00"文件夹、即基本的 Ware_Root 文件夹。

    2.更改EMU-BOOT从哪里可以看到我处于哪一个BOOT中呢?

    加载引导 ROM 源文件后、可以查看/调试器件在引导 ROM 中的位置、并查看正在调用哪个引导加载程序。

  • 您好,

    我使用上图中的选项加载了F28P65x_CPU1_ROM.out,但是在运行的时候他一直跳进下图这个中断,我该如何解决这个问题

  • 您好

    您能否尝试逐步调试引导 ROM 以查看导致 ITRAP 的原因? 您可能必须设置断点才能越过较长的器件初始化循环。

  • 您好,

    我单独调试发现在cpubrom_init_boot.asm中无法显示当前步骤,出现了运行到注释里面?如下图所示

    并且不知为何,我在debug中改变BMSP的电平,按重启按钮之后无法改变bootmode,CPU1BROM_bootMode的值不变,使用万用表测量高低电平分别为2.787,0.336

  • 您好

    您可以对 EMU-BOOTPIN-CONFIG 和 EMU-BOOTDEF 寄存器配置执行 CPU 复位(而不是调试重新启动)、以便器件识别。 您在配置仿真启动寄存器后是否执行了该操作? 这可能就是它达到 ITRAP 的原因。

  • 之前达到ITRAP的原因可能是由于我的flash中没有程序,意思是更改EMU-BOOTPIN/EMU-BOOTDEF就能实现CPU复位嘛?还是说有别的方法执行CPU复位

  • 您好

    根据 F28P65x TRM:

    如果未对闪存进行编程、则调用 USB 引导加载程序。

    您可以在配置仿真启动寄存器后、在调试会话中(Run > Reset > CPU Reset)时通过 CCS 执行 CPU 复位。