Здравствуйте. Начал разбираться с исходниками для WIZ5100. Исходники написаны под WINAVR.
Файл task_config.h:
CODE
#include <pgmspace.h>
//#include <eeprom.h>
#define EEPOP 0
#define SPECIALOP 0x82
#define VER_H 1
#define VER_L 3
#define SOCK_CONFIG 3
#define EEPADDR_VER 4
#define SBUF_LENGTH 253
// Special char values
#define CR 0x0D
#define LF 0x0A
#define CONFIG_CLIENT_PORT 48713
#define CONFIG_SERVER_PORT 48714
#define CONFIG_UP_PORT 48715
typedef struct
{
unsigned char op[4]; //0 ~ 3
unsigned char ver[2]; //4 ~ 5
unsigned char mac[6]; //6 ~ 11
unsigned char ip[4]; //12 ~ 15
unsigned char subnet[4]; //16 ~ 19
unsigned char gw[4]; //20 ~ 23
unsigned char dhcp; //24
unsigned char myMac[6]; //25 ~ 30 //the old mac address; Ver 1.3; 2010.02.08
} StrConfigParam;
#define DefConfigParam "x82x82x82x82x00x00x00x08xDCx00x00x00xC0xA8x00x03xFFxFFxFFx00xC0xA8x00x01x00
x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x08xDCx00x00x0
0"
Файл task_config.с:
#include <ioavr.h>
#include <inavr.h>
#include <stdio.h>
#include <string.h>
#include "mcu/types.h"
#include "iinchip/socket.h"
#include "util/wiz_util.h"
#include "task_config.h"
StrConfigParam NetworkParam, MSGConfig;
extern unsigned char m_FlagFlashWrite;
extern void InitFlash(void);
//-----------------------------------------------------------------------------
void default_network(void)
{
// unsigned long ip;
memcpy(&NetworkParam, DefConfigParam, sizeof(NetworkParam));
eeprom_write_block(&NetworkParam, (unsigned char*)EEPOP, sizeof(NetworkParam));
eeprom_write_byte((unsigned char*)EEPADDR_VER, VER_H);
eeprom_write_byte((unsigned char*)(EEPADDR_VER+1), VER_L);
}
//-----------------------------------------------------------------------------
void SetConfig(void)
{
unsigned char temp;
// Get Network Parameters
temp = eeprom_read_byte((unsigned char*)EEPOP);
if( temp != SPECIALOP)
{
// This board is initial state
default_network();
}
else
{
eeprom_read_block(&NetworkParam, (unsigned char*)EEPOP, sizeof(NetworkParam));
//check version
if( (eeprom_read_byte((unsigned char*)EEPADDR_VER) != VER_H) ||
(eeprom_read_byte((unsigned char*)(EEPADDR_VER+1)) != VER_L) ) {
eeprom_write_byte((unsigned char*)EEPADDR_VER, VER_H);
eeprom_write_byte((unsigned char*)(EEPADDR_VER+1), VER_L);
}
NetworkParam.ver[0] = VER_H;
NetworkParam.ver[1] = VER_L;
}
setSIPR(NetworkParam.ip);
setGAR(NetworkParam.gw);
setSUBR(NetworkParam.subnet);
setSHAR(NetworkParam.mac);
}
//-----------------------------------------------------------------------------
ПОдскажите пожалуйста как можно написать функции:
eeprom_write_block
eeprom_write_byte
eeprom_read_block
eeprom_read_byte
используя обращение к __eeprom в IAR?
Заранее благодарен
Сообщение отредактировал IgorKossak - Dec 10 2011, 15:04
Причина редактирования: [codebox]