⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 server.c

📁 非tffs格式的flash读写程序。其实大体格式都一样
💻 C
字号:
#include "vxworks.h"
#include "socket.h"
#include "sockLib.h"
#include "inetLib.h"
#include "stdioLib.h"
#include "strLib.h"
#include "hostLib.h"
#include "ioLib.h"
#include "test.h"
#include "msgQLib.h"
/* #include "cfiflash16.h" */

int sfd;
char rmsg[MAX_MSG_SIZE];
struct sockaddr_in saddr;
int socksize= sizeof(struct sockaddr_in);
extern MSG_Q_ID MsgQId1;

struct ip_mreq ipMreq;  

int init_server(void)
{
 
  int optval=1, loop=1;
 
  /* creat a socket , use Internet address, udp type, protocol 0 ,return a socket description*/
  sfd=socket(AF_INET,SOCK_DGRAM,0);
  if(sfd<0){
    printf("socket creat error.\n");
    return(0);
  }
  
  /* clear socket */
  bzero((char *)&saddr,socksize);
  
  saddr.sin_family=AF_INET;
  saddr.sin_addr.s_addr=htonl(INADDR_ANY);
  saddr.sin_port=htons(SERVER_PORT);
/*
  if ( setsockopt (sfd, SOL_SOCKET, SO_REUSEADDR, &optval, sizeof (optval))<0){
    printf("allow multi socket use.\n");
    return(0);
  }

*/
    
  /* bind a socket with a port */
  if(bind(sfd,(struct sockaddr *)&saddr,sizeof(saddr))<0){
    printf("bind error.\n");
    return(0);
  }
/*  
  if ( setsockopt (sfd, IPPROTO_IP, IP_MULTICAST_LOOP, &loop, sizeof (loop))<0){
    printf("MUITICAST LOOP error.\n");
    return(0);
  }

  ipMreq.imr_multiaddr.s_addr = inet_addr("244.0.0.1");
  ipMreq.imr_interface.s_addr = htonl (INADDR_ANY);

  if ( ipMreq.imr_multiaddr.s_addr == -1){
   printf("set multicast address error.\n");
  } 
  

  if ( setsockopt (sfd, IPPROTO_IP, IP_ADD_MEMBERSHIP, (char *)&ipMreq,sizeof (ipMreq))<0 ){
    printf("add membership error.\n");
    return(0);
  }
*/
  return 1;
}

void task_server( void )
{
 int i,n,len;
 char *p1,*p2;
 p1=malloc(0x200000);
 p2=p1;
 
 memset(p1,0x34,0x200000);
 init_flash_memory();
 init_flash(NULL);
 flash_reset();
 flash_chip_erase(0);

/* bobflash();*/
 init_server( ); 
 
 while(1){  
 len=0;
   while(1)
     {
       n=recvfrom(sfd,rmsg,MAX_MSG_SIZE,0,(struct sockaddr*)&saddr,&socksize);
     
      /*  msgQSend(MsgQId1,rmsg,n,NO_WAIT,MSG_PRI_NORMAL);    */ 
       printf("\nrmsg length is: %x", n);
    
          
      for (i=0;i<(n-1);i++){
        *p1 = rmsg[i+1];
        p1++;
        len++;
      }
     
      if (len==0x180000)
       break;
      if (rmsg[0]==1)
       break;
     }
  
 /* for intel 28f016b3b*/
/*
 *(unsigned long *)(0x47010110)=0x70001001;
readID( );
i28f016Erase(1,17);
i28f016Write(0,(void *)p2,0x80000);
*/
 /* for amd AM29LV160DB*/
 
  flash_reset();

  flash_chip_erase(0);

 
   bob_flash_write(0,0, p2,0x100000,0);
   printf("ok\n");  
   bob_flash_verify(0,0,p2,0x100000,0);

   printf("ok\n");
   p1=p2;

 

 }      
  	 
    
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -