Bootloader Code Listing (V3.0)
Uint32 Parallel_Boot()
{
Uint32 EntryAddr;
// Setup for Parallel boot
Parallel_GPIOSelect();
// Check for the key value. Based on this the data will
// be read as 8-bit or 16-bit values.
if (Parallel_CheckKeyVal() == ERROR) return FLASH_ENTRY_POINT;
// Read and discard the reserved words
ReadReservedFn();
// Get the entry point address
EntryAddr = GetLongData();
// Load the data
CopyData();
return EntryAddr;
}
//#################################################
// void Parallel_GPIOSelect(void)
//------------------------------------------
// Enable I/O pins for input GPIO 15:0. Also
// enable the control pins for HOST_CTRL and
// DSP_CTRL.
//------------------------------------------
inline void Parallel_GPIOSelect()
{
EALLOW;
// Enable pull-ups for GPIO Port A 15:0
// GPIO Port 15:0 are all I/O pins
// and DSP_CTRL/HOST_CTRL
// GpioCtrlRegs.GPAPUD.bit.GPIO15 = 0;
// GpioCtrlRegs.GPAPUD.bit.GPIO14 = 0;
// GpioCtrlRegs.GPAPUD.bit.GPIO13 = 0;
// GpioCtrlRegs.GPAPUD.bit.GPIO12 = 0;
// GpioCtrlRegs.GPAPUD.bit.GPIO11 = 0;
// GpioCtrlRegs.GPAPUD.bit.GPIO10 = 0;
// GpioCtrlRegs.GPAPUD.bit.GPIO9 = 0;
// GpioCtrlRegs.GPAPUD.bit.GPIO8 = 0;
// GpioCtrlRegs.GPAPUD.bit.GPIO7 = 0;
// GpioCtrlRegs.GPAPUD.bit.GPIO6 = 0;
// GpioCtrlRegs.GPAPUD.bit.GPIO5 = 0;
// GpioCtrlRegs.GPAPUD.bit.GPIO4 = 0;
// GpioCtrlRegs.GPAPUD.bit.GPIO3 = 0;
// GpioCtrlRegs.GPAPUD.bit.GPIO2 = 0;
// GpioCtrlRegs.GPAPUD.bit.GPIO1 = 0;
// GpioCtrlRegs.GPAPUD.bit.GPIO0 = 0;
// GpioCtrlRegs.GPAPUD.bit.DSP_CTRL = 0;
// GpioCtrlRegs.GPAPUD.bit.HOST_CTRL = 0;
GpioCtrlRegs.GPAPUD.all &= 0xF3FF0000;
// 0 = I/O pin 1 = Peripheral pin
GpioCtrlRegs.GPAMUX1.all = 0x0000;
GpioCtrlRegs.GPAMUX2.bit.DSP_CTRL = 0;
GpioCtrlRegs.GPAMUX2.bit.HOST_CTRL = 0;
// HOST_CTRL is an input control
// from the Host
// to the DSP Ack/Rdy
// DSP_CTRL is an output from the DSP Ack/Rdy
// 0 = input 1 = output
SPRU722C – November 2004 – Revised October 2006 Bootloader Code Overview 75
Submit Documentation Feedback