реклама на сайте
подробности

 
 
> Портирование кода из WINAVR в IAR
sb_centr
сообщение Dec 10 2011, 10:13
Сообщение #1





Группа: Новичок
Сообщений: 2
Регистрация: 18-05-10
Пользователь №: 57 333



Здравствуйте. Начал разбираться с исходниками для 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]
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 31st July 2025 - 23:00
Рейтинг@Mail.ru


Страница сгенерированна за 0.01361 секунд с 7
ELECTRONIX ©2004-2016