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

📄 main.c

📁 spi_boot_example.tar.gz可以为大家在使用 Cirrus logic的ARM9芯片是提供帮助
💻 C
字号:
/*================================================================== * *  This file is part of a small Nand flash bootloader designed to *  be loaded via EP93xx SPI boot. * *  Copyright Cirrus Logic Corporation, 2007.  All rights reserved * ==================================================================*/#include <io.h>#include <boot.h>#define COUNT_OF_BYTES_TO_COPY 16384const u32 pattern1=0x12345678;const u32 pattern2=0x87654321;const u32 pattern3=0xabcdef12;const u32 pattern4=0x12abcdef;int check_sdram(int sdram_base){    volatile u32 *sdram;    int fail=0;    sdram = (u32 *) sdram_base;        sdram[0]=pattern1;    sdram[1]=pattern2;    sdram[2]=pattern3;    sdram[3]=pattern4;    if(sdram[0]!=pattern1)    {	fail++;    }    if(sdram[1]!=pattern2)    {	fail++;    }    if(sdram[2]!=pattern3)    {	fail++;    }    if(sdram[3]!=pattern4)    {	fail++;    }	    return fail;}extern void set_sp(u32 sp);extern u32 get_pc(void);void sdram_setup_and_scan(void){    // devcfg value for 32bit: 0x00210028 sdram_cmd 0x00008800 , for 16bit: 0x0021002c sdram_cmd 0x00004600    //32 bit setup:    puts("SDRAM");    sdram_setup( SDRAM_LOCATION, 0x00210028, 0x00008800 , 0);    if( check_sdram(SDRAM_LOCATION) )    {    //16 bit setup:	sdram_setup( SDRAM_LOCATION, 0x0021002c, 0x00004600 , 0);	if( check_sdram(SDRAM_LOCATION) )	{	    puts("Fail");	    while(1);	}	else	    puts("16 OK\r\n");    }    else	puts("32 OK\r\n");}u32 read_spi_word(u32 adr);    void start_C(u32 bootmode){	    int i;    u32 dat;    u32 *sdram=(u32 *) SDRAM_LOAD_ADDRESS;        sdram_setup_and_scan();    for(i=0; i<COUNT_OF_BYTES_TO_COPY; i+=4)    {	dat = read_spi_word(i+0x804);	sdram[i>>2]=dat;    }    puts("exe");    set_pc((u32) sdram);    while(1)    {    }}

⌨️ 快捷键说明

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