1
0
mirror of git://projects.qi-hardware.com/xburst-tools.git synced 2024-11-01 10:22:48 +02:00

the serial console begin output something

This commit is contained in:
xiangfu 2008-07-30 08:32:03 -04:00
parent dded3f8cbf
commit f410b994a9
5 changed files with 178 additions and 9 deletions

View File

@ -56,4 +56,4 @@ blink_led:src/led_on.S
$(OBJCOPY) -O binary -S led_on_temp.o $(IMAGE)/led_on $(OBJCOPY) -O binary -S led_on_temp.o $(IMAGE)/led_on
clean: clean:
rm -f src/*.o src/*~ ${IMAGE}* ${TARGET} rm -f src/*.o src/*~ include/*~ ${IMAGE}* ${TARGET}

View File

@ -24,6 +24,8 @@
#define UART1 1 #define UART1 1
#define UART2 2 #define UART2 2
#define rGPHCON (*(volatile unsigned *)0x56000070) /*UART 0 Line control*/
#define rULCON0 (*(volatile unsigned *)0x50000000) /*UART 0 Line control*/ #define rULCON0 (*(volatile unsigned *)0x50000000) /*UART 0 Line control*/
#define rUCON0 (*(volatile unsigned *)0x50000004) /*UART 0 Control*/ #define rUCON0 (*(volatile unsigned *)0x50000004) /*UART 0 Control*/
#define rUFCON0 (*(volatile unsigned *)0x50000008) /*UART 0 FIFO control*/ #define rUFCON0 (*(volatile unsigned *)0x50000008) /*UART 0 FIFO control*/
@ -59,5 +61,44 @@
#define WrUTXH2(ch) (*(volatile unsigned char *)0x50008020)=(unsigned char)(ch) #define WrUTXH2(ch) (*(volatile unsigned char *)0x50008020)=(unsigned char)(ch)
#define RdURXH2() (*(volatile unsigned char *)0x50008024) #define RdURXH2() (*(volatile unsigned char *)0x50008024)
// I/O PORT
#define rGPACON (*(volatile unsigned *)0x56000000)
#define rGPADAT (*(volatile unsigned *)0x56000004)
#define rGPBCON (*(volatile unsigned *)0x56000010)
#define rGPBDAT (*(volatile unsigned *)0x56000014)
#define rGPBUP (*(volatile unsigned *)0x56000018)
#define rGPCCON (*(volatile unsigned *)0x56000020)
#define rGPCDAT (*(volatile unsigned *)0x56000024)
#define rGPCUP (*(volatile unsigned *)0x56000028)
#define rGPDCON (*(volatile unsigned *)0x56000030)
#define rGPDDAT (*(volatile unsigned *)0x56000034)
#define rGPDUP (*(volatile unsigned *)0x56000038)
#define rGPECON (*(volatile unsigned *)0x56000040)
#define rGPEDAT (*(volatile unsigned *)0x56000044)
#define rGPEUP (*(volatile unsigned *)0x56000048)
#define rGPFCON (*(volatile unsigned *)0x56000050)
#define rGPFDAT (*(volatile unsigned *)0x56000054)
#define rGPFUP (*(volatile unsigned *)0x56000058)
#define rGPGCON (*(volatile unsigned *)0x56000060)
#define rGPGDAT (*(volatile unsigned *)0x56000064)
#define rGPGUP (*(volatile unsigned *)0x56000068)
#define rGPHCON (*(volatile unsigned *)0x56000070)
#define rGPHDAT (*(volatile unsigned *)0x56000074)
#define rGPHUP (*(volatile unsigned *)0x56000078)
#define rGPJCON (*(volatile unsigned *)0x560000d0) //Port J control
#define rGPJDAT (*(volatile unsigned *)0x560000d4) //Port J data
#define rGPJUP (*(volatile unsigned *)0x560000d8) //Port J data
void port_init(void);
void serial_init (const int ubrdiv_val,const int uart); void serial_init (const int ubrdiv_val,const int uart);
void serial_putc (const int uart,const char c); void serial_putc (const int uart,const char c);

View File

@ -30,6 +30,9 @@ void serial_init (const int ubrdiv_val,const int uart)
case UART0: case UART0:
rULCON0 = 0x3; rULCON0 = 0x3;
rUCON0 = 0x245; rUCON0 = 0x245;
rGPHCON = rGPHCON & ~(3 << 16);
delay(1);
rGPHCON = rGPHCON & ~(3 << 16)|(1 << 17);
rUFCON0 = 0x0; rUFCON0 = 0x0;
rUMCON0 = 0x0; rUMCON0 = 0x0;
rUBRDIV0 = ubrdiv_val; rUBRDIV0 = ubrdiv_val;
@ -44,6 +47,9 @@ void serial_init (const int ubrdiv_val,const int uart)
case UART2: case UART2:
rULCON2 = 0x3; rULCON2 = 0x3;
rUCON2 = 0x245; rUCON2 = 0x245;
rGPHCON = rGPHCON & ~(3 << 16);
delay(1);
rGPHCON = rGPHCON & ~(3 << 16)|(1 << 17);
rUFCON2 = 0x0; rUFCON2 = 0x0;
rUBRDIV2 = ubrdiv_val; rUBRDIV2 = ubrdiv_val;
break; break;
@ -60,16 +66,17 @@ void serial_putc (const int uart,const char c)
{ {
case UART0: case UART0:
while ( !( rUTRSTAT0 & 0x2 ) ); while ( !( rUTRSTAT0 & 0x2 ) );
delay(10); delay(1);
WrUTXH0(c); WrUTXH0(c);
break; break;
case UART1: case UART1:
while ( !( rUTRSTAT1 & 0x2 ) ); while ( !( rUTRSTAT1 & 0x2 ) );
delay(10); delay(1);
WrUTXH1(c); WrUTXH1(c);
break; break;
case UART2: case UART2:
while ( !( rUTRSTAT2 & 0x2 ) ); while ( !( rUTRSTAT2 & 0x2 ) );
delay(1);
WrUTXH2(c); WrUTXH2(c);
break; break;
default: default:
@ -77,3 +84,121 @@ void serial_putc (const int uart,const char c)
} }
} }
/*
* =====================================================================
* PORTS Librarues
* =====================================================================
*/
void port_init(void)
{
//CAUTION:Follow the configuration order for setting the ports.
// 1) setting value(GPnDAT)
// 2) setting control register (GPnCON)
// 3) configure pull-up resistor(GPnUP)
/* 32bit data bus configuration */
/*
* === PORT A GROUP
* Ports : GPA22 GPA21 GPA20 GPA19 GPA18 GPA17 GPA16 GPA15 GPA14 GPA13 GPA12
* Signal : nFCE nRSTOUT nFRE nFWE ALE CLE nGCS5 nGCS4 nGCS3 nGCS2 nGCS1
* Binary : 1 1 1 , 1 1 1 1 , 1 1 1 1
* Ports : GPA11 GPA10 GPA9 GPA8 GPA7 GPA6 GPA5 GPA4 GPA3 GPA2 GPA1 GPA0
* Signal : ADDR26 ADDR25 ADDR24 ADDR23 ADDR22 ADDR21 ADDR20 ADDR19 ADDR18 ADDR17 ADDR16 ADDR0
* Binary : 1 1 1 1 , 1 1 1 1 , 1 1 1 1
*/
rGPACON = 0x007E5FFF;
rGPADAT |= (1 << 16); /* Set GPA16 to high (nNAND_WP) */
/*
* ===* PORT B GROUP
* Ports : GPB10 GPB9 GPB8 GPB7 GPB6 GPB5 GPB4 GPB3 GPB2 GPB1 GPB0
* Signal : nXDREQ0 nXDACK0 nXDREQ1 nXDACK1 nSS_KBD nDIS_OFF L3CLOCK L3DATA L3MODE nIrDATXDEN Keyboard
* Setting: INPUT OUTPUT INPUT OUTPUT INPUT OUTPUT OUTPUT OUTPUT OUTPUT OUTPUT OUTPUT
* Binary : 00 , 01 00 , 01 00 , 01 01 , 01 01 , 01 01
*/
rGPBCON = 0x00155555;
rGPBUP = 0x000007FF;
/*
* === PORT C GROUP
* Ports : GPC15 GPC14 GPC13 GPC12 GPC11 GPC10 GPC9 GPC8 GPC7 GPC6 GPC5 GPC4 GPC3 GPC2 GPC1 GPC0
* Signal : VD7 VD6 VD5 VD4 VD3 VD2 VD1 VD0 LCDVF2 LCDVF1 LCDVF0 VM VFRAME VLINE VCLK LEND
* Binary : 10 10 , 10 10 , 10 10 , 10 10 , 10 10 , 10 10 , 10 10 , 10 10
*/
rGPCCON = 0x55555155;
rGPCUP = 0x0000FFFF & ~(1 << 5);
rGPCDAT |= (1 << 13) | (1 << 15); /* index detect -> hi */
/*
* === PORT D GROUP
* Ports : GPD15 GPD14 GPD13 GPD12 GPD11 GPD10 GPD9 GPD8 GPD7 GPD6 GPD5 GPD4 GPD3 GPD2 GPD1 GPD0
* Signal : VD23 VD22 VD21 VD20 VD19 VD18 VD17 VD16 VD15 VD14 VD13 VD12 VD11 VD10 VD9 VD8
* Binary : 10 10 , 10 10 , 10 10 , 10 10 , 10 10 , 10 10 , 10 10 ,10 10
*/
rGPDCON = 0x55555555;
rGPDUP = 0x0000FFFF;
rGPDDAT |= (1 << 0) | (1 << 3) | (1 << 4); /* index detect -> hi */
/*
* === 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 , 10 10 , 10 10 , 10 10 ,
* -------------------------------------------------------------------------------------------------------
* Ports : GPE3 GPE2 GPE1 GPE0
* Signal : I2SSDI CDCLK I2SSCLK I2SLRCK
* Binary : 10 10 , 10 10
*/
rGPECON = 0xAAAAAAAA;
rGPEUP = 0x0000FFFF & ~(1 << 11);
/*
* === PORT F GROUP
* Ports : GPF7 GPF6 GPF5 GPF4 GPF3 GPF2 GPF1 GPF0
* Signal : nLED_8 nLED_4 nLED_2 nLED_1 nIRQ_PCMCIA EINT2 KBDINT EINT0
* Setting: Output Output Output Output EINT3 EINT2 EINT1 EINT0
* Binary : 01 01 , 01 01 , 10 10 , 10 10
*/
/* pulldown on GPF03: TP-4705+debug - debug conn will float */
rGPFCON = 0x0000AAAA;
rGPFUP = 0x000000FF & ~(1 << 3);
/*
* === PORT G GROUP
* Ports : GPG15 GPG14 GPG13 GPG12 GPG11 GPG10 GPG9 GPG8 GPG7 GPG6
* Signal : nYPON YMON nXPON XMON EINT19 DMAMODE1 DMAMODE0 DMASTART KBDSPICLK KBDSPIMOSI
* Setting: nYPON YMON nXPON XMON EINT19 Output Output Output SPICLK1 SPIMOSI1
* Binary : 11 11 , 11 11 , 10 01 , 01 01 , 11 11
* -----------------------------------------------------------------------------------------
* Ports : GPG5 GPG4 GPG3 GPG2 GPG1 GPG0
* Signal : KBDSPIMISO LCD_PWREN EINT11 nSS_SPI IRQ_LAN IRQ_PCMCIA
* Setting: SPIMISO1 LCD_PWRDN EINT11 nSS0 EINT9 EINT8
* Binary : 11 11 , 10 11 , 10 10
*/
rGPGCON = 0x01AAFE79;
rGPGUP = 0x0000FFFF;
/*
* === PORT H GROUP
* Ports : GPH10 GPH9 GPH8 GPH7 GPH6 GPH5 GPH4 GPH3 GPH2 GPH1 GPH0
* Signal : CLKOUT1 CLKOUT0 UCLK nCTS1 nRTS1 RXD1 TXD1 RXD0 TXD0 nRTS0 nCTS0
* Binary : 10 , 10 10 , 11 11 , 10 10 , 10 10 , 10 10
*/
/* pulldown on GPH08: UEXTCLK, just floats!
* pulldown GPH0 -- nCTS0 / RTS_MODEM -- floats when GSM off
* pulldown GPH3 -- RXD[0] / TX_MODEM -- floats when GSM off
*/
rGPHCON = 0x001AAAAA;
rGPHUP = 0x000007FF & ~(1 << 8) & ~(1 << 0) & ~(1 << 3);
/* pulldown on GPJ00: input, just floats! */
/* pulldown on GPJ07: WLAN module WLAN_GPIO0, no ext pull */
rGPJCON = 0x1551544;
rGPJUP = 0x1ffff & ~(1 << 0) & ~(1 << 7);
rGPJDAT |= (1 << 4) | (1 << 6);
/* Set GPJ4 to high (nGSM_EN) */
/* Set GPJ6 to high (nDL_GSM) */
rGPJDAT &= ~(1 << 5); /* Set GPJ5 to low 3D RST */
/* leaving Glamo forced to Reset# active here killed
* U-Boot when you touched the memory region
*/
rGPJDAT |= (1 << 5); /* Set GPJ5 to high 3D RST */
}

