• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Oшибки при сборке SDK

sharikov

Active member
Пытаюсь собрать пример из sdk-ameba-rtl8710af-v3.5a_without_NDA_GCC_V1.0.0/project/realtek_ameba1_va0_example/GCC-RELEASE
Компилятор
gcc version 5.4.1 20160609 (release) [ARM/embedded-5-branch revision 237715]
выдает ошибку
Код:
/opt/gcc-arm-none-eabi-5_4-2016q2/bin/arm-none-eabi-gcc  -DM3 -DCONFIG_PLATFORM_8195A -DGCC_ARMCM3 -DARDUINO_SDK -mcpu=cortex-m3 -mthumb -g2 -w -O2 -Wno-pointer-sign -fno-common -fmessage-length=0  -ffunction-sections -fdata-sections -fomit-frame-pointer -fno-short-enums -mcpu=cortex-m3 -DF_CPU=166000000L -std=gnu99 -fsigned-char  -I../inc -I../../../component/soc/realtek/common/bsp -I../../../component/os/freertos -I../../../component/os/freertos/freertos_v8.1.2/Source/include -I../../../component/os/freertos/freertos_v8.1.2/Source/portable/GCC/ARM_CM3 -I../../../component/os/os_dep/include -I../../../component/soc/realtek/8195a/misc/driver -I../../../component/common/api/network/include -I../../../component/common/api -I../../../component/common/api/platform -I../../../component/common/api/wifi -I../../../component/common/api/wifi/rtw_wpa_supplicant/src -I../../../component/common/application -I../../../component/common/application/iotdemokit -I../../../component/common/application/google -I../../../component/common/media/framework -I../../../component/common/example -I../../../component/common/example/wlan_fast_connect -I../../../component/common/mbed/api -I../../../component/common/mbed/hal -I../../../component/common/mbed/hal_ext -I../../../component/common/mbed/targets/hal/rtl8195a -I../../../component/common/network -I../../../component/common/network/lwip/lwip_v1.4.1/port/realtek/freertos -I../../../component/common/network/lwip/lwip_v1.4.1/src/include -I../../../component/common/network/lwip/lwip_v1.4.1/src/include/lwip -I../../../component/common/network/lwip/lwip_v1.4.1/src/include/ipv4 -I../../../component/common/network/lwip/lwip_v1.4.1/port/realtek -I../../../component/common/test -I../../../component/soc/realtek/8195a/cmsis -I../../../component/soc/realtek/8195a/cmsis/device -I../../../component/soc/realtek/8195a/fwlib -I../../../component/soc/realtek/8195a/fwlib/rtl8195a -I../../../component/soc/realtek/8195a/misc/rtl_std_lib/include -I../../../component/common/drivers/wlan/realtek/include -I../../../component/common/drivers/wlan/realtek/src/osdep -I../../../component/common/drivers/wlan/realtek/src/hci -I../../../component/common/drivers/wlan/realtek/src/hal -I../../../component/common/drivers/wlan/realtek/src/hal/OUTSRC -I../../../component/soc/realtek/8195a/fwlib/ram_lib/wlan/realtek/wlan_ram_map/rom -I../../../component/common/network/ssl/polarssl-1.3.8/include -I../../../component/common/network/ssl/ssl_ram_map/rom -I../../../component/common/utilities -I../../../component/soc/realtek/8195a/misc/rtl_std_lib/include -I../../../component/common/application/apple/WACServer/External/Curve25519 -I../../../component/common/application/apple/WACServer/External/GladmanAES -I../../../component/soc/realtek/8195a/fwlib/ram_lib/usb_otg/include -I../../../component/common/video/v4l2/inc -I../../../component/common/media/codec -I../../../component/common/drivers/usb_class/host/uvc/inc -I../../../component/common/drivers/usb_class/device -I../../../component/common/drivers/usb_class/device/class -I../../../component/common/file_system/fatfs -I../../../component/common/file_system/fatfs/r0.10c/include -I../../../component/common/drivers/sdio/realtek/sdio_host/inc -I../../../component/common/audio -I../../../component/common/drivers/i2s -I../../../component/common/application/xmodem -c ../../../component/common/api/at_cmd/atcmd_ethernet.c -o ../../../component/common/api/at_cmd/atcmd_ethernet.o
In file included from ../../../component/common/api/at_cmd/atcmd_ethernet.c:7:0:
../../../component/common/network/lwip/lwip_v1.4.1/src/include/lwip/sockets.h:313:8: error: redefinition of 'struct timeval'
 struct timeval {
  ^
In file included from /opt/gcc-arm-none-eabi-5_4-2016q2/arm-none-eabi/include/sys/select.h:26:0,
  from /opt/gcc-arm-none-eabi-5_4-2016q2/arm-none-eabi/include/sys/types.h:68,
  from /opt/gcc-arm-none-eabi-5_4-2016q2/arm-none-eabi/include/stdio.h:48,
  from ../../../component/common/api/at_cmd/atcmd_ethernet.c:1:
/opt/gcc-arm-none-eabi-5_4-2016q2/arm-none-eabi/include/sys/_timeval.h:52:8: note: originally defined here
 struct timeval {
  ^
make[1]: *** [../../../component/common/api/at_cmd/atcmd_ethernet.o] Error 1
С -nostdinc не прокатило.
В mbed пишут что под новые компиляторы надо править lwip.

В то же время пример rtl00TstMinAmebaV35a от pvvx этим же компилятором собирается. Там исправлено что ли ?
 

pvvx

Активный участник сообщества
...
выдает ошибку [inline]struct timeval [/inline]
.....
В то же время пример rtl00TstMinAmebaV35a от pvvx этим же компилятором собирается. Там исправлено что ли ?
Исправлено. В новых arm-GCC добавлены либы и не одна.
По ошибке [inline]struct timeval [/inline] есть сноска в самом LwIP. Надо объявить переменную, что уже есть в базе:
У меня GNU_Tools_ARM_Embedded 5.4_2016q2.
Добавлено в lwipopts.h:
Код:
/** LWIP_TIMEVAL_PRIVATE: if you want to use the struct timeval provided
* by your system, set this to 0 and include <sys/time.h> in cc.h */
#if defined(_SYS__TIMEVAL_H_)
#define LWIP_TIMEVAL_PRIVATE 0
#endif
Но с 5.4_2016q2 есть ещё ошибки в SSL... Тоже исправил, но уже не помню :)
Да и в SDK вообще много ошибок при сборке с разной конфигурацией (если меняете platform_autoconf.h и/или platform_opts.h). Надо много править, чтобы в выходной код не вставлялась куча неиспользуемого хлама... До нормального варианта не допилил, т.к. не ясна программа выхода новых SDK. Вдруг завтра кинут новый?
 

sharikov

Active member
Исправлено. В новых arm-GCC добавлены либы и не одна.
Патч к "стандартной" sdk нужен.
lwip исправил как написано в mbed.
Еще пришлось исправлять wigadget.c - тоже конфликт с библитекой gcc.
//static unsigned int arc4random(void)
uint32_t arc4random(void)

Теперь пример собирается.
 

pvvx

Активный участник сообщества
Патч к "стандартной" sdk нужен.
lwip исправил как написано в mbed.
Еще пришлось исправлять wigadget.c - тоже конфликт с библитекой gcc.
//static unsigned int arc4random(void)
uint32_t arc4random(void)

Теперь пример собирается.
Процедур arc4random() в SDK не менее 3-х штук. :) Дублей других процедур, но с разными названиями в SDK наверно на не менее 30% выходного кода.
Если убрать ветвления по типу чипа, то код ещё хорошо сокращается. Но эти ветвления в основном в закрытых либах - там код чуть ли не для всех типов микросхем Realtek :). Надо ждать, что ещё просочиться.
А пока надо разобраться с eFuse и конфигами calibration_data WiFi в секторе по faddr 0xA000 и для SDK в 0x9000.
Иначе не работает даже PWM. Читает eFuse и говорит, что нет в чипе PWM :)
Патч hal_pwm.c стр 51:
Код:
   if (_FALSE == FunctionChk((pPwmAdapt->pwm_id + PWM0), pPwmAdapt->sel)) {
      //  return HAL_ERR_HW;
    }
Так-же неясности с HT40/HT20, куда выведены ноги ADC/DAC (их регистры работают в RTL8710) и т.д. и т.п. А то рисуют совсем неадекватные таблицы:
 
Последнее редактирование:
Сверху Снизу