Keil uVision V5 Legacy Nordic Project Compile Errors

Hello,

I am trying to compile a legacy Nordic Project for evaluation purposes and I am getting some compile errors. The details are as follows:

Project: https://github.com/NordicPlayground/nrf52-ble-image-transfer-demo

Keil: uVision V5.38.0.0 MDK-Lite

ARM Compiler: V5.06 Update 6 (Build 750)

Nordic SDK: v16.0.0.

Nordic SoftDevice: S132 v7.0.1

Keil nRF_DeviceFamilyPack: 8.44.1

Other settings:

The compile errors I am getting as as follows:

linking...
.\_build\nrf52832_xxaa.axf: Error: L6218E: Undefined symbol nrf_drv_ppi_init (referred from main.o).
.\_build\nrf52832_xxaa.axf: Error: L6218E: Undefined symbol nrfx_ppi_channel_alloc (referred from main.o).
.\_build\nrf52832_xxaa.axf: Error: L6218E: Undefined symbol nrfx_ppi_channel_assign (referred from main.o).
.\_build\nrf52832_xxaa.axf: Error: L6218E: Undefined symbol nrfx_ppi_channel_enable (referred from main.o).
.\_build\nrf52832_xxaa.axf: Error: L6218E: Undefined symbol nrfx_saadc_buffer_convert (referred from main.o).
.\_build\nrf52832_xxaa.axf: Error: L6218E: Undefined symbol nrfx_saadc_channel_init (referred from main.o).
.\_build\nrf52832_xxaa.axf: Error: L6218E: Undefined symbol nrfx_saadc_init (referred from main.o).
.\_build\nrf52832_xxaa.axf: Error: L6218E: Undefined symbol nrfx_saadc_sample_task_get (referred from main.o).
.\_build\nrf52832_xxaa.axf: Error: L6218E: Undefined symbol nrfx_timer_enable (referred from main.o).
.\_build\nrf52832_xxaa.axf: Error: L6218E: Undefined symbol nrfx_timer_extended_compare (referred from main.o).
.\_build\nrf52832_xxaa.axf: Error: L6218E: Undefined symbol nrfx_timer_init (referred from main.o).
Not enough information to list image symbols.
Not enough information to list load addresses in the image map.

I removed the default ..\nRF5SDK160098a08e2\modules\nrfx\mdk folder from the C/C++ include table and replaced it with ..\Arm\Packs\NordicSemiconductor\nRF_DeviceFamilyPack\8.44.1\Device\Include folder

I noticed that in the apply_old_config.h file all of the drivers seem to be disabled even though in the sdk_config.h file, the necessary drivers are enabled.

I am sure I am doing something wrong in the file structures or some configurations.

Please advise.

Thanks,

Adnan

Parents
  • Hi Adnan

    Yes, you need to configure the SoftDevice as well. First off, make sure that the Additional Load File [0] in your Loader (in project options) points to the correct place where your SoftDevice is located, as well as the preprocessor definitions include the following defines:

    NRF_SD_BLE_API_VERSION=6

    S140

    SOFTDEVICE_PRESENT

    Lastly, you should check out this RAM and Flash adjustment guide to make sure your applications RAM and Flash is configured to fit the SoftDevice you're using as well:  Adjustment of RAM and Flash memory 

    Best regards,
    Simon 

  • Hello Simon,

    So I checked and please note the following:

    1) The Additional Load File [0] does indeed point to the SoftDevice recommended for the project S132

    2) The preprocessor definitions are as follows:

    BOARD_PCA10040

    CONFIG_GPIO_AS_PINRESET

    FLOAT_ABI_HARD

    INITIALIZE_USER_SECTIONS

    NO_VTOR_CONFIG

    NRF52

    NRF52832_XXAA

    NRF52_PAN_74

    NRF_SD_BLE_API_VERSION=6

    S132

    SOFTDEVICE_PRESENT

    SWI_DISABLE0

    OV5642_MINI_5MP

    3) The RAM and Flash start values I took from the Keil settings and are as follows:

    FLASH_PH_START=0x0

    FLASH_PH_SIZE=0x80000

    RAM_PH_START=0x20000000

    RAM_PH_SIZE=0x10000

    FLASH_START=0x26000

    FLASH_SIZE=0x5a000

    RAM_START=0x20004010

    RAM_SIZE=0xd568

    The Adjustment of RAM and Flash memory note doesn't have any values for S132 V7.0.1 so I am using the above values.

    After all that I am still getting the error:

    <info> app: Start Main. Initialize BLE components...
    <info> app: Timer Init: YES
    <info> app: Buttons LED Init: YES
    <info> app: ble_stack_init(void): ENTER
    <debug> nrf_sdh: State request: 0x00000000
    <debug> nrf_sdh: Notify observer 0x00035D08 => ready
    <debug> nrf_sdh: State change: 0x00000000
    <error> app: ERROR 8 [NRF_ERROR_INVALID_STATE] at C:\Nordic\sdk\nRF5SDK160098a08e2\examples\nrf52-ble-image-transfer-demo-master_segger\main.c:464
    PC at: 0x0002789F

    I have tried doing a RESET on the DK board but with no luck.

    Please advise.

    Thanks,

    Adnan

Reply
  • Hello Simon,

    So I checked and please note the following:

    1) The Additional Load File [0] does indeed point to the SoftDevice recommended for the project S132

    2) The preprocessor definitions are as follows:

    BOARD_PCA10040

    CONFIG_GPIO_AS_PINRESET

    FLOAT_ABI_HARD

    INITIALIZE_USER_SECTIONS

    NO_VTOR_CONFIG

    NRF52

    NRF52832_XXAA

    NRF52_PAN_74

    NRF_SD_BLE_API_VERSION=6

    S132

    SOFTDEVICE_PRESENT

    SWI_DISABLE0

    OV5642_MINI_5MP

    3) The RAM and Flash start values I took from the Keil settings and are as follows:

    FLASH_PH_START=0x0

    FLASH_PH_SIZE=0x80000

    RAM_PH_START=0x20000000

    RAM_PH_SIZE=0x10000

    FLASH_START=0x26000

    FLASH_SIZE=0x5a000

    RAM_START=0x20004010

    RAM_SIZE=0xd568

    The Adjustment of RAM and Flash memory note doesn't have any values for S132 V7.0.1 so I am using the above values.

    After all that I am still getting the error:

    <info> app: Start Main. Initialize BLE components...
    <info> app: Timer Init: YES
    <info> app: Buttons LED Init: YES
    <info> app: ble_stack_init(void): ENTER
    <debug> nrf_sdh: State request: 0x00000000
    <debug> nrf_sdh: Notify observer 0x00035D08 => ready
    <debug> nrf_sdh: State change: 0x00000000
    <error> app: ERROR 8 [NRF_ERROR_INVALID_STATE] at C:\Nordic\sdk\nRF5SDK160098a08e2\examples\nrf52-ble-image-transfer-demo-master_segger\main.c:464
    PC at: 0x0002789F

    I have tried doing a RESET on the DK board but with no luck.

    Please advise.

    Thanks,

    Adnan

Children
No Data
Related