Интеграция библиотеки embedTLS с ошибкой LwIP 2.1.0 при неопределенной ссылке на '_gettimeofday'

Я пробовал интегрировать библиотеку mbedTLS с LwIP 2.1.0. Я добавил следующее в свой файл lwipopts.h

#ifndef LWIP_ALTCP
#define LWIP_ALTCP 1
#endif

#ifndef LWIP_ALTCP_TLS
#define LWIP_ALTCP_TLS 1
#endif

Я добавил библиотеку в свой проект следующим образом и сослался на них для компилятора:

введите здесь описание изображения

Я также внес изменения в файл mbedtls/include/config.h, чтобы не использовать Windows или Linux.

Я получаю «неопределенную ссылку на «_gettimeofday», где я сузил ее до единственного места, где это определено, в моей цепочке инструментов arm-gnu:

#ifdef _COMPILING_NEWLIB
int _EXFUN(_gettimeofday, (struct timeval *__p, void *__tz));
#endif

В чем может быть дело? Все компилирует файл, когда я отключаю LWIP_ALTCP_TLS, но тогда TLS нельзя использовать. Есть ли еще флаги, которые мне нужно включить/выключить?


person Müller    schedule 04.12.2019    source источник


Ответы (1)


RTFM: функция _gettimeofday() — это системный вызов, который пользователь должен реализовать при использовании функций даты и времени из newlib.

Минимальная реализация довольно проста:

int _gettimeofday (struct timeval *tp, void *tzp){
  tp->tv_sec = unixTimeInSecs;
  tp->tv_usec = 0; 
  return 0;
}

Библиотеки TLS требуют текущего времени для проверки сертификата: SSL-сертификаты действительны только в пределах определенного диапазона дат.

person Turbo J    schedule 05.12.2019