我只设置了3个断点。 前2行是:
104 字节数据= SCI_readCharBlockingNonFIFO (SCIA_BASE);
116 SCI_writeCharNonBlocking (SCIA_BASE、byteData);
为什么要跳过它们? 没有流量控制。
CCS 最后在此行停止:
126返回 FLASH_UPDATE_ERROR_SCI_DATA_WORD_KEY;
uint32_t SCI_Boot(uint32_t bootMode)
{
uint32_t entryAddress;
uint16_t byteData;
/*
//
// CPU1 Patch/Escape Point 13
//
entryAddress = CPU1BROM_TI_OTP_ESCAPE_POINT_13;
if((entryAddress != 0xFFFFFFFFUL) &&
(entryAddress != 0x00000000UL))
{
//
// If OTP is programmed, then call OTP patch function
//
((void (*)(void))entryAddress)();
}
*/
//
// Check if SCI is enabled on device or not
//
//if((HWREG(DEVCFG_BASE + SYSCTL_O_DC8) & SYSCTL_DC8_SCI_A) == 0U)
if(SysCtl_isPeripheralPresent(SYSCTL_PERIPH_PRESENT_SCIA) != 0x01)
{
return(FLASH_UPDATE_ERROR_SCIA_NOT_ENABLED);
}
//
// Assign GetWordData to the SCI-A version of the
// function. GetWordData is a pointer to a function.
//
uint16_t (*GetWordData)(void);
GetWordData = SCIA_GetWordData;
//
// Initialize the SCI-A port for communications
// with the host.
//
//
// Enable the SCI-A clocks
//
SysCtl_enablePeripheral(SYSCTL_PERIPH_CLK_SCIA);
SysCtl_setLowSpeedClock(SYSCTL_LSPCLK_PRESCALE_4);
EALLOW;
HWREGH(SCIA_BASE + SCI_O_FFTX) = SCI_FFTX_SCIRST;
//
// 1 stop bit, No parity, 8-bit character
// No loopback
//
HWREGH(SCIA_BASE + SCI_O_CCR) = (SCI_CONFIG_WLEN_8 | SCI_CONFIG_STOP_ONE);
SCI_setParityMode(SCIA_BASE,SCI_CONFIG_PAR_NONE);
//
// Enable TX, RX, Use internal SCICLK
//
HWREGH(SCIA_BASE + SCI_O_CTL1) = (SCI_CTL1_TXENA | SCI_CTL1_RXENA);
//
// Disable RxErr, Sleep, TX Wake,
// Disable Rx Interrupt, Tx Interrupt
//
HWREGB(SCIA_BASE + SCI_O_CTL2) = 0x0U;
//
// Relinquish SCI-A from reset and enable TX/RX
//
SCI_enableModule(SCIA_BASE);
EDIS;
//
// GPIO INIT
//
//SCIBOOT_configure_gpio(bootMode);
//
// CPU1 Patch/Escape Point 13
//
entryAddress = 0;//CPU1BROM_TI_OTP_ESCAPE_POINT_13;
if((entryAddress != 0xFFFFFFFFUL) &&
(entryAddress != 0x00000000UL))
{
//
// If OTP is programmed, then call OTP patch function
//
((void (*)(void))entryAddress)();
}
//
// Perform autobaud lock with the host.
// Note that if autobaud never occurs
// the program will hang in this routine as there
// is no timeout mechanism included.
//
//SCI_lockAutobaud(SCIA_BASE);
//
// Read data
//
byteData = SCI_readCharBlockingNonFIFO(SCIA_BASE);
//
// Configure TX pin after autobaud lock
// (Performed here to allow SCI to double as wait boot)
//
//GPIO_setPadConfig(SCI_gpioTx,GPIO_PIN_TYPE_PULLUP);
//GPIO_setPinConfig(SCI_gpioTxPinConfig);
//
// Write data to request key
//
SCI_writeCharNonBlocking(SCIA_BASE,byteData);
//
// If the KeyValue was invalid, abort the load
// and return the flash entry point.
//
uint16_t gwd = 0;
gwd = SCIA_GetWordData();
if(SCIA_GetWordData() != SCI_DATA_WORD_KEY)
{
return FLASH_UPDATE_ERROR_SCI_DATA_WORD_KEY;
}

