This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

TZ_NONSECURE_FUNC_PTR_CREATE SPM error with v1.0.0 for nRF9160

Hello,

I have seen today that the new releases of the v1.0.0 SDK and v1.0.0 modem firmware were release for the nRF9160 DK. I have been able to update the modem firmware but I'm coming across an error with the SDK.

MichaelDs-MacBook-Pro:nrf9160 michaeldavidson$ cd at_client/
MichaelDs-MacBook-Pro:at_client michaeldavidson$ mkdir build && cd build
MichaelDs-MacBook-Pro:build michaeldavidson$ cmake -GNinja -DBOARD=nrf9160_pca10090ns ..
-- Using application from '/Users/michaeldavidson/Downloads/ncs/nrf/samples/nrf9160/at_client'
Zephyr version: 1.14.99
-- Found PythonInterp: /usr/local/bin/python3 (found suitable version "3.6.4", minimum required is "3.4") 
-- Selected BOARD nrf9160_pca10090ns
-- Found west: /usr/local/bin/west (found suitable version "0.5.8", minimum required is "0.5.6")
-- Cache files will be written to: /Users/michaeldavidson/Library/Caches/zephyr
-- Loading /Users/michaeldavidson/Downloads/ncs/zephyr/boards/arm/nrf9160_pca10090/nrf9160_pca10090ns.dts as base
-- Overlaying /Users/michaeldavidson/Downloads/ncs/zephyr/dts/common/common.dts
Parsing Kconfig tree in /Users/michaeldavidson/Downloads/ncs/zephyr/Kconfig
Loading /Users/michaeldavidson/Downloads/ncs/zephyr/boards/arm/nrf9160_pca10090/nrf9160_pca10090ns_defconfig as base
Merging /Users/michaeldavidson/Downloads/ncs/nrf/samples/nrf9160/at_client/prj.conf
Configuration written to '/Users/michaeldavidson/Downloads/ncs/nrf/samples/nrf9160/at_client/build/zephyr/.config'
-- The C compiler identification is GNU 6.3.1
-- The CXX compiler identification is GNU 6.3.1
-- The ASM compiler identification is GNU
-- Found assembler: /Users/michaeldavidson/gcc-arm-none-eabi-6-2017-q2-update/bin/arm-none-eabi-gcc
-- Performing Test toolchain_is_ok
-- Performing Test toolchain_is_ok - Success
Including module: nrf in path: /Users/michaeldavidson/Downloads/ncs/nrf
-- Using application from '/Users/michaeldavidson/Downloads/ncs/nrf/samples/nrf9160/spm'
Zephyr version: 1.14.99
Changed board to secure nrf9160_pca10090 (NOT NS)
-- Loading /Users/michaeldavidson/Downloads/ncs/zephyr/boards/arm/nrf9160_pca10090/nrf9160_pca10090.dts as base
-- Overlaying /Users/michaeldavidson/Downloads/ncs/zephyr/dts/common/common.dts
-- Overlaying /Users/michaeldavidson/Downloads/ncs/nrf/samples/nrf9160/spm/nrf9160_pca10090.overlay
Parsing Kconfig tree in /Users/michaeldavidson/Downloads/ncs/zephyr/Kconfig
Loading /Users/michaeldavidson/Downloads/ncs/zephyr/boards/arm/nrf9160_pca10090/nrf9160_pca10090_defconfig as base
Merging /Users/michaeldavidson/Downloads/ncs/nrf/samples/nrf9160/spm/prj.conf
Configuration written to '/Users/michaeldavidson/Downloads/ncs/nrf/samples/nrf9160/at_client/build/spm/zephyr/.config'
Including module: nrf in path: /Users/michaeldavidson/Downloads/ncs/nrf
Including module: nffs in path: /Users/michaeldavidson/Downloads/ncs/modules/fs/nffs
Including module: segger in path: /Users/michaeldavidson/Downloads/ncs/modules/debug/segger
Including module: mcuboot in path: /Users/michaeldavidson/Downloads/ncs/mcuboot/zephyr
Including module: mcumgr in path: /Users/michaeldavidson/Downloads/ncs/modules/lib/mcumgr
Including module: tinycbor in path: /Users/michaeldavidson/Downloads/ncs/modules/lib/tinycbor
Including module: nrfxlib in path: /Users/michaeldavidson/Downloads/ncs/nrfxlib
Including module: nffs in path: /Users/michaeldavidson/Downloads/ncs/modules/fs/nffs
Including module: segger in path: /Users/michaeldavidson/Downloads/ncs/modules/debug/segger
Including module: mcuboot in path: /Users/michaeldavidson/Downloads/ncs/mcuboot/zephyr
Including module: mcumgr in path: /Users/michaeldavidson/Downloads/ncs/modules/lib/mcumgr
Including module: tinycbor in path: /Users/michaeldavidson/Downloads/ncs/modules/lib/tinycbor
Including module: nrfxlib in path: /Users/michaeldavidson/Downloads/ncs/nrfxlib
CMake Warning at /Users/michaeldavidson/Downloads/ncs/zephyr/CMakeLists.txt:1345 (message):
  

        ------------------------------------------------------------
        --- WARNING:  __ASSERT() statements are globally ENABLED ---
        --- The kernel will run more slowly and use more memory  ---
        ------------------------------------------------------------


