?? main.c
字號:
/*
* main.c - uart
*
* Author: <zgxgoo@gmail.com>
* Date: 2007-10-31
*/
#include "my_printf.h"
#include "uart.h"
#include "my_string.h"
#include "uue.h"
#include "erase_copy.h"
#include "test.h"
#include "set_channel.h"
#define READ(addr) (*((volatile int *)(addr)))
#define WRITE(addr, data) (*((volatile int *)(addr)) = (data))
U32 sysclk = 75000000; // 20MHz, 30MHz, 40MHz, 50MHz, 60MHz
U32 baudrate = 9600; // 57600, 56000, 38400, 19200, 9600
U32 databit = 8; // 6, 7, 8
U32 trigerlevel = 0;
extern int addrdn;
int addr[2];
int count;
char chh;
char cmd[100];
void (*current_pc)();
int i = 0;
extern void irq_handler(void);
int c_entry(int RoBase, int ZiLimit)
{
int a, b=2;
int c;
*(volatile int *)(0x30000000) = b;
a = *(volatile int*)(0x30000000);
addr[0] = 0x30008000;
addr[1] = 0x20003000;
current_pc =(void (*)(void))(0x20003000);
// uart must be initialized before printf using it to output
init_uart0(sysclk, baudrate, databit,trigerlevel);
install_irq_handler(irq_handler);
my_printf("hello\n\r");
/*if (mesg_begin(RoBase, ZiLimit))
{
my_printf("autoboot\n\r");
((void(*)(void))(current_pc))();
}*/
//else
//{
my_printf("input help for help\n\r");
c = READ(0x10000018);
my_printf("the irq=%x\n\r", c);
while(1) {
i = 0;
my_printf("uboot$:");
// delay();
do {
uart_getchar(UART0_BASE, &chh );
cmd[i++] = chh;
// delay();
uart_putchar( UART0_BASE, chh );
// delay();
} while (chh != '\r');
uart_putchar( UART0_BASE, '\n' );
cmd[i-1] = '\0';
switch( cmd_cmp(cmd)) {
case 0:
help_pp();
break;
case 1:
uue_receive( (unsigned)addr[0] );
current_pc =(void (*)(void))(addr[0]);
break ;
case 2:
my_printf("go at address 0x%x\n\r", addr[0]);
((void(*)(void))(current_pc))();
break;
case 3:
my_printf("erase at address 0x%x\n\r", addr[0]);
flash_erase(addr[0]);
break;
case 4:
my_printf("copy to flash begin\n\r");
my_printf("sdram_adr%x, flash_addr%x\r\n", addr[0], addr[1]);
copy(addr[0], addr[1]);
break;
case 5:
sdram_test(0x30000000, 0x30800000);
install_irq_handler(irq_handler);
break;
case 6:
cpu_test();
break;
case 7:
flash_test(0x20000000, 0x20200000);
break;
case 8:
rtc_test();
break;
case 9:
beep_test();
break;
case 10:
led_test();
break;
case 11:
key_test();
break;
case 12:
in_test();
break;
case 13:
out_test();
break;
case 14:
read_AD();
break;
case 15:
set_channel();
break;
default:
my_printf("bad cmd");
break;
}
uart_putchar( UART0_BASE, '\n');
uart_putchar( UART0_BASE, '\r');
}
//}
return 0;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -