📄 2410loader.c
字号:
/************************************************
* NAME : 2410loader.C *
* DESC : *
* History : 2002.02.25 ver 0.0 *
************************************************/
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include "option.h"
#include "def.h"
#include "system.h"
#include "2410addr.h"
#include "2410lib.h"
#include "k9s1208.h"
#include "uart.h"
#define DOWNLOAD_ADDRESS _RAM_STARTADDRESS+0x1000000
#define IMAGE_SIZE 25 //block number
//void (*run)(void)=(void (*)(void))(DOWNLOAD_ADDRESS);
void (*run)(void)=void (*)Main();
void Port_Init(void);
void Delay(int);
void printf(char *pt) ;
volatile unsigned char *downPt;
//****************************[SYSTEM]****************************************//
void Sys_Init(void)
{
ChangeMPllValue(0x58,0x1,0x1); //Fin=12MHz FCLK=192MHz
ChangeClockDivider(1,1); // 1:2:4
MMU_SetAsyncBusMode(); //if not ,arm will operate by hclk
Port_Init();
Uart_Init(PCLK, 115200);
NF_Init();
uda1341_Init();
//Usb_Init();
//MMU_EnableMMU();
MMU_EnableICache();
MMU_EnableDCache();
}
void loader_main(void)
{
register i,j;
int tmp;
Sys_Init();
printf("\r\nNand Flash Booting Start...\n");
downPt=(unsigned char *)DOWNLOAD_ADDRESS;
j=0;
while(j<(IMAGE_SIZE))
{
j++;
for(i=0;i<32;i++) // Read 32 page
{
tmp = NF_ReadPage(j, i, (U8 *)downPt); //(U32 block,U32 page,U8 *buffer)
if(!tmp)
{
if(i!=0)
{
printf("\r\nLoading Error!!!\n");
while(1);
}
break; // ECC error is considered as a bad block.
}
downPt += 512; // Next page
}
}
printf("NAND Boot End\n");
run();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -