test.c:
#include "clock.h"
int (*printf)(char *,...) = (void *)0x57e11d4c;int main()
{
/*
FOUT = MDIV X FIN / (PDIV X 2SDIV)
APLLCON is c10a0301
MPLLCON is c10a0301
1100 0001 0000 1010 0000 0011 0000 0001FOUT = 0x10a*12M/(3*2^1)
*/
printf("MPLLCON is %x\n",MPLLCON);
/*
CLK_SRC = 0x2007
0010 0000 0000 0111
DOUTapll = 532M
*/
printf("MISCCON is %x\n",MISCCON);
}
****************************************************************************
clock.h:
//interrupt
#define VIC0INTENABLE (*(volatile unsigned long *)0x71200010)
#define VIC0INTSELECT (*(volatile unsigned long *)0x7120000C)
#define VICxIRQSTATUS (*(volatile unsigned long *)0x71200000)
#define VICxRAWINTR (*(volatile unsigned long *)0x71200008)
//模拟watdong
#define VIC0SOFTINT (*(volatile unsigned long *)0x71200018)
#define VIC0SOFTINTCLAR (*(volatile unsigned long *)0x7120001C)
//watdog
#define WTCON (*(volatile unsigned long *)0x7E004000)
#define WTDAT (*(volatile unsigned long *)0x7E004004)
#define WTCNT (*(volatile unsigned long *)0x7E004008)
#define WTCLRINT (*(volatile unsigned long *)0x7E00400C)
//led
#define GPMCON (*(volatile unsigned long *)0x7F008820)
#define GPMDAT (*(volatile unsigned long *)0x7F008824)
//key
#define GPNCON (*(volatile unsigned long *)0x7F008830)
#define GPNDAT (*(volatile unsigned long *)0x7F008834)
//ex_interrupt
#define EINT0CON0 (*(volatile unsigned long *)0x7F008900)
#define EINT0CON1 (*(volatile unsigned long *)0x7F008904)
#define EINT0MASK (*(volatile unsigned long *)0x7F008920)
#define EINT0PEND (*(volatile unsigned long *)0x7F008924)
//clock
#define APLLLOCK (*(volatile unsigned long *)0x7E00F000)
#define MPLLLOCK (*(volatile unsigned long *)0x7E00F004)
#define EPLLLOCK (*(volatile unsigned long *)0x7E00F008)
#define APLLCON (*(volatile unsigned long *)0x7E00F00C)
#define MPLLCON (*(volatile unsigned long *)0x7E00F010)
#define EPLLCON0 (*(volatile unsigned long *)0x7E00F014)
#define EPLLCON1 (*(volatile unsigned long *)0x7E00F018)
#define CLKSRC (*(volatile unsigned long *)0x7E00F01C )
#define CLKDIV0 (*(volatile unsigned long *)0x7E00F020 )
#define CLKDIV1 (*(volatile unsigned long *)0x7E00F024 )
#define CLKDIV2 (*(volatile unsigned long *)0x7E00F028 )
#define CLKOUT (*(volatile unsigned long *)0x7E00F02C )
#define HCLKGATE (*(volatile unsigned long *)0x7E00F030 )
#define PCLKGATE (*(volatile unsigned long *)0x7E00F034 )
#define SCLKGATE (*(volatile unsigned long *)0x7E00F038 )
#define MEM0CLK_GATE (*(volatile unsigned long *)0x7E00F03C)
#define MISCCON (*(volatile unsigned long*)0x7E00F838)
*************************************************************************************
makefile:
all:
arm-none-linux-gnueabi-gcc -c test.c -o test.o
arm-none-linux-gnueabi-ld -Ttext=0x50000000 test.o -o test
arm-none-linux-gnueabi-objcopy -Ielf32-littlearm -O binary test test.bin
cp test.bin /tftpboot/
clean:
rm -rf *.o *.bin test vector /tftpboot/*.bin