#include "def.h"
#include "2410addr.h"
#include "config.h"
#include "board.h"
unsigned long download_len;
unsigned long download_addr;
extern int LoadFileFromUsb(U32 a1, U32 a2, U32 a3, U32 a4);
/***************************************************************************
Function name: Main
Parameter : void
Description : 初始化系统,串口,并调用USB下载实验函数
Return : void
Argument :
Autor & date :
****************************************************************************/
void Main(void)
{
BoardInitStart(); //系统初始化,MMU初始化
SystemClockInit(); //系统时钟初始化
MemCfgInit(); //设置NAND FLASH的配置寄存器
// PortInit(); //S3C2410X的GPIO初始化
SerialSwitch(0); //选择串口0
SerialChgBaud(115200); //波特率115200
EnableInt(); //允许中断
// while( 1 )
{
printf("FFT-S3C2410 USB DEVICE Download File Test,please Enter 'ESC' to exit\n");
LoadFileFromUsb(0,0,0,0);//USB DEVICE下载函数
printf("FFT-S3C2410 USB DEVICE Test Finished\n");
}
}
/***************************************************************************/
//USB Device下载函数
int LoadFileFromUsb(U32 a1, U32 a2, U32 a3, U32 a4)
{
puts("USB download file\n");
return BoardUsbDownload(0, 0);
}
//USB Device下载函数
static int BoardUsbDownload(U32 addr, U32 run)
{
U8 fun;
int len;
/*GPIO初始化*/
//GPH10、GPH9=input
rGPHCON = rGPHCON&~(0xf<<18)|(0x5<<18);
//To enhance the USB signal quality.
//CLKOUT 0,1=OUTPUT to reduce the power consumption.
rGPGCON &= 0xfff3ffff; //GPG9 input
fun = 1;
//USB设备初始化,主要是初始化S3C2410X USB设备的控制寄存器。
UsbdInit(fun);
Delay(100);
rGPGCON |= 0x00040000;
rGPGDAT |= 0x0200; //GPG9 ouput 1
pISR_USBD =(unsigned)IsrUsbd;//连接USB设备的中断向量表
ClearPending(BIT_USBD);//清除中断屏蔽位
EnableIrq(BIT_USBD);//开USB设备中断
len = WaitDownload(addr);
DisableIrq(BIT_USBD);//关USB设备中断
rGPGCON &= 0xfff3ffff; //GPG9 input
if(len>0) {
printf("\nUSB download finished,press any key to exit\n");
}
return len;
}
阅读(1131) | 评论(0) | 转发(0) |