⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 LPC2220的Bootloader自己写的,和 周立功的模版实现完全不一样
💻 C
字号:
//***************************************************************
//  ARM BOOT ROUTE VER1.0@0x0C000000 for 44B0X release
//  bjwork2007@gmail.com
//  chenjun @ 2005-6-10
//***************************************************************


#include "..\inc\usart.h"
#include "..\inc\sysinit.h"
#include "..\inc\common.h"
#include "..\inc\utilities.h"
#include "..\inc\command.h"
#include "..\inc\NorFlash.h"

extern unsigned int ResetEntry;
extern unsigned int BaseOfROM;
extern unsigned int TopOfROM;
extern unsigned int BaseOfBSS;
extern unsigned int BaseOfZero;
extern unsigned int EndOfBSS;

/********************************************************************************************/
int main()
{
	unsigned int i,AppBootSize,time_out;
	void (*fp)(void);
	
	PortInit();
	puts("\n\n*******************************************************************************\n");
	puts("**                           BJWORK ARM CORE STUDIO                          **\n");
	puts("**                   NXP LPC2220/2210 ARM7TDMI BIOS Loader                   **\n");
	puts("**                       VER 1.0.0.0  Chenjun 2008-07-20                     **\n");
	puts("*******************************************************************************\n\n");

	printf("BaseOfROM	= 0x%.8x\n",BaseOfROM);
	printf("TopOfROM	= 0x%.8x\n",TopOfROM);
	printf("BaseOfBSS	= 0x%.8x\n",BaseOfBSS);
	printf("BaseOfZero	= 0x%.8x\n",BaseOfZero);
	printf("EndOfBSS	= 0x%.8x\n\n",EndOfBSS);
	
	printf("BIOSBase	= 0x%.8x	MaxSize = %dKBs\n",ROM_BASE,(APPBootBase-ROM_BASE)/1024);
	printf("APPBootBase	= 0x%.8x	MaxSize = %dKBs\n",APPBootBase,(APPBase-APPBootBase)/1024);
	printf("APPBase 	= 0x%.8x	MaxSize = %dKBs\n\n",APPBase,(ROM_BASE+FlashSize-APPBase)/1024);
	
	printf("LPC2220 use %dMHz extern crystal\n",(EXT_OSC_CLK/1000000));
	printf("LPC2220 is running at %dMHz\n", (unsigned int)(MCLK/1000000));
	printf("LPC2220 VPB is running at %dMHz\n", (unsigned int)(PCLK/1000000));
	printf("Serial Baud rate is %d @ UART0\n", (SERIAL_BAUD));
	puts("Build date:");puts(__DATE__);putch('-');puts(__TIME__);putch('\n');
	printf("Flash ID is:%.8x\n\n", GetFlashID());	
	puts("Press any key to entry BIOS setup!\n");
    time_out = 0x10000;	
	do{
		if(kbhit())
		{
			goto BiosEntry;
		}
	  }while(--time_out);

    AppBootSize = *(unsigned int *)(APPBootBase);
    if((AppBootSize > 0) && (AppBootSize < (APPBase-APPBootBase)))
    {
	    puts("Boot from BIOS...Loading...");
    	for(i=0;i<AppBootSize;i++)
    	{
    		*(unsigned char *)(i+0x82000000) = *(unsigned char *)(i+APPBootBase+0x4);
    	}	
    	puts("Successfully!\n\n");
    	fp = (void (*)(void))(0x82000000);
		(*fp)();
    }
BiosEntry:
	puts("Press 'ls' to list command!\n\n");
	prompt();
    console();
}   

⌨️ 快捷键说明

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