亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? fastboot.c

?? demo開發板TEK4510(S3C4510)在vxWorks下的BSP1.0
?? C
字號:
/********************************************************************/
/*Copyright (c) 2003 DJ
**All rights reserved.
**
**File Name:fastBoot.c
**File Desc:act as a bootLoader.
**Cur Ver:	1.0
**
**Author:	Shawnsan
**Date:		2003-05-20
**
**Modify:
**Old Ver:
**
*/
/*******************************************************************/
#include "vxWorks.h"
#include "errno.h"
#include "ftpLib.h"
#include "hostLib.h"
#include "loadLib.h"
#include "string.h"
#include "memLib.h"
#include "sockLib.h"
#include "stdio.h"
#include "fioLib.h"
#include "fcntl.h"
#include "bootLib.h"
#include "ioLib.h"
#include "iosLib.h"
#include "string.h"
#include "rebootLib.h"
#include "sysSymTbl.h"
#include "symbol.h"
#include "ctype.h"
#include <stdlib.h>
#include <unistd.h>
#include <selectLib.h>
#include <errnoLib.h>
#include <ftpLib.h>
#include "sysLib.h"
#include "netinet/in.h"
#include "sockLib.h"
#include "fastBoot.h"
#include "sst39vf160.h"

#define MAX_LINE        80
#define SST39VF160_FLASH_BASE_ADDR 0x2100000

#undef DM_DYNLOAD_DEBUG

char *flashDataBuf;
int flashDataLen;

LOCAL STATUS modLoadViaFtp(char *hostName,char *fileName,char *usr,char *passwd);
LOCAL STATUS dmGetFileViaFtp(char *host, char *user, char *passwd, char *acct,
		char *cmd, char *dirname, char *filename,int *pCtrlSock, int *pDataSock);
LOCAL STATUS flashDataStart();

extern int	consoleFd;	/* fd of initial console device */

STATUS objFlash(void)
{
    char *hostName=(char *) malloc(MAX_LINE);
    char *fileName=(char *) malloc(MAX_LINE);
    char *usr=(char *)malloc(MAX_LINE);
    char *passwd=(char *) malloc(MAX_LINE);
    char line[MAX_LINE];
    char *pLine;

	/*malloc 4M bytes*/
    if((flashDataBuf=(char *)malloc(256*8*5*512*(sizeof(char))))==NULL)
     {
      printf("Error in malloc mem with flashDataBuf\n");
      return (ERROR);
     }
     
    (void) ioctl (consoleFd, FIOSETOPTIONS, OPT_TERMINAL);  
      
       printf("\n請輸入主機IP[192.168.0.80]:");
       fioRdString (STD_IN, line, sizeof (line));
       strcpy(hostName,line);
       if(*hostName == EOS)
         {
          hostName="192.168.0.80";
         }
       
       printf("\n請輸入燒錄映像文件[uclinux.bin]:");
       fioRdString (STD_IN, line, sizeof (line));
       strcpy(fileName,line);
       if(*fileName == EOS)
         {
          fileName="uclinux.bin";
         }
              
       printf("\n請輸入FTP用戶名[efun]:");
       fioRdString (STD_IN, line, sizeof (line));
       strcpy(usr,line);
       if(*usr == EOS)
         {
          usr="efun";
         }
              
       printf("\n請輸入FTP用戶密碼[efun]:");
       fioRdString (STD_IN, line, sizeof (line));
       strcpy(passwd,line);
       if(*passwd == EOS)
         {
          passwd="efun";
         }
       printf("\n主機IP:%s\n映像文件名:%s\n用戶名:%s\n用戶密碼:%s",hostName,fileName,usr,passwd);
       printf("\n請檢查以上參數是否正確。確認要燒寫嗎(y/n):");
       fioRdString (STD_IN, line, sizeof (line));
       pLine = line;
       if((*pLine != 'y')&&(*pLine != 'Y'))
         {
          return(ERROR);       
         }

 
       if(modLoadViaFtp(hostName,fileName,usr,passwd)==OK)
	 {
	  if(flashDataStart()==OK)
	   {
/*		 free(flashDataBuf);*/
/*		 free(hostName);
		 free(fileName);
		 free(usr);
 		 free(passwd);*/
	     return(OK);
	   }
	  else
	   {
/*		 free(flashDataBuf);
		 free(hostName);
		 free(fileName);
		 free(usr);
 		 free(passwd);   */
	     return(ERROR);
	   }
	 }
	else
	 {
/*	  free(flashDataBuf);
	  free(hostName);
	  free(fileName);
	  free(usr);
 	  free(passwd);*/
	  return(ERROR);
	 }
}
	
/*******************************************************************
* Function Name : LOCAL STATUS modLoadViaFtp(char *hostName,char *fileName,char *usr,char *passwd)
* Description : get file from host via ftp and load it to system
* Input : options to login ftp server 
* Output : none
* Returns : OK on success; ERROR if a failure was encountered
* Oautions : none
*******************************************************************/

STATUS modLoadViaFtp(char *hostName,char *fileName,char *usr,char *passwd)
{
    int fd;
    int errFd;		                    /* for receiving standard error messages from Unix */
    int nBytes,datalen;

   #ifdef DM_DYNLOAD_DEBUG
    printf ("Loading... ");
   #endif
  
    /*get file from host,if cann't get*/
   if(dmGetFileViaFtp(hostName, usr, passwd, "", "RETR %s", "", fileName,&errFd, &fd) == ERROR)
    {
     printf("can't get file from host\n");
     return(ERROR);
    }

    /*read the ftp socket to a buf*/ 
    flashDataLen = 0;
    datalen = 0x1000;
    memset(flashDataBuf,0,(256*8*4*512));
    
    while(1)
    {
	 nBytes = read (fd, flashDataBuf+flashDataLen, datalen);
	 if(nBytes > 0)
	 { 	    
      flashDataLen += nBytes;
	 }
	 else
	 {  		
	  break;
	 }
    }

   ftpCommand (errFd, "QUIT",0,0,0,0,0,0); /*quit ftp*/

   free(flashDataBuf);
   close (fd);
   close (errFd);
   return (OK);
}


#define FTP_DATA_CONN_TIMEOUT	80	/* sec */

#undef DM_FTP_DEBUG

/*******************************************************************
* Function Name : STATUS dmGetFileViaFtp(char *host, char *user, char *passwd, char *acct,
					char *cmd, char *dirname, char *filename,int *pCtrlSock, int *pDataSock)
* Description : implement ftp connect to host
* Input : paras used by ftp  authentication
* Output : pCtrlSock, pDataSock
* Returns : OK on success; ERROR if a failure was encountered
* Oautions : none
*******************************************************************/

LOCAL STATUS dmGetFileViaFtp(char *host, char *user, char *passwd, char *acct,
		char *cmd, char *dirname, char *filename,int *pCtrlSock, int *pDataSock)
{
    int		ctrlSock = ERROR, dataSock = ERROR;
    struct fd_set 	rfd;
    int			result;
    struct timeval	tmo;
    char		*errmsg = NULL;

    #ifdef DM_FTP_DEBUG
	 printf("dmGetFileViaFtp: hookup host=%s file=%s\n", host, filename);
    #endif

    if ((ctrlSock = ftpHookup(host)) == ERROR)
    {
	 errmsg = "server unreachable";
	 goto error;
    }

    *pCtrlSock = ctrlSock;   /*return ctrlSock by pointer pCtrlSock*/
 	
    #ifdef DM_FTP_DEBUG
	 printf("dmGetFileViaFtp: login user=%s\n", user);
    #endif	

    if (ftpLogin(ctrlSock, user, passwd, acct) != OK) /*login host */
    {
	 errmsg = "authentication failed";
	 goto error;
    }

    #ifdef DM_FTP_DEBUG
	 printf("dmGetFileViaFtp: set binary\n");
    #endif	

    if (ftpCommand(ctrlSock, "TYPE I", 0, 0, 0, 0, 0, 0) != FTP_COMPLETE) /*set binary mode*/
    {
	 errmsg = "set binary mode failed";
	 goto error;
    }

    if (dirname[0]) /*if directory not empty ,chaged it by send command to host*/
    {
     #ifdef DM_FTP_DEBUG
	  printf("dmGetFileViaFtp: cd %s\n", dirname);
     #endif	   	

	 if(ftpCommand(ctrlSock, "CWD %s",(int) dirname, 0, 0, 0, 0, 0) != FTP_COMPLETE)
	 {
	    errmsg = "change directory failed";
	    goto error;
	 }
    }

    /*
     * Retry loop for transient errors, such as the remote host being
     * unable to assign the requested port number.
     */

 retry_transient_error:

    /*
     * If this is a transfer command requiring a data connection,
     * first establish socket for server to connect back to.
     */

    if (pDataSock)
    {
	int			len;
	short			port;
	struct sockaddr_in 	ownAddr;
	struct sockaddr_in 	dataAddr;

    #ifdef DM_FTP_DEBUG
	 printf("dmGetFileViaFtp: set binary\n");
    #endif	   	

	/* Find out our own address */

	len = sizeof (ownAddr);
	if (getsockname(ctrlSock, (struct sockaddr *) &ownAddr, &len) < 0)
	 {
	    errmsg = "FTP could not get own addr";
	    goto error;
	 }

	if ((dataSock = socket(AF_INET, SOCK_STREAM, 0)) < 0)
	 {
	    errmsg = "FTP could not create data socket";
	    goto error;
	 }

	dataAddr = ownAddr;
	dataAddr.sin_port = htons(0);

	if (bind(dataSock,(struct sockaddr *) &dataAddr,sizeof (dataAddr)) != OK) 
	 {
	    close(dataSock);
	    errmsg = "FTP could not bind data socket";
	    goto error;
	 }

	/* Read back to find out what port was bound */

	len = sizeof (dataAddr);
	if (getsockname(dataSock, (struct sockaddr *) &dataAddr, &len) < 0) 
	 {
	    errmsg = "FTP could not get data addr";
	    goto error;
	 }

	port = ntohs(dataAddr.sin_port);

	if (listen(dataSock, 1) < 0) 
	 {
	    close(dataSock);
	    errmsg = "FTP could not listen on data socket";
	    goto error;
	 }

	/* Use PORT command to inform server of data socket address */

	if (ftpCommand(ctrlSock,
		       "PORT %d,%d,%d,%d,%d,%d",
		       (int) ((UINT8 *) &dataAddr.sin_addr)[0],
		       (int) ((UINT8 *) &dataAddr.sin_addr)[1],
		       (int) ((UINT8 *) &dataAddr.sin_addr)[2],
		       (int) ((UINT8 *) &dataAddr.sin_addr)[3],
		       (int) (port >> 8),
		       (int) (port & 0xff)) != FTP_COMPLETE) 
	 {
	    close(dataSock);
	    errmsg = "FTP could not send PORT command";
	    goto error;
	 }
    }

    /*
     * Send the FTP command.
     */


    #ifdef DM_FTP_DEBUG
	 printf("dmGetFileViaFtp: command %s\n", cmd);
    #endif	  

    result = ftpCommand(ctrlSock, cmd, (int) filename, 0, 0, 0, 0, 0);

    #ifdef DM_FTP_DEBUG
	 printf("dmGetFileViaFtp: result %d\n", result);
    #endif	  

    switch (result) 
    {
     case FTP_TRANSIENT:
	  if (pDataSock)
	  {
	   close(dataSock);
	  }
	  goto retry_transient_error;
     case FTP_COMPLETE:
     case FTP_CONTINUE:
	  if (pDataSock) 
	  {
	    close(dataSock);
	    errmsg = "server returned COMPLETE or CONTINUE instead of PRELIM";
	    goto error;
	  }
	  return OK;	/* Non-transfer command succeeded */
     case FTP_PRELIM:
	  if (! pDataSock) 
	  {
	    errmsg = "server returned PRELIM for non-transfer command";
	    goto error;
	  }
	  break;		/* Continue below to start transfer */
     default:
      if (pDataSock)
      {
       close(dataSock);
      }
	  errmsg = "command failed";
	  goto error;
    }

    /*
     * Wait for server to connect back on data socket.
     * Use select to provide a timeout.
     */

    FD_ZERO(&rfd);
    FD_SET(dataSock, &rfd);

    tmo.tv_sec = FTP_DATA_CONN_TIMEOUT;
    tmo.tv_usec = 0;

    #ifdef DM_FTP_DEBUG
	 printf("dmGetFileViaFtp: wait for data\n");
    #endif	

    if (select(FD_SETSIZE, &rfd, NULL, NULL, &tmo) < 0)
    {
	 if (pDataSock)
	    close(dataSock);
	 errmsg = "data conn failed or timed out";
	 goto error;
	}

    #ifdef DM_FTP_DEBUG
	 printf("dmGetFileViaFtp: get data conn\n");
    #endif	

    if ((dataSock = ftpDataConnGet(dataSock)) == ERROR)
    {
	 errmsg = "failed to accept server connection";
	 goto error;
    }

    *pDataSock = dataSock;    /*return data socket*/
    
    #ifdef DM_FTP_DEBUG
	 printf("dmGetFileViaFtp: return OK\n");
    #endif	

    return OK;

 error:

    if (errmsg)
	printErr("FTP ERROR: %s (errno=%d)\n", errmsg, errnoGet());

    if (ctrlSock != ERROR)
    {
	 (void) ftpCommand(ctrlSock, "QUIT", 0, 0, 0, 0, 0, 0);
	 close(ctrlSock);
    }

    #ifdef DM_FTP_DEBUG
	 printf("dmGetFileViaFtp: return ERROR\n");
    #endif	

    return ERROR;
}


STATUS flashDataStart(void)
{

 printf("\nErasing flash......");

 if(sstChipErase()==ERROR)
  {
    printf("failed!");
    return ERROR;
  }
 printf("OK");
 
 printf("\nWriting flash......");
 
 if(sstWrite((UINT16 *)SST39VF160_FLASH_BASE_ADDR , flashDataBuf , flashDataLen)==NULL)
  {
   printf("failed!");
   return ERROR;
  }
 printf("OK");
 return(OK);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产九色精品成人porny | 一区二区免费在线| av一本久道久久综合久久鬼色| 欧美极品另类videosde| 波多野结衣一区二区三区 | 免费成人av在线播放| 精品国产一区二区三区久久影院| 精品一区二区三区在线观看 | 午夜不卡av免费| 日韩一区国产二区欧美三区| 美女www一区二区| 久久久久久亚洲综合影院红桃| 成人国产一区二区三区精品| 一区二区三区欧美在线观看| 91.com视频| 国产精品资源网| 一区二区三区日韩精品视频| 欧美一级在线观看| 成人美女视频在线观看18| 亚洲综合在线五月| 精品国产乱子伦一区| 国产成人精品免费一区二区| 亚洲最大色网站| 亚洲精品一区二区精华| www.成人网.com| 蜜臀91精品一区二区三区 | 亚洲欧美视频在线观看| 欧美老肥妇做.爰bbww| 国产高清精品在线| 亚洲一区二区三区在线| 久久精品水蜜桃av综合天堂| 色8久久精品久久久久久蜜| 精品在线一区二区三区| 亚洲自拍欧美精品| 国产三级精品三级| 欧美高清hd18日本| 91免费国产在线| 激情综合色综合久久综合| 亚洲男人的天堂在线aⅴ视频| 日韩精品一区二区三区蜜臀| 91免费国产视频网站| 国产一区二区三区高清播放| 午夜精品国产更新| 成人免费在线视频观看| 日韩欧美高清一区| 欧美性大战久久久| 国产不卡视频在线观看| 青青草97国产精品免费观看无弹窗版 | 青青草国产精品97视觉盛宴| 中文字幕在线观看不卡视频| 日韩欧美视频在线 | 欧美一区二区三区在线| 色综合天天性综合| 国产成人精品亚洲777人妖| 蜜乳av一区二区| 婷婷六月综合网| 亚洲激情图片一区| 国产精品短视频| 久久久久久97三级| 久久综合一区二区| 日韩亚洲欧美在线观看| 欧美日韩一级二级三级| 在线免费观看不卡av| 成人激情文学综合网| 国产电影精品久久禁18| 国产一区二区在线免费观看| 青青青伊人色综合久久| 日本美女视频一区二区| 日本亚洲三级在线| 日本在线不卡一区| 免费观看30秒视频久久| 青青草原综合久久大伊人精品 | 国产日韩精品一区| 久久天天做天天爱综合色| 精品久久五月天| 欧美成人激情免费网| 精品人伦一区二区色婷婷| 日韩一区二区电影| 精品国产露脸精彩对白| www国产精品av| 国产目拍亚洲精品99久久精品| 久久色视频免费观看| 久久久99免费| 中文字幕电影一区| 亚洲欧美区自拍先锋| 亚洲欧美区自拍先锋| 亚洲第一搞黄网站| 蜜臀久久99精品久久久画质超高清| 日韩成人dvd| 狠狠色狠狠色合久久伊人| 国产91精品久久久久久久网曝门| 国产传媒欧美日韩成人| 91在线免费播放| 欧美视频在线不卡| 日韩一区二区在线看片| 久久久精品蜜桃| 亚洲视频狠狠干| 舔着乳尖日韩一区| 国产一区二区免费在线| 成人a级免费电影| 欧美熟乱第一页| 日韩免费福利电影在线观看| 久久蜜桃av一区二区天堂| 欧美激情一区二区| 亚洲福利国产精品| 国产麻豆91精品| 91免费在线看| 日韩欧美国产精品| 亚洲私人黄色宅男| 五月天一区二区三区| 国产毛片一区二区| 91久久久免费一区二区| 亚洲精品一线二线三线| 国产精品久久久久久久久动漫| 亚洲国产精品影院| 国产成人av电影| 欧美美女bb生活片| 欧美国产一区二区| 午夜国产精品一区| 北岛玲一区二区三区四区| 欧美日韩国产经典色站一区二区三区| 精品国产一区二区三区av性色| 亚洲日本欧美天堂| 国精产品一区一区三区mba视频 | 欧美丰满美乳xxx高潮www| 久久久噜噜噜久噜久久综合| 亚洲最大色网站| 国产精品一区二区男女羞羞无遮挡| 日本高清无吗v一区| 久久久久久电影| 日韩av在线发布| 色哦色哦哦色天天综合| 精品国产电影一区二区| 亚洲国产一区二区a毛片| 成人美女视频在线看| 日韩欧美一区二区在线视频| 亚洲精品欧美在线| 成人性生交大片免费看中文网站| 欧美一区二区二区| 亚洲国产婷婷综合在线精品| av一区二区三区在线| 亚洲精品一线二线三线| 日韩av在线免费观看不卡| 在线视频一区二区免费| 国产精品国产a| 国产一区二区三区四区五区美女| 欧美日韩一区高清| 一区二区三区四区精品在线视频| 成人免费看的视频| 欧美极品xxx| 国产精品18久久久久久久网站| 欧美一二三区精品| 免费看欧美美女黄的网站| 欧美三级三级三级| 亚洲综合一二区| 91一区在线观看| 亚洲女人****多毛耸耸8| zzijzzij亚洲日本少妇熟睡| 国产日韩欧美a| 国产91精品一区二区麻豆网站 | 99久久婷婷国产综合精品| 日本一区二区三区免费乱视频| 六月婷婷色综合| 欧美成人乱码一区二区三区| 免费观看日韩av| 精品美女在线播放| 国产自产视频一区二区三区| 精品电影一区二区| 国产精品亚洲成人| 国产精品免费视频观看| 成人avav影音| 亚洲色欲色欲www| 色女孩综合影院| 亚洲18色成人| 日韩精品一区二| 国产精品香蕉一区二区三区| 国产欧美日韩卡一| a级高清视频欧美日韩| 综合分类小说区另类春色亚洲小说欧美| av在线不卡电影| 亚洲一区二区三区中文字幕在线| 欧美午夜电影一区| 婷婷国产在线综合| 精品国产第一区二区三区观看体验| 国产精品白丝jk黑袜喷水| 国产精品成人在线观看| 一本到不卡免费一区二区| 亚洲国产aⅴ成人精品无吗| 日韩欧美中文字幕一区| 国产高清不卡二三区| 亚洲三级在线观看| 欧美夫妻性生活| 国产资源精品在线观看| 国产精品全国免费观看高清| 91国模大尺度私拍在线视频| 日韩电影在线免费观看| 久久久久久电影| 欧美最猛黑人xxxxx猛交| 日本成人超碰在线观看| 国产精品欧美一区喷水|