Running Partition Manager...
-- Configuring done
-- Generating done
-- Build files have been written to: /Users/michaeldavidson/Downloads/ncs/nrf/samples/nrf9160/at_client/build
MichaelDs-MacBook-Pro:build michaeldavidson$ ninja flash
[1/310] Preparing syscall dependency handling

[2/310] Preparing syscall dependency handling

[60/310] Building C object spm/zephyr/CMakeFiles/spm_...ichaeldavidson/Downloads/ncs/nrf/subsys/spm/spm.c.ob
FAILED: spm/zephyr/CMakeFiles/spm_zephyr.dir/Users/michaeldavidson/Downloads/ncs/nrf/subsys/spm/spm.c.obj 
ccache /Users/michaeldavidson/gcc-arm-none-eabi-6-2017-q2-update/bin/arm-none-eabi-gcc -DBUILD_VERSION=v1.14.99-ncs2 -DKERNEL -DMBEDTLS_CONFIG_FILE=\"nrf-config.h\" -DNRF9160_XXAA -DUSE_PARTITION_MANAGER=1 -D_FORTIFY_SOURCE=2 -D__ZEPHYR__=1 -I/Users/michaeldavidson/Downloads/ncs/zephyr/kernel/include -I/Users/michaeldavidson/Downloads/ncs/zephyr/arch/arm/include -I/Users/michaeldavidson/Downloads/ncs/zephyr/include -I/Users/michaeldavidson/Downloads/ncs/zephyr/include/drivers -Ispm/zephyr/include/generated -I/Users/michaeldavidson/Downloads/ncs/zephyr/soc/arm/nordic_nrf/nrf91 -I/Users/michaeldavidson/Downloads/ncs/zephyr/soc/arm/nordic_nrf/include -I/Users/michaeldavidson/Downloads/ncs/zephyr/lib/libc/minimal/include -I/Users/michaeldavidson/Downloads/ncs/zephyr/ext/hal/cmsis/Include -I/Users/michaeldavidson/Downloads/ncs/zephyr/ext/hal/nordic/nrfx -I/Users/michaeldavidson/Downloads/ncs/zephyr/ext/hal/nordic/nrfx/drivers/include -I/Users/michaeldavidson/Downloads/ncs/zephyr/ext/hal/nordic/nrfx/hal -I/Users/michaeldavidson/Downloads/ncs/zephyr/ext/hal/nordic/nrfx/mdk -I/Users/michaeldavidson/Downloads/ncs/zephyr/ext/hal/nordic/. -I/Users/michaeldavidson/Downloads/ncs/nrf/include -I/Users/michaeldavidson/Downloads/ncs/nrfxlib/crypto/nrf_cc310_mbedcrypto/include/mbedtls -Ispm/zephyr/modules/nrfxlib/nrf_security/include -I/Users/michaeldavidson/Downloads/ncs/mbedtls/include -I/Users/michaeldavidson/Downloads/ncs/mbedtls/include/mbedtls -isystem /Users/michaeldavidson/gcc-arm-none-eabi-6-2017-q2-update/bin/../lib/gcc/arm-none-eabi/6.3.1/include -isystem /Users/michaeldavidson/gcc-arm-none-eabi-6-2017-q2-update/bin/../lib/gcc/arm-none-eabi/6.3.1/include-fixed -Os -nostdinc -g -imacros /Users/michaeldavidson/Downloads/ncs/nrf/samples/nrf9160/at_client/build/spm/zephyr/include/generated/autoconf.h -ffreestanding -fno-common -mthumb -mcpu=cortex-m33 -mfpu=fpv5-sp-d16 -mfloat-abi=hard -Wall -Wformat -Wformat-security -Wno-format-zero-length -Wno-main -Wno-pointer-sign -Wpointer-arith -Wno-unused-but-set-variable -Werror=implicit-int -fno-asynchronous-unwind-tables -fno-pie -fno-pic -fno-strict-overflow -fno-reorder-functions -fno-defer-pop -ffunction-sections -fdata-sections -mabi=aapcs -march=armv8-m.main+dsp -mcmse -std=c99 -MD -MT spm/zephyr/CMakeFiles/spm_zephyr.dir/Users/michaeldavidson/Downloads/ncs/nrf/subsys/spm/spm.c.obj -MF spm/zephyr/CMakeFiles/spm_zephyr.dir/Users/michaeldavidson/Downloads/ncs/nrf/subsys/spm/spm.c.obj.d -o spm/zephyr/CMakeFiles/spm_zephyr.dir/Users/michaeldavidson/Downloads/ncs/nrf/subsys/spm/spm.c.obj   -c /Users/michaeldavidson/Downloads/ncs/nrf/subsys/spm/spm.c
In file included from /Users/michaeldavidson/Downloads/ncs/nrf/subsys/spm/spm.c:20:0:
/Users/michaeldavidson/Downloads/ncs/nrf/subsys/spm/spm.c: In function 'spm_jump':
/Users/michaeldavidson/Downloads/ncs/zephyr/arch/arm/include/cortex_m/tz.h:319:22: error: called object is not a function or function pointer
  ((tz_ns_func_ptr_t)(cmse_nsfptr_create(fptr)))
                      ^