View File

@ -85,11 +85,13 @@ start_code:
ldr r0, =LOCKTIME ldr r0, =LOCKTIME
mov r1, #0xffffff mov r1, #0xffffff
str r1, [r0] str r1, [r0]
# define MPLLCON_val ((142 << 12) + (7 << 4) + 1)
# define UPLLCON 0x4c000008 # define UPLLCON 0x4c000008
# define MPLLCON_val ((142 << 12) + (7 << 4) + 1)
# define UPLLCON_val (( 88 << 12) + (8 << 4) + 2) # define UPLLCON_val (( 88 << 12) + (8 << 4) + 2)
/*# define MPLLCON_val ((0x7d << 12) + (0x2 << 4) + 0x1)
# define UPLLCON_val ((0x38 << 12) + (0x2 << 4) + 0x2)*/
ldr r0, =UPLLCON ldr r0, =UPLLCON
ldr r1, =UPLLCON_val ldr r1, =UPLLCON_val
str r1, [r0] str r1, [r0]
@ -116,7 +118,7 @@ start_code:
/* enable uart */ /* enable uart */
ldr r0, =0x4c00000c /* clkcon */ ldr r0, =0x4c00000c /* clkcon */
ldr r1, =0xffff0 /* all clocks on */ ldr r1, =0x7fff0 /* all clocks on */
str r1, [r0] str r1, [r0]
/* gpio UART0 init */ /* gpio UART0 init */
@ -134,7 +136,7 @@ start_code:
str r1, [r0, #0x08] str r1, [r0, #0x08]
mov r1, #0x00 mov r1, #0x00
str r1, [r0, #0x0c] str r1, [r0, #0x0c]
mov r1, #0x11 mov r1, #0x7
str r1, [r0, #0x28] */ str r1, [r0, #0x28] */
bl cpu_init_crit bl cpu_init_crit

View File

@ -39,7 +39,8 @@ unsigned char buf[2*1024];
int start_kboot(void) int start_kboot(void)
{ {
serial_init(0x11,UART0); port_init();
serial_init(0x7,UART0);
while(1){ while(1){
serial_putc (UART0,'0'); serial_putc (UART0,'0');
blue_on(1); blue_on(1);