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

📄 2410loader.c

📁 源代码为ARM2410上NAND FLASH 的驱动程序
💻 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 "2410addr.h"
#include "2410slib.h"
#include "2410lib.h"
#include "2410addr.h"
#include "k9s1208.h"
#include "mmu.h"

#define DOWNLOAD_ADDRESS	 	_RAM_STARTADDRESS+0x1000000
#define LED_ON	0xa
#define LED_OFF	0x0

#define OS_IMAGE_SIZE 25

void (*run)(void)=(void (*)(void))(DOWNLOAD_ADDRESS);
void Port_Init(void);
void Led_Display(int);
void Delay(int);

volatile unsigned char *downPt;

void T4_Start(void);
void T4_Stop(void);
char *hex2char(int val);
 

void Main(void)
{
  register i,j;
  int tmp;
    
    //MMU_EnableICache();

    
    ChangeClockDivider(1,1);	   		// 1:2:4
    ChangeMPllValue(0x5c,0x4,0x0);  //Fin=12MHz FCLK=200MHz
        
    Port_Init();

    Uart_Init(PCLK, 115200);
    downPt=(unsigned char *)DOWNLOAD_ADDRESS;

    NF_Init();

   // Led_Display(LED_OFF);
   
    T4_Start();
       	
    j=0;
    while(j<(OS_IMAGE_SIZE)) {    // Read 1~807 block(13635072B) for WinCE image
			j++;
			for(i=0;i<32;i++) {  // Read 32 page
				tmp = NF_ReadPage(j, i, (U8 *)downPt);
	    	if(!tmp) {  //(U32 block,U32 page,U8 *buffer)
  				if(i!=0) 	{
		    		Uart_SendString("\r\nLoading Error!!!\n");	
		    		while(1);
					}
					break;		    // ECC error is considered as a bad block.
	    	}
  	    downPt += 512;	    // Next page
			}
    }

    T4_Stop();

    run();
}



void T4_Start(void)
{
    Uart_SendString("\r\nNand Flash Booting Start...\n");
    
   
    
}

void T4_Stop(void)
{
   //rTCON=(1<<22)|(0<<20);  //Stop T4   
   Uart_SendString("NAND Boot End\n");
   
}


⌨️ 快捷键说明

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