/Users/michaeldavidson/Downloads/ncs/nrf/subsys/spm/spm.c:392:13: note: in expansion of macro 'TZ_NONSECURE_FUNC_PTR_CREATE'
  reset_ns = TZ_NONSECURE_FUNC_PTR_CREATE(vtor_ns[1]);
             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
[65/310] Building C object spm/zephyr/arch/arm/core/c...eFiles/spm_arch__arm__core__cortex_m.dir/prep_c.c.ob
ninja: build stopped: subcommand failed.
MichaelDs-MacBook-Pro:build michaeldavidson$ 

Every time I try to build I get an error from the SPM code about about TZ_NONSECURE_FUNC_PTR_CREATE. This error occurs no matter what the code I try to build, be that my own custom application, SPM itself or any of the example programs.

I had orginally updated my ncs folder with my custom additions but this occurred after I updated. I then renamed that ncs_backup and did a fresh install in a new ncs folder of the repos using the instructions in 'Getting Started' and the same issue occurs.

  • I think we'll need to check your design/schematic. Could you create a new private case? (I guess you do not want to share your design with the rest of the world)

    Link to this case, so that the history is kept Slight smile

    It might be handled by one of my colleagues, as hardware isn't my strongest feature.

     

    Kind regards,

    Håkon

  • Thank you. Unfortunately this does not resolve the issue, I get the error below:

    Note that this is being tested on our custom board, however should be no different to DK. I have the latest NRF connect 3.0.0, manually updated nrfjprog to the latest version and installed the latest modem FW 1.0.0.

    any thoughts what else to try?

    bsdlib irrecoverable error: 3
    ASSERTION FAIL [0] @ ../src/main.c:23
    ***** Kernel Panic! *****
    Current thread ID = 0x20021a80
    Faulting instruction address = 0x217c8
    ***** Booting Zephyr OS v1.14.99-ncs2 *****
    Flash region		Domain		Permissions
    00 0x00000 0x08000 	Secure		rwxl
    01 0x08000 0x10000 	Non-Secure	rwxl
    02 0x10000 0x18000 	Non-Secure	rwxl
    03 0x18000 0x20000 	Non-Secure	rwxl
    04 0x20000 0x28000 	Non-Secure	rwxl
    05 0x28000 0x30000 	Non-Secure	rwxl
    06 0x30000 0x38000 	Non-Secure	rwxl
    07 0x38000 0x40000 	Non-Secure	rwxl
    08 0x40000 0x48000 	Non-Secure	rwxl
    09 0x48000 0x50000 	Non-Secure	rwxl
    10 0x50000 0x58000 	Non-Secure	rwxl
    11 0x58000 0x60000 	Non-Secure	rwxl
    12 0x60000 0x68000 	Non-Secure	rwxl
    13 0x68000 0x70000 	Non-Secure	rwxl
    14 0x70000 0x78000 	Non-Secure	rwxl
    15 0x78000 0x80000 	Non-Secure	rwxl
    16 0x80000 0x88000 	Non-Secure	rwxl
    17 0x88000 0x90000 	Non-Secure	rwxl
    18 0x90000 0x98000 	Non-Secure	rwxl
    19 0x98000 0xa0000 	Non-Secure	rwxl
    20 0xa0000 0xa8000 	Non-Secure	rwxl
    21 0xa8000 0xb0000 	Non-Secure	rwxl
    22 0xb0000 0xb8000 	Non-Secure	rwxl
    23 0xb8000 0xc0000 	Non-Secure	rwxl
    24 0xc0000 0xc8000 	Non-Secure	rwxl
    25 0xc8000 0xd0000 	Non-Secure	rwxl
    26 0xd0000 0xd8000 	Non-Secure	rwxl
    27 0xd8000 0xe0000 	Non-Secure	rwxl
    28 0xe0000 0xe8000 	Non-Secure	rwxl
    29 0xe8000 0xf0000 	Non-Secure	rwxl
    30 0xf0000 0xf8000 	Non-Secure	rwxl
    31 0xf8000 0x100000 	Non-Secure	rwxl
    Non-secure callable region 0 placed in flash region 0 with size 32.
    
    
    SRAM region		Domain		Permissions
    00 0x00000 0x02000	Secure		rwxl
    01 0x02000 0x04000	Secure		rwxl
    02 0x04000 0x06000	Secure		rwxl
    03 0x06000 0x08000	Secure		rwxl
    04 0x08000 0x0a000	Secure		rwxl
    05 0x0a000 0x0c000	Secure		rwxl
    06 0x0c000 0x0e000	Secure		rwxl
    07 0x0e000 0x10000	Secure		rwxl
    08 0x10000 0x12000	Non-Secure	rwxl
    09 0x12000 0x14000	Non-Secure	rwxl
    10 0x14000 0x16000	Non-Secure	rwxl
    11 0x16000 0x18000	Non-Secure	rwxl
    12 0x18000 0x1a000	Non-Secure	rwxl
    13 0x1a000 0x1c000	Non-Secure	rwxl
    14 0x1c000 0x1e000	Non-Secure	rwxl
    15 0x1e000 0x20000	Non-Secure	rwxl
    16 0x20000 0x22000	Non-Secure	rwxl
    17 0x22000 0x24000	Non-Secure	rwxl
    18 0x24000 0x26000	Non-Secure	rwxl
    19 0x26000 0x28000	Non-Secure	rwxl
    20 0x28000 0x2a000	Non-Secure	rwxl
    21 0x2a000 0x2c000	Non-Secure	rwxl
    22 0x2c000 0x2e000	Non-Secure	rwxl
    23 0x2e000 0x30000	Non-Secure	rwxl
    24 0x30000 0x32000	Non-Secure	rwxl
    25 0x32000 0x34000	Non-Secure	rwxl
    26 0x34000 0x36000	Non-Secure	rwxl
    27 0x36000 0x38000	Non-Secure	rwxl
    28 0x38000 0x3a000	Non-Secure	rwxl
    29 0x3a000 0x3c000	Non-Secure	rwxl
    30 0x3c000 0x3e000	Non-Secure	rwxl
    31 0x3e000 0x40000	Non-Secure	rwxl
    
    Peripheral		Domain		Status
    00 NRF_P0		Non-Secure	OK
    01 NRF_CLOCK		Non-Secure	OK
    02 NRF_RTC1		Non-Secure	OK
    03 NRF_NVMC		Non-Secure	OK
    04 NRF_UARTE1		Non-Secure	OK
    05 NRF_UARTE2		Secure		SKIP
    06 NRF_TWIM2		Non-Secure	OK
    07 NRF_SPIM3		Non-Secure	OK
    08 NRF_TIMER0		Non-Secure	OK
    09 NRF_TIMER1		Non-Secure	OK
    10 NRF_TIMER2		Non-Secure	OK
    11 NRF_SAADC		Non-Secure	OK
    12 NRF_PWM0		Non-Secure	OK
    13 NRF_PWM1		Non-Secure	OK
    14 NRF_PWM2		Non-Secure	OK
    15 NRF_PWM3		Non-Secure	OK
    16 NRF_IPC		Non-Secure	OK
    17 NRF_VMC		Non-Secure	OK
    18 NRF_FPU		Non-Secure	OK
    19 NRF_EGU1		Non-Secure	OK
    20 NRF_EGU2		Non-Secure	OK
    21 NRF_GPIOTE1		Non-Secure	OK
    
    SPM: NS image at 0xc000
    SPM: NS MSP at 0x20023b68
    SPM: NS reset vector at 0xe325
    SPM: prepare to jump to Non-Secure image.
    bsdlib irrecoverable error: 3
    ASSERTION FAIL [0] @ ../src/main.c:23
    ***** Kernel Panic! *****
    Current thread ID = 0x20021a80
    Faulting instruction address = 0x217c8
    AT+CFUN?
    ***** Booting Zephyr OS v1.14.99-ncs2 *****
    Flash region		Domain		Permissions
    00 0x00000 0x08000 	Secure		rwxl
    01 0x08000 0x10000 	Non-Secure	rwxl
    02 0x10000 0x18000 	Non-Secure	rwxl
    03 0x18000 0x20000 	Non-Secure	rwxl
    04 0x20000 0x28000 	Non-Secure	rwxl
    05 0x28000 0x30000 	Non-Secure	rwxl
    06 0x30000 0x38000 	Non-Secure	rwxl
    07 0x38000 0x40000 	Non-Secure	rwxl
    08 0x40000 0x48000 	Non-Secure	rwxl
    09 0x48000 0x50000 	Non-Secure	rwxl
    10 0x50000 0x58000 	Non-Secure	rwxl
    11 0x58000 0x60000 	Non-Secure	rwxl
    12 0x60000 0x68000 	Non-Secure	rwxl
    13 0x68000 0x70000 	Non-Secure	rwxl
    14 0x70000 0x78000 	Non-Secure	rwxl
    15 0x78000 0x80000 	Non-Secure	rwxl
    16 0x80000 0x88000 	Non-Secure	rwxl
    17 0x88000 0x90000 	Non-Secure	rwxl
    18 0x90000 0x98000 	Non-Secure	rwxl
    19 0x98000 0xa0000 	Non-Secure	rwxl
    20 0xa0000 0xa8000 	Non-Secure	rwxl
    21 0xa8000 0xb0000 	Non-Secure	rwxl
    22 0xb0000 0xb8000 	Non-Secure	rwxl
    23 0xb8000 0xc0000 	Non-Secure	rwxl
    24 0xc0000 0xc8000 	Non-Secure	rwxl
    25 0xc8000 0xd0000 	Non-Secure	rwxl
    26 0xd0000 0xd8000 	Non-Secure	rwxl
    27 0xd8000 0xe0000 	Non-Secure	rwxl
    28 0xe0000 0xe8000 	Non-Secure	rwxl
    29 0xe8000 0xf0000 	Non-Secure	rwxl
    30 0xf0000 0xf8000 	Non-Secure	rwxl
    31 0xf8000 0x100000 	Non-Secure	rwxl
    Non-secure callable region 0 placed in flash region 0 with size 32.
    
    
    SRAM region		Domain		Permissions
    00 0x00000 0x02000	Secure		rwxl
    01 0x02000 0x04000	Secure		rwxl
    02 0x04000 0x06000	Secure		rwxl
    03 0x06000 0x08000	Secure		rwxl
    04 0x08000 0x0a000	Secure		rwxl
    05 0x0a000 0x0c000	Secure		rwxl
    06 0x0c000 0x0e000	Secure		rwxl
    07 0x0e000 0x10000	Secure		rwxl
    08 0x10000 0x12000	Non-Secure	rwxl
    09 0x12000 0x14000	Non-Secure	rwxl
    10 0x14000 0x16000	Non-Secure	rwxl
    11 0x16000 0x18000	Non-Secure	rwxl
    12 0x18000 0x1a000	Non-Secure	rwxl
    13 0x1a000 0x1c000	Non-Secure	rwxl
    14 0x1c000 0x1e000	Non-Secure	rwxl
    15 0x1e000 0x20000	Non-Secure	rwxl
    16 0x20000 0x22000	Non-Secure	rwxl
    17 0x22000 0x24000	Non-Secure	rwxl
    18 0x24000 0x26000	Non-Secure	rwxl
    19 0x26000 0x28000	Non-Secure	rwxl
    20 0x28000 0x2a000	Non-Secure	rwxl
    21 0x2a000 0x2c000	Non-Secure	rwxl
    22 0x2c000 0x2e000	Non-Secure	rwxl
    23 0x2e000 0x30000	Non-Secure	rwxl
    24 0x30000 0x32000	Non-Secure	rwxl
    25 0x32000 0x34000	Non-Secure	rwxl
    26 0x34000 0x36000	Non-Secure	rwxl
    27 0x36000 0x38000	Non-Secure	rwxl
    28 0x38000 0x3a000	Non-Secure	rwxl
    29 0x3a000 0x3c000	Non-Secure	rwxl
    30 0x3c000 0x3e000	Non-Secure	rwxl
    31 0x3e000 0x40000	Non-Secure	rwxl
    
    Peripheral		Domain		Status
    00 NRF_P0		Non-Secure	OK
    01 NRF_CLOCK		Non-Secure	OK
    02 NRF_RTC1		Non-Secure	OK
    03 NRF_NVMC		Non-Secure	OK
    04 NRF_UARTE1		Non-Secure	OK
    05 NRF_UARTE2		Secure		SKIP
    06 NRF_TWIM2		Non-Secure	OK
    07 NRF_SPIM3		Non-Secure	OK
    08 NRF_TIMER0		Non-Secure	OK
    09 NRF_TIMER1		Non-Secure	OK
    10 NRF_TIMER2		Non-Secure	OK
    11 NRF_SAADC		Non-Secure	OK
    12 NRF_PWM0		Non-Secure	OK
    13 NRF_PWM1		Non-Secure	OK
    14 NRF_PWM2		Non-Secure	OK
    15 NRF_PWM3		Non-Secure	OK
    16 NRF_IPC		Non-Secure	OK
    17 NRF_VMC		Non-Secure	OK
    18 NRF_FPU		Non-Secure	OK
    19 NRF_EGU1		Non-Secure	OK
    20 NRF_EGU2		Non-Secure	OK
    21 NRF_GPIOTE1		Non-Secure	OK
    
    SPM: NS image at 0xc000
    SPM: NS MSP at 0x20023b68
    SPM: NS reset vector at 0xe325
    SPM: prepare to jump to Non-Secure image.
    bsdlib irrecoverable error: 3
    ASSERTION FAIL [0] @ ../src/main.c:23
    ***** Kernel Panic! *****
    Current thread ID = 0x20021a80
    Faulting instruction address = 0x217c8

  • Thank you, HW has been already reviewed by your colleagues via email and passed without comments.  We have multiple boards running well with with old modem firmware and a few with an unknown problem of not being able to connect, but at client is running well on all.

    The new modem FW is running well on the DK as well as the at client example. Thus the above error is somewhat HW related, not sure how.

  • Same here, using your hex also gave the exact same ISR spinning error

Related