主题中讨论的其他器件:UNIFLASH
我有自己的定制 PCB、可以在其中使用 Uniflash trhough 串行引导加载程序、通过启用引导加载程序后门引脚以及在复位后置于所需的逻辑电平来对其进行编程。
我想知道是否只能通过软件来实现这一点。 例如、强制芯片复位、并在所需的逻辑电平中设置该引脚的方式?
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.
我有自己的定制 PCB、可以在其中使用 Uniflash trhough 串行引导加载程序、通过启用引导加载程序后门引脚以及在复位后置于所需的逻辑电平来对其进行编程。
我想知道是否只能通过软件来实现这一点。 例如、强制芯片复位、并在所需的逻辑电平中设置该引脚的方式?
您好、Nelson、
根据该文档: https://www.ti.com/lit/an/swra466d/swra466d.pdf?ts=1676048644192
我认为、通过在系统复位之前将 SET_CCFG_IMAGE_VALVE_CONF_IMAGE_VALID (《技术参考手册》第11.2.1.18节)设置为另一个值、您可以重新引导至 ROM 引导加载程序。
请告诉我它是如何工作的。
Arthur
尊敬的 Arthur:
感谢您的回答。
我想用一种方法来测试它。 例如、当按下按钮5秒时、将调用函数。 此类函数如下所示:
void function(){
SET_Register (SET_CCFG_IMAGE_VALID _CONF_IMAGE_VALID);// 我不知道写入该寄存器的确切正弦值是多少,您能为我提供帮助吗?
SysCtrlSystemReset();//重置 MCU
}
然后 MCU 将复位并处于引导加载程序模式。 是这样吗?
提前感谢您。
您好、Nelson、
您查找的"set_register"调用实际上是"HWREG()"、如下所示:
在 driverlib 的代码中:
现在、您已设置为尝试重置引导加载程序。
此致、
Arthur
NVM。
这解决了我的问题:
在 SSF_processEvents 函数中的文件 SSF.c 中,我修改了调用 HWREG 和 SysCtrlSystemReset()函数的代码,如下所示:
if (事件和 tamper_press_evt)
{
SSF_updateStatusFlag (STATUS_FLAGS_MOTH、SET_FLAG);
sensor_sendSwEvent (Smsgs_cmdIds_sw_tamperEvt);
LED_startbinding (ledGreenHandle、500、5);
HWREG (CCFG_O_IMAGE_VALLED_CONF)= 0XFFFFFFFF;
SysCtrlSystemReset();//重置 MCU
Util_clearEvent (&Events、tamper_press_evt);
}
我用 CSS 刷写了 Launchpad。 之后、我按下左侧按钮。 在这里、LaunchPad 已重新启动并进入引导加载程序模式。 然后、我能够使用 Uniflash 通过串行引导加载程序刷写另一个程序。
感谢 Arthur 的帮助!