bootloader.c

来自「lpc3250 example program」· C语言 代码 · 共 50 行

C
50
字号
/***********************************************************************/
/*  This file is part of the ARM Toolchain package                     */
/*  Copyright KEIL ELEKTRONIK GmbH 2003 - 2008                         */
/***********************************************************************/
/*                                                                     */
/*  Bootloader.C 2-nd level bootloader for Philips LPC32x0             */
/*                                                                     */
/***********************************************************************/

#include <string.h>

#define STACK_SIZE       64             // Stack Size
#define USER_PROG_OFS    0x8000         // Offset of user program in NOR Flash
#define MAX_USER_PROG_SZ (0x1FC000)     // Maximal size of user program
#define EXT_NOR          (0xE0000000)   // Start address of external NOR Flash
#define EXT_SDRAM        (0x80000000)   // Start address of external SDRAM

// Pointer to start of the External SDRAM where Application is copied
typedef void (*fnc)(void);
const fnc AppEntry = (fnc) EXT_SDRAM;

/*************************** 2-nd Level Bootloader *****************************/

/*- main () --------------------------------------------------------------------
 *
 *  C routine for NOR Flash Initialization and copying code from NOR Flash
 *  to External SDRAM
 *    Parameter:
 *    Return Value:   0 - OK
 */
           
int main (void) {
  unsigned long *src, *dest;
           long size;

  size = (*((         long *) (EXT_NOR + USER_PROG_OFS + 0x14)));
  src  =   ((unsigned long *) (EXT_NOR + USER_PROG_OFS));
  dest =   ((unsigned long *) (EXT_SDRAM));

  if (size == 0xFFFFFFFF) while (1);    // If no user program size information
  if (size == 0xE1A00000)               // Unknown size (NOP instruction)
    size = MAX_USER_PROG_SZ;

  memcpy (dest, src, size);             // Copy user program to Extarnal SDRAM
  AppEntry();                           // Start the user Application
  return (0);
}

/*******************************************************************************/

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?