TI论坛
直播中

杨芳

7年用户 287经验值
私信 关注
[问答]

28075的USB-BOOT问题

背景:之前是用SCI boot mode进行boot程序烧写的。现有的28075板子上GPIO72与GPIO84默认接高电平,当要进行SCI boot时将GPIO72拉低即可,正常跑flash时不对GPIO72进行操作。
现在想要通过USB boot mode进行boot程序烧写。
已知USB-boot模式的选择是在Get-mode下即GPIO72/84均为高电平,key=0x5A ,EMU_BMODE=0x0C。
问题与猜测:
1.key与EMU_BMODE的赋值需要软件操作,则在进入USB boot mode 前是否需要一次程序编译
2.由于现有28075板子上GPIO72/84默认为高电平,Get-mode设置完成后,是否每次对芯片上电都会进入USB boot mode,而无法进入flash跑程序
     2.1在2成立的情况下,为避免每次上电后不进入flash,现有思路为:通过USB boot mode烧写的程序内加入对key与EMU_BMODE的修改,使下次上电后可进入flash
     2.2在2.1成立的情况下,若需要第二次通过USB boot mode进行程序烧写,是否需要再次进行步骤1、2、2.1
3.已知通过将GPIO72/84均置低电平并上电后可进入Parallel boot mode,在无Valid KeyValue(0x08AA)时“Return Flash EntryPoint”,是否可理解为Parallel boot mode下不进行其他操作的话,可自动进入Flash。如此可行的话,便可通过硬件控制芯片进入USB boot mode或Parallel boot mode(即进入flash)
4.或其他解决USB boot 程序烧录与二次烧录的方法,望各位指点;有描述不清或理解错误的地方,还请指出。
谢谢

回帖(4)

冯敬宇

2018-12-18 11:16:04
现在想要通过USB boot mode进行boot程序烧写。
已知USB-boot模式的选择是在Get-mode下即GPIO72/84均为高电平,key=0x5A ,EMU_BMODE=0x0C。
ERIC: C2000的引导要分成两种情况,一种是带仿真器的情况,一种是不带仿真器的情况。 EMU_BMODE是有仿真器的情况下才用的,没有仿真器的情况,是要靠OPT_BMODE,即只能一次性编程。
问题与猜测:
1.key与EMU_BMODE的赋值需要软件操作,则在进入USB boot mode 前是否需要一次程序编译
Eric:  如果是带仿真器,那么就要在仿真器时去膝盖这个寄存器,然后复位芯片再运行。
2.由于现有28075板子上GPIO72/84默认为高电平,Get-mode设置完成后,是否每次对芯片上电都会进入USB boot mode,而无法进入flash跑程序
     2.1在2成立的情况下,为避免每次上电后不进入flash,现有思路为:通过USB boot mode烧写的程序内加入对key与EMU_BMODE的修改,使下次上电后可进入flash
     2.2在2.1成立的情况下,若需要第二次通过USB boot mode进行程序烧写,是否需要再次进行步骤1、2、2.1
Eric: 如果你配置了从USB启动,那么每次就会从USB开始启动,当然你要是带仿真器的话,你想干嘛就干嘛。不带仿真器的情况,因为判断的寄存器都是在OTP上,所以修改不了。
3.已知通过将GPIO72/84均置低电平并上电后可进入Parallel boot mode,在无Valid KeyValue(0x08AA)时“Return Flash EntryPoint”,是否可理解为Parallel boot mode下不进行其他操作的话,可自动进入Flash。如此可行的话,便可通过硬件控制芯片进入USB boot mode或Parallel boot mode(即进入flash)
Eric: 是,你所得对,那么就是可以等待,然后应该就会进入flash入口地址,从说明上来讲。你可以用SCI boot先测试一下吧。
4.或其他解决USB boot 程序烧录与二次烧录的方法,望各位指点;有描述不清或理解错误的地方,还请指出。
Eric:另外的一个思路就是写在线升级bootloader, 把USB初始化成串口类,然后自己做一个USB串口类的bootloader。
                                                                         - ERIC
举报

杨芳

2018-12-18 11:30:57
引用: guigui_7044 发表于 2018-12-18 06:19
现在想要通过USB boot mode进行boot程序烧写。
已知USB-boot模式的选择是在Get-mode下即GPIO72/84均为高电平,key=0x5A ,EMU_BMODE=0x0C。
ERIC: C2000的引导要分成两种情况,一种是带仿真器的情况,一种是不带仿真器的情况。 EMU_BMODE是有仿真器的情况下才用的,没有仿真器的情况,是要靠OPT_BMODE,即只能一次性编程。

您解答的很详细,十分感谢!
“Eric:另外的一个思路就是写在线升级bootloader,把USB初始化成串口类,然后自己做一个USB串口类的bootloader",
但这部分不是很理解,”把USB初始化成串口类“是指软件程序编译吗?比如例程中的USB虚拟串口功能?
或者是硬件的USB转串口模块?
举报

冯敬宇

2018-12-18 11:47:50
引用: chm6 发表于 2018-12-18 06:34
您解答的很详细,十分感谢!
“Eric:另外的一个思路就是写在线升级bootloader,把USB初始化成串口类,然后自己做一个USB串口类的bootloader",
但这部分不是很理解,”把USB初始化成串口类“是指软件程序编译吗?比如例程中的USB虚拟串口功能?

另外的一个思路就是写在线升级bootloader,把USB初始化成串口类,然后自己做一个USB串口类的bootloader",
Eric:
这个指的是用USB的例程如下,把USB配置成串口类,然后电脑接上USB之后,装上如下驱动,就会变成串口,上位机就可以用串口助手之类对它进行收发数据。
然后你自己利用这个例程,还有FLASH API,可以自己写一个bootloader烧写在芯片的某个flash扇区,当接到升级指令之后,就跳转到你这个bootloader的入口,这样就可以升级啦。至于其中的协议,你可以自己随意定义。
C:ticontrolSUITEdevice_supportF2837xDv210F2837xD_examples_Cpu1u***_dev_serial
C:ticontrolSUITEdevice_supportF2837xDv210F2837xD_commonwindows_drivers
                                                                         - ERIC
举报

杨芳

2018-12-18 12:05:22
引用: guigui_7044 发表于 2018-12-18 06:51
另外的一个思路就是写在线升级bootloader,把USB初始化成串口类,然后自己做一个USB串口类的bootloader",
Eric:
这个指的是用USB的例程如下,把USB配置成串口类,然后电脑接上USB之后,装上如下驱动,就会变成串口,上位机就可以用串口助手之类对它进行收发数据。

好的,再次感谢!
举报

更多回帖

发帖
×
20
完善资料,
赚取积分