工具/软件:Code Composer Studio
这是我之前在 e2e.ti.com/.../2601348上的主题的后续内容
我现在处于一个阶段、希望使"boot_demo"示例起作用-能够使用 LM Flasher 应用程序通过 UART 连接将映像上载到器件。 如果我在对"boot_serial"示例进行编程后尝试上载、则它可以正常工作、但在"boot_demo"之后、它不能(在两种情况下都尝试上载相同的 bin 文件)。 我修改了 main 函数、在不需要按 SW1的情况下包含到引导加载程序代码的直接跳转(请参阅下面的代码)。
由于某种原因、在使用 LM 闪存器或调试器刷写 bin 后、我无法上载该 bin。 CCS。 原因可能是什么?
main (空)
{
//
//为中断处理程序启用怠惰堆栈。 这允许使用浮点
//在中断处理程序中使用的指令,但代价是
//额外的堆栈用法。
//
ROM_FPULazyStackingEnable();
//
//将系统时钟设置为从 PLL 以120MHz 运行
//
G_ui32SysClockFreq = SysCtlClockFreqSet ((SYSCTL_XTAL_25MHz |
SYSCTL_OSC_MAIN |
SYSCTL_USE_PLL |
SYSCTL_CFG_VCO_480)、120000000);
//
//初始化每个引导加载程序类型的外设
//支持。 因为该示例旨在与任何一起使用
//启动加载程序,我们不知道实际使用的是什么,我们涵盖了所有内容
//此处为串行、以太网和 USB 使用进行基址和初始化。
//
SetupForUART();
/*
//
//使能端口 J 引脚0,以便在按下“低电平”时退出到 UART 引导加载程序。
//在 EK-TM4C1294上启用弱上拉以检测按钮
//按。
//
SysCtlPeripheralEnable (SYSCTL_Periph_GPIOJ);
while (!(SysCtlPeripheralReady (SYSCTL_Periph_GPIOJ)));
GPIOPinTypeGPIOInput (GPIO_PORTJ_BASE、GPIO_PIN_0);
HWREG (GPIO_PORTJ_BASE + GPIO_PUR)= GPIO_PIN_0;
//
//将端口 N 引脚1配置为输出。
//
SysCtlPeripheralEnable (SYSCTL_Periph_GPION);
while (!(SysCtlPeripheralReady (SYSCTL_Periph_GPION)));
GPIOPinTypeGPIOOutput (GPIO_PORTN_BASE、GPIO_PIN_1);
//
//如果未按下开关 SW1,则 LED D1以1Hz 的速率闪烁
//在开关 SW 上按探测退出闪烁程序并跳转到
//闪存引导加载程序。
//
while ((GPIOPinRead (GPIO_PORTJ_BASE、GPIO_PIN_0)& GPIO_PIN_0)!= 0x0)
{
GPIOPinWrite (GPIO_PORTN_BASE、GPIO_PIN_1、0x0);
SysCtlDelay (g_ui32SysClockFreq / 6);
GPIOPinWrite (GPIO_PORTN_BASE、GPIO_PIN_1、GPIO_PIN_1);
SysCtlDelay (g_ui32SysClockFreq / 6);
}
//
//在通过控件之前,确保 LED 已关闭。
//
GPIOPinWrite (GPIO_PORTN_BASE、GPIO_PIN_1、0x0);
//
//将控制权传递给配置了电路板的引导加载程序的任何类型
//带有。
//
*
*
JumpToBootLoader();
//
//以前的函数永远不会返回,但我们需要在返回中继续
//此处的代码可防止编译器生成警告。
//
返回(0);
}