📄 2410my.c
字号:
/************************************************ * NAME : 2410loader.C * * DESC : * * History : 2002.02.25 ver 0.0 *************************************************/#include <stdlib.h>#include <string.h>#include "option.h"#include "def.h"#include "2410addr.h"#include "2410slib.h"#include "2410lib.h"#include "2410addr.h"#include "mmu.h"#include "2410etc.h"#include "flash.h"/*void Isr_Init(void);void T4_Start(void);void T4_Stop(void);char *hex2char(int val);*/void WriteMemory_chen(void);void ReadMemory_chen(void);void Write_D_Mem(void);void Read_D_Mem(void);void Main(void){ char i; // MMU_Init(); // MMU_EnableICache(); // ChangeClockDivider(0,0); // 1:1:1 // ChangeClockDivider(0,1); // 1:1:2 // rCLKDIVN |= (1<<2); // 1:4:4// ChangeClockDivider(1,0); // 1:2:2 ChangeClockDivider(1,1); // 1:2:4 // ChangeMPllValue(0xa1,0x3,0x3); // FCLK=50.7MHz // ChangeMPllValue(0x7f,0x2,0x2); // FCLK=101.25MHz// ChangeMPllValue(0x96,0x5,0x1); // FCLK=135428571Hz // ChangeMPllValue(0x2a,0x1,0x0); // FCLK=200MHz // ChangeMPllValue(0x5c,0x1,0x1); // FCLK=200MHz ChangeMPllValue(0x5c,0x4,0x0); // FCLK=200MHz// ChangeMPllValue(0x8e,0x7,0x0); // FCLK=200MHz // ChangeMPllValue(0xa1,0x3,0x1); // FCLK=202.8MHz // ChangeMPllValue(0x66,0x1,0x1); // FCLK=220MHz // ChangeMPllValue(0x69,0x1,0x1); // FCLK=226MHz // ChangeMPllValue(0x96,0x2,0x1); // FCLK=237MHz// ChangeMPllValue(0x7d,0x4,0x0); // FCLK=266MHz Port_Init();//=== PORT E GROUP //Ports : GPE15 GPE14 GPE13 GPE12 GPE11 GPE10 GPE9 GPE8 GPE7 GPE6 GPE5 GPE4 //Signal : IICSDA IICSCL SPICLK SPIMOSI SPIMISO SDDATA3 SDDATA2 SDDATA1 SDDATA0 SDCMD SDCLK I2SSDO //Binary : 10 10 , 10 10 , 10 10 , 01 01 , 01 10 , 01 10 , //------------------------------------------------------------------------------------------------------- //Ports : GPE3 GPE2 GPE1 GPE0 //Signal : I2SSDI CDCLK I2SSCLK I2SLRCK //Binary : 10 10 , 10 10 rGPECON =0xaaa566aa; // rGPEUP = 0xffff; // The pull up function is disabled GPE[15:0] rGPEDAT |=0x03a0; //let the 4 led shut off// Isr_Init();// Rtc_Init(); // Uart_Init(0,115200); Uart_Init(PCLK,115200); Uart_Select(0); Uart_Printf("Intel 28f128 program\n"); Uart_Printf(".bin file load begin 0x31000000\n"); Program28F128J3A();// by ldl add 2004/8/29 //ProgramFlash();// by ldl comment 2004/8/29 //ReadPageMode(); // WriteMemory_chen(); //ReadMemory_chen(); //Write_D_Mem(); // Read_D_Mem(); while(1); // T4_Start(); // T4_Stop(); }//********************[ Write 32 bit Memory ]**************************************void WriteMemory_chen(void){ int i, *pt; Uart_Printf("[ SDRAM Write Test(0x32000000~0x32bfffff, 12MBytes) ]\n"); pt=(int *)0x32000000; for(i=0;i<0xc00000;i+=4) { *pt ++= i; if((i%0x10000)==0) Uart_Printf("%x\t",i); } Uart_Printf("\nWriting is completed.\n");}//********************[ Read 32 bit Memory ]***************************************void ReadMemory_chen(void){ int i,j,err = 0; int *pt; Uart_Printf("[ SDRAM Read Test(0x32000000~0x32bfffff, 12MBytes) ]\n"); pt = (int *)0x32000000; for(i=0;i<0xc00000;i+=4) { j = *pt; if(j!=i) { Uart_Printf("%x = %x\n",(U32)pt,j); err++; } pt++; if((i%0x10000)==0) Uart_Printf("%x\t",j); } if(err==0) Uart_Printf("\nMemory read test : O.K.\n"); else Uart_Printf("\nMemory read test : FAIL!!!\n");}//********************[ Write dual Memory, 16 bit]**************************************void Write_D_Mem(void){ int pt,i; Uart_Printf("[ Dual port RAM Write Test(0x20000000~0x20010000, 64KBytes) ]\n"); pt=0x20000000; for(i=0;i<0x10000;i+=2) { *((U16 *)pt) = (U16)i; if((i%0x1000)==0) { Uart_Printf("%x--%x\t",(U32)pt,(U16)i); } pt=pt+2; } Uart_Printf("\nWriting is completed.\n");}//********************[ Read dual Memory, 16 bit ]***************************************void Read_D_Mem(void){ int i,j,err = 0; int pt; Uart_Printf("[ Dual port RAM Read Test(0x20000000~0x20010000, 64KBytes) ]\n"); pt = 0x20000000; for(i=0;i<0x10000;i+=2) { j = *((U16 *)pt); //read mem if(j!=i) { Uart_Printf("%x = %x\n",(U32)pt,(U16)j); err++; } if((i%0x1000)==0) { Uart_Printf("%x--%x\t",(U32)pt,(U16)j); //rGPEDAT ^=0x03a0; } pt=pt+2; } if(err==0) Uart_Printf("\nMemory read test : O.K.\n"); else Uart_Printf("\nMemory read test : FAIL!!!\n");}/*//===================================================================void Isr_Init(void){ pISR_UNDEF = (unsigned)HaltUndef; pISR_SWI = (unsigned)HaltSwi; pISR_PABORT = (unsigned)HaltPabort; pISR_DABORT = (unsigned)HaltDabort; rINTMOD = 0x0; //All=IRQ mode// rINTCON=0x5; //Non-vectored,IRQ enable,FIQ disable rINTMSK = BIT_ALLMSK; //All interrupt is masked. rINTSUBMSK = BIT_SUB_ALLMSK; //All sub-interrupt is masked. <- April 01, 2002 SOP// rINTSUBMSK = ~(BIT_SUB_RXD0); //Enable Rx0 Default value=0x7ff// rINTMSK = ~(BIT_UART0); //Enable UART0 Default value=0xffffffff // pISR_UART0=(unsigned)RxInt; //pISR_FIQ,pISR_IRQ must be initialized}//===================================================================*//*void T4_Start(void){ rTCFG0=0xff00; rTCFG1=(0x3<<16); //T4=16/256 rTCNTB4=0xffff; rTCON=(1<<22)|(1<<21); //Manual update rTCON=(1<<22)|(1<<20); //Start T4 }void T4_Stop(void){ int cnt; rTCON=(1<<22)|(0<<20); //Stop T4 cnt=0xffff-rTCNTO4; Uart_SendString("NAND Boot End\n"); Uart_SendString("Boot time=nTCNT*82uS. nTCNT=0x"); Uart_SendString(hex2char((cnt&0xf000)>>12)); Uart_SendString(hex2char((cnt&0x0f00)>>8)); Uart_SendString(hex2char((cnt&0x00f0)>>4)); Uart_SendString(hex2char((cnt&0x000f)>>0)); Uart_SendString("\n\n");}char *hex2char(int val){ static char str[2]; str[1]='\0'; if(val<=9)str[0]='0'+val; else str[0]=('a'+val-10); return str;}*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -