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

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

?? ymodem.c

?? STR711 IAP底層驅動程序
?? C
字號:
/******************** (C) COPYRIGHT 2006 STMicroelectronics ********************
* File Name          : ymodem.c
* Author             : MCD Application Team
* Date First Issued  : 10/25/2004
* Description        : This file provides all the software functions related to
*                      the ymodem protocol.
********************************************************************************
* History:
*  02/01/2006 : IAP Version 2.0
*  11/24/2004 : IAP Version 1.0
********************************************************************************
THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH
CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS A 
RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, INDIRECT OR 
CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT OF SUCH 
SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION CONTAINED HEREIN
IN CONNECTION WITH THEIR PRODUCTS.
********************************************************************************/
#include "common.h"

//#define Flash_Offset   0x40003000  /* Flash user program offset */
#define Flash_Offset   0x40004000 

char file_name[FILE_NAME_LENGTH];
u32 Flash_Destination = Flash_Offset;                     
u32 Ram_Source;

/*******************************************************************************
* Function Name  : Receive_Byte
* Description    : Receive byte from sender
* Input 1        : Character
* Input 2        : Timeout
* Return         :  0   --      Byte received                           
*                : -1   --      Timeout   
*******************************************************************************/
static s32 Receive_Byte (char *c, u32 timeout)
{
  while (timeout-- > 0)
  {
    if (SerialKeyPressed(c) == 1)
    {
      return 0;
    }
  }
  return -1;
}

/*******************************************************************************
* Function Name  : Send_Byte
* Description    : Send a byte 
* Input          : Character
* Return         :  0   --      Byte sent                           
*******************************************************************************/
static u32 Send_Byte (char c)
{
  SerialPutChar(c);
  return 0;
}

/*******************************************************************************
* Function Name  : Receive_Packet
* Description    : Receive a packet from sender 
* Input 1        : Data
* Input 2        : Length
* Input 3        : Timeout
* Return         :   0  --      normally return                         
*                :  -1  --      timeout or packet error                 
*                :   1  --      abort by user                           
*                : *length:                                                
*                :   0  --      end of transmission                    
*                :  -1  --      abort by sender                         
*                :  >0  --      packet length                                      
*******************************************************************************/
static s32 Receive_Packet (char *data, s32 *length, u32 timeout)
{
  int i, packet_size;
  char c;
  *length = 0;
  if (Receive_Byte(&c, timeout) != 0)
  {
    return -1;
  }
  switch (c)
  {
    case SOH:
      packet_size = PACKET_SIZE;
      break;
    case STX:
      packet_size = PACKET_1K_SIZE;
      break;
    case EOT:
      return 0;
    case CAN:
      if ((Receive_Byte(&c, timeout) == 0) && (c == CAN))
      {
        *length = -1;
        return 0;
      }
      else
      {
        return -1;
      }
    case ABORT1:
    case ABORT2:
      return 1;
    default:
      return -1;
  }
  *data = c;
  for (i = 1; i < (packet_size + PACKET_OVERHEAD); i ++)
  {
    if (Receive_Byte(data + i, timeout) != 0)
    {
      return -1;
    }
  }
  if (data[PACKET_SEQNO_INDEX] != ((data[PACKET_SEQNO_COMP_INDEX] ^ 0xff) & 0xff))
  {
    return -1;
  }
  *length = packet_size;
  return 0;
}
/*******************************************************************************
* Function Name  : Ymodem_Receive
* Description    : Receive a file using the ymodem protocol 
* Input          : Address of the first byte 
* Return         : The size of the file                                                               
*******************************************************************************/
u8 sector[10]={0,0};
u8 s_index=0;

s32 Ymodem_Receive (char *buf)
{

  
  
  char packet_data[PACKET_1K_SIZE + PACKET_OVERHEAD], file_size[FILE_SIZE_LENGTH], *file_ptr, *buf_ptr;
  s32 i, j, packet_length, session_done, file_done, packets_received, errors, session_begin, size = 0;
  u32 Sector_Mask = 0;  
  for (session_done = 0, errors = 0, session_begin = 0; ;)
  {
    for (packets_received = 0, file_done = 0, buf_ptr = buf; ;)
    {
      switch (Receive_Packet(packet_data, &packet_length, NAK_TIMEOUT))
      {
        case 0:
          errors = 0;
           switch (packet_length)
           {
             case -1:    /* Abort by sender */
               Send_Byte(ACK);
               return 0;
             case 0:     /* End of transmission */
               Send_Byte(ACK);
               file_done = 1;
               break;
             default:    /* Normal packet */
               if ((packet_data[PACKET_SEQNO_INDEX] & 0xff) != (packets_received & 0xff))
               {
                 Send_Byte(NAK);
               }
               else
               {
                 if (packets_received == 0)   /* Filename packet */
                 {
                   if (packet_data[PACKET_HEADER] != 0)    /* Filename packet has valid data */
                   {
                     for (i = 0, file_ptr = packet_data + PACKET_HEADER; (*file_ptr != 0) && (i < FILE_NAME_LENGTH);)
                     {
                       file_name[i++] = *file_ptr++;
                     }
                     file_name[i++] = '\0';
                     for (i = 0, file_ptr ++; (*file_ptr != ' ') && (i < FILE_SIZE_LENGTH);)
                     {
                       file_size[i++] = *file_ptr++;
                     }
                     file_size[i++] = '\0';
                     Str2Int(file_size, &size);
                     
                     /* Test the size of the image to be sent */
                     if (size > 0x3E000)
                     {
                       /* End session */
                       Send_Byte(CAN);
                       Send_Byte(CAN);
                       return -1;
                     }
                     /* Erase the needed sectors */
                     Sector_Mask = FLASH_SectorMask(size);
                     
                     sector[s_index++]=Sector_Mask;
                     
                     FLASH_SectorErase(Sector_Mask);

                     
                     GPIO1->PD  |= 0x0010; // p1.4 turn on
                     
                     
                     Send_Byte(ACK);
                     Send_Byte(CRC16);
                   }
                   else   /* Filename packet is empty; end session */
                   {
                     Send_Byte(ACK);
                     file_done = 1;
                     session_done = 1;
                     break;
                   }
                 }
                 else    /* Data packet */
                 {
                   memcpy(buf_ptr, packet_data + PACKET_HEADER, packet_length);
                   Ram_Source = 0x20002000;
                   for (j=0;(j<packet_length)&&(Flash_Destination < Flash_Offset + size);j+=4)
                   {
                     /* Program the data received into Flash */
                     FLASH_WordWrite(Flash_Destination,*(u32*)Ram_Source);
                     if(*(u32*)Flash_Destination != *(u32*)Ram_Source)
                     {
                       GPIO1->PD  |= 0x0020; // p1.5 turn on
                       /* End session */
                       Send_Byte(CAN);
                       Send_Byte(CAN);
                       return -2;
                     }
                     Flash_Destination += 4;                     
                     Ram_Source+=4;
                   }                   

                   Send_Byte(ACK);
                 }
                 packets_received ++;
                 session_begin = 1;
               }
             }
             break;
           case 1:
             Send_Byte(CAN);
             Send_Byte(CAN);
             return -3;
           default:
             if (session_begin > 0)
             {
               errors ++;
             }
             if (errors > MAX_ERRORS)
             {
               Send_Byte(CAN);
               Send_Byte(CAN);
               return 0;
             }
             Send_Byte(CRC16);
             break;
         }
         if (file_done != 0)
         {
         break;
       }
     }
     if (session_done != 0)
     {
       break;
     }
  }  
  
  GPIO1->PD  &= 0xffef;  // p1.4 turn off
  GPIO1->PD  &= 0xffdf;  // p1.5 turn off
  
  return (s32)size;
}
/*******************(C)COPYRIGHT 2006 STMicroelectronics *****END OF FILE****/

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品精品国产高清一毛片一天堂| 国产成人综合网| 在线观看欧美精品| 有坂深雪av一区二区精品| 成人少妇影院yyyy| 最新热久久免费视频| 国产98色在线|日韩| 久久久久久久久久久电影| 久久黄色级2电影| 久久嫩草精品久久久久| 国产综合色在线| 国产欧美日韩在线| jizzjizzjizz欧美| 中文字幕中文字幕中文字幕亚洲无线 | 青娱乐精品视频在线| 亚洲色图一区二区| 成人av先锋影音| 亚洲啪啪综合av一区二区三区| 色吊一区二区三区| 亚洲国产美女搞黄色| 日韩三级.com| 国产福利一区二区| 亚洲猫色日本管| 欧美久久久一区| 国产一区二区免费视频| 国产精品水嫩水嫩| 欧美网站一区二区| 韩国女主播一区| ...xxx性欧美| 欧美浪妇xxxx高跟鞋交| 国产一区二区成人久久免费影院 | 在线一区二区三区做爰视频网站| 亚洲18女电影在线观看| 久久女同互慰一区二区三区| 色婷婷av一区二区三区之一色屋| 免费看黄色91| 亚洲视频在线观看三级| 日韩一区二区在线观看视频| 成人午夜激情在线| 久久精品国产秦先生| 亚洲一区免费观看| 国产精品麻豆久久久| 日韩视频免费观看高清在线视频| 99久久久精品| 国产精品亚洲视频| 美国欧美日韩国产在线播放| 国产精品综合一区二区| 亚洲日本丝袜连裤袜办公室| www激情久久| 91精品国产综合久久久蜜臀粉嫩| 99精品视频一区| 成人91在线观看| 国产一区二区三区高清播放| 精品视频色一区| 国产精品你懂的在线欣赏| 久久综合九色综合97婷婷女人| 欧美精品色综合| 欧美日韩在线观看一区二区| 91丨国产丨九色丨pron| 高潮精品一区videoshd| 国产成人午夜99999| 久久成人久久鬼色| 国产美女主播视频一区| 精品一区二区三区免费| 国产在线国偷精品产拍免费yy| 午夜精品福利在线| 亚洲电影一区二区| 亚洲一二三区在线观看| 亚洲国产精品视频| 亚洲成在线观看| 日本vs亚洲vs韩国一区三区| 玉米视频成人免费看| 国产aⅴ综合色| av午夜精品一区二区三区| 成人av在线观| 成人99免费视频| 91超碰这里只有精品国产| 欧美三级日本三级少妇99| 欧美日韩亚洲高清一区二区| 日本国产一区二区| 欧美亚洲日本国产| 欧美三级资源在线| 欧美日韩激情一区| 日韩精品一区二区三区三区免费| 日韩午夜电影在线观看| 精品日韩成人av| 国产日韩欧美亚洲| 综合电影一区二区三区| 一区二区三区视频在线观看| 亚洲不卡一区二区三区| 一区二区三区精品在线观看| 亚洲福利视频一区二区| 天天综合网 天天综合色| 国产一区二区三区美女| 99热99精品| 欧美日韩国产电影| 久久久www成人免费毛片麻豆 | 色一区在线观看| 欧美亚洲动漫精品| 日韩欧美国产午夜精品| 中文字幕成人网| 午夜亚洲国产au精品一区二区| 久草热8精品视频在线观看| 成人高清在线视频| 欧美日韩情趣电影| 中文字幕国产精品一区二区| 亚洲国产综合91精品麻豆| 国产成人一级电影| 8x8x8国产精品| 国产精品成人免费| 久久精品国产77777蜜臀| 色综合久久天天| 国产欧美一区二区三区沐欲| 亚洲123区在线观看| 99精品国产99久久久久久白柏| 精品91自产拍在线观看一区| 亚洲乱码中文字幕| 国产 日韩 欧美大片| 精品国产免费一区二区三区四区| 亚洲一区二区视频在线观看| av亚洲精华国产精华| 精品久久久久av影院| 亚洲欧美激情视频在线观看一区二区三区 | 久草在线在线精品观看| 欧美日韩一二三区| 国产欧美一区二区三区在线看蜜臀| 亚洲一区二区精品久久av| 99精品视频在线观看| 国产精品污www在线观看| 狠狠色丁香婷综合久久| 日韩免费性生活视频播放| 亚洲国产一二三| 欧美日韩大陆一区二区| 亚洲高清一区二区三区| 色丁香久综合在线久综合在线观看| 国产精品福利一区二区三区| 国产成人日日夜夜| 精品国产一区二区三区不卡| 精品亚洲欧美一区| 久久久久久久综合狠狠综合| 韩国三级在线一区| 国产精品视频线看| 91看片淫黄大片一级| 亚洲国产日韩a在线播放性色| 99re热这里只有精品视频| 一区二区三区在线观看欧美| 欧美丝袜丝交足nylons图片| 午夜精品一区二区三区免费视频| 欧洲精品一区二区| 亚洲制服丝袜在线| 欧美一区二区日韩一区二区| 国模冰冰炮一区二区| 国产精品色一区二区三区| 日本二三区不卡| 麻豆精品国产传媒mv男同| 欧美激情一区二区三区全黄 | 麻豆视频观看网址久久| 日本一区二区视频在线观看| 91免费观看视频在线| 日韩在线卡一卡二| 国产精品久久久久久福利一牛影视| 91美女在线观看| 久久er精品视频| 国产视频一区不卡| 在线观看一区不卡| 婷婷开心久久网| 综合在线观看色| 日韩欧美www| 欧美丝袜第三区| 国产成人丝袜美腿| 轻轻草成人在线| 亚洲国产精品久久艾草纯爱| 国产亚洲视频系列| 91精品国产综合久久福利软件| 国产成人亚洲综合色影视| 亚洲va韩国va欧美va精品| 国产精品国产三级国产普通话99| 8x8x8国产精品| 欧美午夜一区二区| 波多野结衣中文字幕一区二区三区 | 看片的网站亚洲| 亚洲成人在线免费| 久久精品视频在线看| 欧美区在线观看| 欧美中文字幕亚洲一区二区va在线| 国产精品99久久久久| 日本美女一区二区三区视频| 亚洲国产日韩综合久久精品| 国产精品久久久久久久久动漫| 久久久午夜电影| www久久精品| 久久九九久精品国产免费直播| 精品久久国产97色综合| 久久综合中文字幕| 久久久久久免费网| 日韩一区二区在线免费观看| 91精品国产色综合久久| 欧美一级生活片| 日韩精品中文字幕在线不卡尤物| 91精品午夜视频|