Показать сообщение отдельно
Старый 18.02.2013, 12:27   #62
ampersant
Senior Member
 
Аватар для ampersant
 
Регистрация: 26.02.2008
Адрес: IgorV
Сообщений: 2,536
Вес репутации: 4887/118
ampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond repute
По умолчанию Re: Нужна помощь с TCP/IP

Цитата:
Сообщение от AlexKid Посмотреть сообщение
Нашел только где дефаулты пишутся, а где потом заменяются на значения с памяти .....?
а там же должно быть, вернее даже так: если не выполняется признак что в памяти лежат валидные данные (как раз вызывается функция чтения из носителя), то вызываются дефолтные данные.
А если признак выполняется, то данные уже на месте и ничего больше тут делать не надо.

Почему не конкретно написал где и как и откуда - все зависит от того где оно хранится и как читается. Я вот в памяти программ вообще хранить решил. меняется крайне редко, настроил и забыл. Если надо часто чтобы менялось надо подумать об DHCP или на худой конец внешние носители.

как то так
Код:
static ROM BYTE SerializedMACAddress[6] = {MY_DEFAULT_MAC_BYTE1, MY_DEFAULT_MAC_BYTE2, MY_DEFAULT_MAC_BYTE3, MY_DEFAULT_MAC_BYTE4, MY_DEFAULT_MAC_BYTE5, MY_DEFAULT_MAC_BYTE6};

static void InitAppConfig(void)                                                       //конфигурирование интерфейса платы
{
  //если в памяти есть метка - чтение конфигурации из флешки
 if( Config_Rd((BYTE *)&AppConfig)!= 1 ) // если не прочиталось                                                       
  {  //память чистая
    //конфигурация по умолчанию
    AppConfig.Flags.bIsDHCPEnabled = FALSE;
    AppConfig.Flags.bInConfigMode = TRUE;
    memcpypgm2ram((void*)&AppConfig.MyMACAddr, (ROM void*)SerializedMACAddress, sizeof(AppConfig.MyMACAddr));
    AppConfig.MyIPAddr.Val = MY_DEFAULT_IP_ADDR_BYTE1 | MY_DEFAULT_IP_ADDR_BYTE2<<8ul | MY_DEFAULT_IP_ADDR_BYTE3<<16ul | MY_DEFAULT_IP_ADDR_BYTE4<<24ul;
    AppConfig.DefaultIPAddr.Val = AppConfig.MyIPAddr.Val;
    AppConfig.MyMask.Val = MY_DEFAULT_MASK_BYTE1 | MY_DEFAULT_MASK_BYTE2<<8ul | MY_DEFAULT_MASK_BYTE3<<16ul | MY_DEFAULT_MASK_BYTE4<<24ul;
    AppConfig.DefaultMask.Val = AppConfig.MyMask.Val;
    AppConfig.MyGateway.Val = MY_DEFAULT_GATE_BYTE1 | MY_DEFAULT_GATE_BYTE2<<8ul | MY_DEFAULT_GATE_BYTE3<<16ul | MY_DEFAULT_GATE_BYTE4<<24ul;
    AppConfig.PrimaryDNSServer.Val = MY_DEFAULT_PRIMARY_DNS_BYTE1 | MY_DEFAULT_PRIMARY_DNS_BYTE2<<8ul  | MY_DEFAULT_PRIMARY_DNS_BYTE3<<16ul  | MY_DEFAULT_PRIMARY_DNS_BYTE4<<24ul;
    AppConfig.SecondaryDNSServer.Val = MY_DEFAULT_SECONDARY_DNS_BYTE1 | MY_DEFAULT_SECONDARY_DNS_BYTE2<<8ul  | MY_DEFAULT_SECONDARY_DNS_BYTE3<<16ul  | MY_DEFAULT_SECONDARY_DNS_BYTE4<<24ul;
    // Load the default NetBIOS Host Name
    memcpypgm2ram(AppConfig.NetBIOSName, (ROM void*)MY_DEFAULT_HOST_NAME, 15);
    FormatNetBIOSName(AppConfig.NetBIOSName);

    AppConfig.ServerIP = SERVER_DEFAULT_IP_BYTE;

    //записывать при старте не буем, только если будет специально требоваться
    //Config_Wr((BYTE*)&AppConfig); // запишем предустановленную конфигурацию
    LED1_IO=1; // данные не прочитаны - красный
  }
  else LED0_IO=1; // данные прочитаны - зеленый
}

Последний раз редактировалось ampersant; 18.02.2013 в 12:33.
ampersant вне форума   Ответить с цитированием