Hi.
I'm in the process of migrating an application from the nRF51822 and SDK 12.2.0 to the nRF52832 and SDK 13.0.0. My code now compiles but doesn't link. Here's the make output at the linking stage:
Linking target: _build/app_s132.out
"/Users/eliot/dev/gcc-arm-none-eabi-4_9-2015q3/bin/arm-none-eabi-gcc" -Wl,-Map=_build/app_s132.map -mthumb -mabi=aapcs -L /Users/eliot/dev/nRF5_SDK_13.0.0_04a0bfd/components/toolchain/gcc -T./app_gcc_nrf52.ld -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16 -Wl,--gc-sections --specs=nano.specs -lc -lnosys -u _printf_float -u _scanf_float @_build/app_s132.in -lm -o _build/app_s132.out
_build/app_s132_acc_kionix_ktxj2.c.o: In function `acc_kionix_clear_interrupt':
/Users/eliot/dev/biketracker/biketracker-firmware/app/bt08_nrf52/../acc_kionix_ktxj2.c:592: undefined reference to `app_twi_perform'
_build/app_s132_acc_kionix_ktxj2.c.o: In function `acc_kionix_init':
/Users/eliot/dev/biketracker/biketracker-firmware/app/bt08_nrf52/../acc_kionix_ktxj2.c:134: undefined reference to `app_twi_init'
_build/app_s132_acc_kionix_ktxj2.c.o: In function `acc_kionix_program':
/Users/eliot/dev/biketracker/biketracker-firmware/app/bt08_nrf52/../acc_kionix_ktxj2.c:310: undefined reference to `app_twi_perform'
/Users/eliot/dev/biketracker/biketracker-firmware/app/bt08_nrf52/../acc_kionix_ktxj2.c:350: undefined reference to `app_twi_perform'
/Users/eliot/dev/biketracker/biketracker-firmware/app/bt08_nrf52/../acc_kionix_ktxj2.c:359: undefined reference to `app_twi_perform'
/Users/eliot/dev/biketracker/biketracker-firmware/app/bt08_nrf52/../acc_kionix_ktxj2.c:370: undefined reference to `app_twi_perform'
/Users/eliot/dev/biketracker/biketracker-firmware/app/bt08_nrf52/../acc_kionix_ktxj2.c:384: undefined reference to `app_twi_perform'
_build/app_s132_acc_kionix_ktxj2.c.o:/Users/eliot/dev/biketracker/biketracker-firmware/app/bt08_nrf52/../acc_kionix_ktxj2.c:395: more undefined references to `app_twi_perform' follow
_build/app_s132_ble_periph.c.o: In function `tps_init':
/Users/eliot/dev/biketracker/biketracker-firmware/app/bt08_nrf52/../ble_periph.c:509: undefined reference to `ble_tps_init'
_build/app_s132_gps_antenova_m10478.c.o: In function `gps_get':
/Users/eliot/dev/biketracker/biketracker-firmware/app/bt08_nrf52/../gps_antenova_m10478.c:200: undefined reference to `nrf_pwr_mgmt_run'
_build/app_s132_main.c.o: In function `main':
/Users/eliot/dev/biketracker/biketracker-firmware/app/bt08_nrf52/../main.c:75: undefined reference to `nrf_pwr_mgmt_init'
/Users/eliot/dev/biketracker/biketracker-firmware/app/bt08_nrf52/../main.c:128: undefined reference to `nrf_pwr_mgmt_run'
/Users/eliot/dev/biketracker/biketracker-firmware/app/bt08_nrf52/../main.c:182: undefined reference to `nrf_pwr_mgmt_run'
_build/app_s132_modem_td1207.c.o: In function `modem_get':
/Users/eliot/dev/biketracker/biketracker-firmware/app/bt08_nrf52/../modem_td1207.c:191: undefined reference to `nrf_pwr_mgmt_run'
_build/app_s132_state.c.o: In function `state_change_sys_off_async':
/Users/eliot/dev/biketracker/biketracker-firmware/app/bt08_nrf52/../state.c:562: undefined reference to `nrf_pwr_mgmt_shutdown'
_build/app_s132_tracking.c.o: In function `alert':
/Users/eliot/dev/biketracker/biketracker-firmware/app/bt08_nrf52/../tracking.c:370: undefined reference to `nrf_pwr_mgmt_run'
_build/app_s132_nrf_drv_saadc.c.o: In function `nrf_drv_saadc_channel_init':
/Users/eliot/dev/nRF5_SDK_13.0.0_04a0bfd/components/drivers_nrf/saadc/nrf_drv_saadc.c:345: undefined reference to `nrf_saadc_channel_init'
_build/app_s132_nrf_drv_common.c.o: In function `POWER_CLOCK_IRQHandler':
/Users/eliot/dev/nRF5_SDK_13.0.0_04a0bfd/components/drivers_nrf/common/nrf_drv_common.c:284: undefined reference to `nrf_drv_power_onIRQ'
_build/app_s132_nrf_drv_uart.c.o: In function `nrf_drv_uart_init':
/Users/eliot/dev/nRF5_SDK_13.0.0_04a0bfd/components/drivers_nrf/uart/nrf_drv_uart.c:273: undefined reference to `nrf_strerror_get'
/Users/eliot/dev/nRF5_SDK_13.0.0_04a0bfd/components/drivers_nrf/uart/nrf_drv_uart.c:296: undefined reference to `nrf_strerror_get'
_build/app_s132_nrf_drv_uart.c.o: In function `nrf_drv_uart_tx':
/Users/eliot/dev/nRF5_SDK_13.0.0_04a0bfd/components/drivers_nrf/uart/nrf_drv_uart.c:413: undefined reference to `nrf_strerror_get'
/Users/eliot/dev/nRF5_SDK_13.0.0_04a0bfd/components/drivers_nrf/uart/nrf_drv_uart.c:428: undefined reference to `nrf_strerror_get'
_build/app_s132_nrf_drv_uart.c.o: In function `nrf_drv_uart_tx_for_uarte':
/Users/eliot/dev/nRF5_SDK_13.0.0_04a0bfd/components/drivers_nrf/uart/nrf_drv_uart.c:399: undefined reference to `nrf_strerror_get'
_build/app_s132_nrf_drv_uart.c.o:/Users/eliot/dev/nRF5_SDK_13.0.0_04a0bfd/components/drivers_nrf/uart/nrf_drv_uart.c:602: more undefined references to `nrf_strerror_get' follow
_build/app_s132_app_uart_fifo.c.o: In function `uart_event_handler':
/Users/eliot/dev/nRF5_SDK_13.0.0_04a0bfd/components/libraries/uart/app_uart_fifo.c:75: undefined reference to `app_fifo_put'
/Users/eliot/dev/nRF5_SDK_13.0.0_04a0bfd/components/libraries/uart/app_uart_fifo.c:111: undefined reference to `app_fifo_get'
_build/app_s132_app_uart_fifo.c.o: In function `app_uart_init':
/Users/eliot/dev/nRF5_SDK_13.0.0_04a0bfd/components/libraries/uart/app_uart_fifo.c:144: undefined reference to `app_fifo_init'
/Users/eliot/dev/nRF5_SDK_13.0.0_04a0bfd/components/libraries/uart/app_uart_fifo.c:148: undefined reference to `app_fifo_init'
_build/app_s132_app_uart_fifo.c.o: In function `app_uart_get':
/Users/eliot/dev/nRF5_SDK_13.0.0_04a0bfd/components/libraries/uart/app_uart_fifo.c:204: undefined reference to `app_fifo_get'
_build/app_s132_app_uart_fifo.c.o: In function `app_uart_put':
/Users/eliot/dev/nRF5_SDK_13.0.0_04a0bfd/components/libraries/uart/app_uart_fifo.c:223: undefined reference to `app_fifo_put'
/Users/eliot/dev/nRF5_SDK_13.0.0_04a0bfd/components/libraries/uart/app_uart_fifo.c:236: undefined reference to `app_fifo_get'
_build/app_s132_softdevice_handler.c.o: In function `softdevice_handler_init':
/Users/eliot/dev/nRF5_SDK_13.0.0_04a0bfd/components/softdevice/common/softdevice_handler/softdevice_handler.c:380: undefined reference to `nrf_drv_power_on_sd_enable'
collect2: error: ld returned 1 exit status
make: *** [_build/app_s132.out] Error 1
It seems that the sources that contain these functions are all being compiled OK. I can see their .o
files in _build
and if I run objdump
on them, there's stuff in there. When I check the .in
file in _build
, all the right .o
files are in there. For comparison, a couple of example projects in the SDK examples will build just fine.
Here's my full project Makefile:
And here's the full, verbose output from the build:
I'm stumped.
[edit]
Object and dependency files for app_twi.c
: