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

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

?? fastboot.c.bak

?? demo開發板TEK4510(S3C4510)在vxWorks下的BSP1.0
?? BAK
字號:
/********************************************************************/
/*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一区二区三区免费野_久草精品视频
国产不卡一区视频| 日韩欧美不卡在线观看视频| 欧美精品日日鲁夜夜添| 久久综合色婷婷| 午夜一区二区三区视频| 国产一区二区三区免费观看| 欧美性猛交xxxx黑人交| 久久久精品人体av艺术| 久久国产日韩欧美精品| 欧美色手机在线观看| 国产精品久久久久久久第一福利 | 国产成人免费在线观看| 欧美区一区二区三区| 亚洲三级视频在线观看| 国产九色精品成人porny| 欧美一区二区三区四区视频| 一区二区三区精品在线| 色综合久久天天| 欧美激情一区二区三区蜜桃视频| 青娱乐精品视频| 欧美精品乱码久久久久久按摩| 亚洲精品中文字幕乱码三区| av亚洲产国偷v产偷v自拍| 久久精品一区二区三区四区| 韩国欧美国产1区| 亚洲精品在线电影| 免费成人结看片| 日韩亚洲欧美在线| 久热成人在线视频| 精品欧美一区二区三区精品久久| 日本成人在线电影网| 在线电影国产精品| 午夜欧美电影在线观看| 欧美人动与zoxxxx乱| 天天做天天摸天天爽国产一区| 欧美日韩一区二区三区视频| 亚洲国产成人av好男人在线观看| 在线一区二区三区做爰视频网站| 亚洲一二三专区| 欧美日韩一级二级| 日韩精品一二区| 精品精品欲导航| 国产一区二区毛片| 中文字幕va一区二区三区| 91香蕉视频污在线| 亚洲成人手机在线| 日韩精品中文字幕一区| 国产精品中文字幕日韩精品| 国产精品无遮挡| 91亚洲国产成人精品一区二区三| 亚洲成人在线免费| 日韩午夜精品视频| 国产精品一区在线| 亚洲精品videosex极品| 91精品麻豆日日躁夜夜躁| 韩国精品免费视频| 亚洲欧美一区二区三区极速播放| 精品视频999| 国产精品一区二区免费不卡 | 91亚洲资源网| 婷婷成人激情在线网| 国产九色sp调教91| 蜜臀av一区二区在线免费观看 | 色拍拍在线精品视频8848| 亚洲国产一区二区在线播放| 精品国产欧美一区二区| 97久久超碰国产精品| 日日摸夜夜添夜夜添精品视频| 精品剧情v国产在线观看在线| www.av亚洲| 肉色丝袜一区二区| 国产精品少妇自拍| 欧美一区二区国产| www.性欧美| 美女视频一区在线观看| 亚洲视频在线一区| 久久一区二区视频| 欧美人成免费网站| 99精品桃花视频在线观看| 久久66热re国产| 午夜激情综合网| 中文av一区二区| 欧美揉bbbbb揉bbbbb| 精品国产精品网麻豆系列| 99久久免费视频.com| 免费观看日韩电影| 亚洲精品久久久蜜桃| 国产婷婷一区二区| 91精品福利在线一区二区三区| 成人av在线观| 国产在线看一区| 日韩高清中文字幕一区| 亚洲免费在线看| 欧美国产精品专区| wwww国产精品欧美| 日韩一区二区在线看| 在线精品亚洲一区二区不卡| 国产成人在线观看| 国产一区二区三区在线观看免费视频| 亚洲大片在线观看| 一区二区三区四区蜜桃| 亚洲女爱视频在线| 国产精品美女久久久久高潮| 国产午夜精品久久久久久久 | 国产精品久久久久影院亚瑟| 久久综合精品国产一区二区三区| 91麻豆精品久久久久蜜臀| 91成人国产精品| 91丨国产丨九色丨pron| 91亚洲国产成人精品一区二三| a级高清视频欧美日韩| 成人午夜伦理影院| 成人aaaa免费全部观看| 99国产一区二区三精品乱码| 色哟哟精品一区| 色综合中文字幕国产 | 天天av天天翘天天综合网 | 亚洲欧美国产三级| 亚洲柠檬福利资源导航| 亚洲自拍都市欧美小说| 偷拍亚洲欧洲综合| 日韩国产在线一| 久久国产综合精品| 国产精品18久久久久久vr| 国产成人在线网站| 91网址在线看| 欧美视频在线播放| 欧美一区二区三区人| 精品国产乱码久久久久久影片| 欧美成人a∨高清免费观看| 26uuu亚洲综合色| 国产精品不卡在线| 亚洲国产日韩精品| 捆绑调教一区二区三区| 国产不卡免费视频| 在线免费视频一区二区| 欧美一区二区三区白人| 久久精品一区二区三区不卡牛牛| 亚洲色图.com| 日本欧洲一区二区| 成人性生交大片免费看中文| 欧美性大战久久| 精品久久久久久久久久久久久久久| 国产欧美日韩在线看| 亚洲一二三四在线观看| 久久精品国产网站| 色综合激情久久| 日韩欧美一级二级| 成人欧美一区二区三区黑人麻豆| 丝袜国产日韩另类美女| 国产精品1区2区| 欧美精品久久久久久久久老牛影院| 久久婷婷久久一区二区三区| 亚洲乱码国产乱码精品精可以看| 日本不卡123| 91在线一区二区| 欧美mv日韩mv国产网站app| 18欧美亚洲精品| 精品一区二区免费视频| 欧美综合久久久| 中文字幕免费观看一区| 日本大胆欧美人术艺术动态| 91蜜桃在线免费视频| 精品人在线二区三区| 亚洲一区二区三区四区在线观看| 国产精品77777竹菊影视小说| 欧美日韩aaa| **欧美大码日韩| 国产乱码精品一区二区三区av | 成人激情av网| 欧美一级国产精品| 亚洲日本在线观看| 国产精品一区久久久久| 欧美一区二区三区不卡| 亚洲一区二区综合| 成人av综合在线| 国产亚洲精品免费| 精品在线视频一区| 欧美电影影音先锋| 亚洲一区二区av电影| 91麻豆国产福利精品| 中文字幕乱码久久午夜不卡| 国产一区二区三区免费观看| 日韩欧美一级二级三级久久久| 亚洲一区二区三区国产| 色婷婷亚洲综合| 亚洲男帅同性gay1069| 91影院在线观看| 国产精品伦理在线| 国产成人av一区| 久久精品欧美一区二区三区麻豆| 久久不见久久见中文字幕免费| 欧美一区二区精品在线| 日本午夜一区二区| 欧美日韩成人一区二区| 午夜精品福利一区二区蜜股av| 欧美日韩一区 二区 三区 久久精品| 亚洲免费资源在线播放| 在线视频国内一区二区| 午夜久久久久久电影|