HelTecAutomation / ESP32_LoRaWAN

Transplanted from Semtech LoRaWAN(https://github.com/Lora-net/LoRaMac-node) protocol to "ESP32 + Arduino" platform. Use RTC, support deep sleep, only working with ESP32 + LoRa boards made by HelTec Automation(TM). Need a unique license to use it.
344 stars 108 forks source link

libESP32_LoRaWAN.a Not linking with PLATFORM: Espressif 32 (4.0.0) and higher #79

Open giukio opened 2 years ago

giukio commented 2 years ago

When compiling using espressif 32 version higher than 3.5.0 I get these errors at link stage:

Linking .pio\build\heltec_wireless_stick_lite\firmware.elf .pio\build\heltec_wireless_stick_lite\lib486\libESP32_LoRaWAN.a(rtc-board.S.o): in function TimerGetTimerValue': D:\\61722\\Documents\\Arduino\\libraries\\ESP32_LoRaWAN_VASR\\src\/rtc-board.c:95:(.text.TimerGetTimerValue+0x27): dangerous relocation: call8: call target out of range: __udivdi3 .pio\build\heltec_wireless_stick_lite\lib486\libESP32_LoRaWAN.a(rtc-board.S.o): in functionTimerGetElapsedAlarmTime': D:\61722\Documents\Arduino\libraries\ESP32_LoRaWAN_VASR\src\/rtc-board.c:108:(.text.TimerGetElapsedAlarmTime+0x3a): dangerous relocation: call8: call target out of range: udivdi3 .pio\build\heltec_wireless_stick_lite\lib486\libESP32_LoRaWAN.a(rtc-board.S.o): in function `TimerComputeElapsedTime': D:\61722\Documents\Arduino\libraries\ESP32_LoRaWAN_VASR\src\/rtc-board.c:135:(.text.TimerComputeElapsedTime+0x32): dangerous relocation: call8: call target out of range: udivdi3 collect2.exe: error: ld returned 1 exit status *** [.pio\build\heltec_wireless_stick_lite\firmware.elf] Error 1

platformio.ini [env:heltec_wireless_stick] platform = espressif32 board = heltec_wireless_stick framework = arduino lib_deps = heltecautomation/Heltec ESP32 Dev-Boards@^1.1.0 heltecautomation/ESP32_LoRaWAN@^2.1.1

johannes-777 commented 2 years ago

I tried to dig a bit deeper into this problem with espressif 32 V4.3 and found that the same error remains. So I commented out the lines that used __udivdi3 in

like this

Then ESP32 MCU init complained about the license (maybe rtc_board.S is used for license checking?) It did however take the license obtained by https://resource.heltec.cn/search -> lora.cpp -> uint32_t license[4]

After this, MCU init started, just to call "abort()" shortly after. So this is my logfile so far:

rst:0xc (SW_CPU_RESET),boot:0x17 (SPI_FAST_FLASH_BOOT) configsip: 188777542, SPIWP:0xee clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00 mode:DIO, clock div:2 load:0x3fff0030,len:1184 load:0x40078000,len:12784 load:0x40080400,len:3032 entry 0x400805e4 [ 2][V][WiFiServer.h:42] WiFiServer(): WiFiServer::WiFiServer(port=21, ...) [ 3][V][WiFiServer.h:42] WiFiServer(): WiFiServer::ɡport=50009, ...) [ 8][D][esp32-hal-cpu.c:214] setCpuFrequencyMhz(): PLL: 480 / 2 = 240 Mhz, APB: 80000000 Hz xMutex_Logging created successfully INFO: xMutex_I2C created successfully [... some of my startup logs ] general L051 00:06:47,813 INFO: Power Up Reset detected PWM_FAN L141 00:06:47,813 INFO: FAN Init PWM_FAN L129 00:06:47,815 INFO: Set speed to 70 % ESP32 MCU init...

abort() was called at PC 0x400828ea on core 1

Backtrace:0x40083fb9:0x3ffb26700x4008b5fd:0x3ffb2690 0x400908b9:0x3ffb26b0 0x400828ea:0x3ffb2730 0x40082ec0:0x3ffb2780 0x400d624f:0x3ffb27a0 0x400d689d:0x3ffb27c0 0x400dd853:0x3ffb27f0 0x400e5e96:0x3ffb2820

ELF file SHA256: 0000000000000000

Rebooting...