www.ti.com
Bootloader Code Listing (V3.0)
// TI File $Revision: /main/3 $
// Checkin $Date: January 10, 2005
15:57:54 $
//###########################################################################
//
// FILE:
SPI_Boot.c
//
// TITLE:
280x SPI Boot mode routines
//
// Functions:
//
//
Uint32 SPI_Boot(void)
//
inline void SPIA_Init(void)
//
inline void SPIA_Transmit(u16 cmdData)
//
inline void SPIA_ReservedFn(void);
//
Uint32 SPIA_GetWordData(void)
//
// Notes:
//
//###########################################################################
// $TI Release:$
// $Release Date:$
//###########################################################################
#include "DSP280x_Device.h"
#include "280x_Boot.h"
// Private functions
inline void SPIA_Init(void);
inline Uint16 SPIA_Transmit(Uint16 cmdData);
inline void SPIA_ReservedFn(void);
Uint16 SPIA_GetWordData(void);
// External functions
extern void CopyData(void);
Uint32 GetLongData(void);
//#################################################
// Uint32 SPI_Boot(void)
//--------------------------------------------
// This module is the main SPI boot routine.
// It will load code via the SPI-A port.
//
// It will return a entry point address back
// to the ExitBoot routine.
//--------------------------------------------
Uint32 SPI_Boot()
{
Uint32 EntryAddr;
// Assign GetWordData to the SPI-A version of the
// function.
GetWordData is a pointer to a function.
GetWordData = SPIA_GetWordData;
// 1. Init SPI-A and set
//
EEPROM chip enable - low
SPIA_Init();
// 2. Enable EEPROM and send EEPROM Read Command
SPIA_Transmit(0x0300);
// 3. Send Starting for the EEPROM address 16bit
//
Sending 0x0000,0000 will work for address and data packets
SPIA_GetWordData();
// 4. Check for 0x08AA data header, else go to flash
if(SPIA_GetWordData() != 0x08AA) return FLASH_ENTRY_POINT;
// 5.Check for Clock speed change and reserved words
SPIA_ReservedFn();
// 6. Get point of entry address after load
SPRU722C – November 2004 – Revised October 2006
Bootloader Code Overview
67