Цитата(PoReX @ Apr 18 2013, 15:58)

Кстати, а зачем передавать настройки DHCP из bootloader'a в основную программу? Все равно в main'е инициализируете стек? У меня, например, в bootloader'e uip стек, а в основной программе lwip, и там, и там есть DHCP клиент, т.е. никакие настройки от botloader'a о DHCP, DNS, IP не передаются.
STM32F1xx, но баттарейку никто не подлючал. DHCP параетры нужно передать, чтобы после перехода от бутлоадера к основной программе стек был инициализирован уже имеющимися параметрами сети, иначе если стек начнет запрашивать новые, то может получить иной IP, а этого быть не должно. Поэтому суть такова, что сетевые параметры сохраняются в области RAM, и если они там присутствуют и валидные, то стек инициализируются ими, а не по DHCP.
Оба стека lwIP.
Вот так объявлен IP адрес:
Код
struct ip_addr {
PACK_STRUCT_FIELD(u32_t addr);
} PACK_STRUCT_STRUCT;
PACK_STRUCT_END
Вынес значение сетевых параметров в отдельный файл:
Код
static struct ip_addr g_ip;
static struct ip_addr g_gw;
static struct ip_addr g_mask;
static struct ip_addr g_checksum;
Делается проверка, что значения сетевых параметров в памяти не мусор:
Код
if( (uint32_t) g_ip ^ (uint32_t) g_gw ^ (uint32_t) g_mask == g_checksum) {
// Action
}
Но компилятор отдает:
Код
src\netconf.c(82): error: #171: invalid type conversion
Как правильно преобразовать тип, чтобы проверить валидность XOR`ом?