Issue creating and using binding files for SPI

Hi all, will need to post short as I am getting a "cannot create ticket" error.

Hi all,

I'm quite new to nrf, zephyr and embedded of this complexity but have completed the fundamentals and intermediate courses.

My intention is to get SPI set up for a TI ADS1298 chip connected to my nrf52DK/52832 board. The only way I know to do this is via bindings and as shown in the lessons and if there is a better way for a custom device with this SPI device connected and an SPI SD card (backup for later BLE comms), please let me know..

I am trying to create a new binding file for the ADS1298 so I can get communication in a similar way to the intermediate course SPI module.

I am working on SDK v2.8.0 in VSCode.

I have created a new blank project and tried to create my own binding file, keeping it simple. Basic file structure within the project is as follows:

my_app
|___ build |___ src |___ prj.conf |___ CMakeLists.txt |___ dts |___ bindings |___ sensor
|___ ti,ads1298.yaml

I have not edited the CMakeLists.txt file.
  • I am also unable to reply with more than a few lines without an error, please bear with me.

    # ti,ads1298.yaml
    # Put this in the project\dts\bindings\sensor folder
    # Make one if it doesnt exist
    
    description: |
      The ADS1298 is a 8-channel, 24-bit analog front-end for measuring
      electrophysiological signals such as ECG or EEG.
    
    compatible: "ti,ads1298"
    
    include: [spi-device.yaml]
    
     properties:
      reg:
        type: int
        required: true
        description: |
          reg is the SPI Mode MODE 1 FOR THIS DEVICE
    
      spi-max-frequency:
        type: int
        required: false
        description: |
          SCLK maximum frequency: 20MHz at DVDD 2.7-3.6V and 15MHz for 1.65-2V
    
     drdy-gpios:
        type: phandle-array
        required: false
        description: |
          Active Low Data Ready pin indicating when data is ready to be read


    When I build this project I notice a warning in the log:
    appears in binding directories but isn't valid YAML: while parsing a block mapping in "<unicode string>", line 5, column 1 did not find expected key in "<unicode string>", line 13, column 2

  • Hi all,
    
    I'm quite new to nrf, zephyr and embedded of this complexity but have completed the fundamentals and intermediate courses.
    
    My intention is to get SPI set up for a TI ADS1298 chip connected to my nrf52DK/52832 board. The only way I know to do this is via bindings and as shown in the lessons and if there is a better way for a custom device with this SPI device connected and an SPI SD card (backup for later BLE comms), please let me know..
    
    I am trying to create a new binding file for the ADS1298 so I can get communication in a similar way to the intermediate course SPI module.
    
    I am working on SDK v2.8.0 in VSCode.
    
    I have created a new blank project and tried to create my own binding file, keeping it simple. Basic file structure within the project is as follows:
    
    my_app
     |___ build
     |___ src
     |___ prj.conf
     |___ CMakeLists.txt
     |___ dts
           |___ bindings
                |___ sensor
                     |___ ti,ads1298.yaml
    
    I have not edited the CMakeLists.txt file.
    
    # ti,ads1298.yaml
    # Put this in the project\dts\bindings\sensor folder
    # Make one if it doesnt exist
    
    description: |
     The ADS1298 is a 8-channel, 24-bit analog front-end for measuring
     electrophysiological signals such as ECG or EEG.
    
    compatible: "ti...Code
    
    When I build this project I notice a warning in the log:
     appears in binding directories but isn't valid YAML: while parsing a block mapping in "<unicode string>", line 5, column 1 did not find expected key in "<unicode string>", line 13, column 2
    FULL LOG BELOW: (markup won't let me put these in a code box, sry)
    
    Building ads1298test1
    C:\Windows\system32\cmd.exe /d /s /c "west build --build-dir c:/Users/harri/ncs-inter/ads1298test1/build c:/Users/harri/ncs-inter/ads1298test1 --pristine --board nrf52dk/nrf52832 -- -DNCS_TOOLCHAIN_VERSION=NONE -DBOARD_ROOT=c:\Users\harri\ncs-inter\l3_e1\my_boards"
    
    -- west build: generating a build system
    Loading Zephyr module(s) (Zephyr base): sysbuild_default
    -- Found Python3: C:/ncs/toolchains/b620d30767/opt/bin/python.exe (found suitable version "3.12.4", minimum required is "3.8") found components: Interpreter 
    -- Cache files will be written to: C:/ncs/v2.8.0/zephyr/.cache
    -- Found west (found suitable version "1.2.0", minimum required is "0.14.0")
    -- Board: nrf52dk, qualifiers: nrf52832
    Parsing C:/ncs/v2.8.0/zephyr/share/sysbuild/Kconfig
    Loaded configuration 'C:/Users/harri/ncs-inter/ads1298test1/build/_sysbuild/empty.conf'
    Merged configuration 'C:/Users/harri/ncs-inter/ads1298test1/build/_sysbuild/empty.conf'
    Configuration saved to 'C:/Users/harri/ncs-inter/ads1298test1/build/zephyr/.config'
    Kconfig header saved to 'C:/Users/harri/ncs-inter/ads1298test1/build/_sysbuild/autoconf.h'
    -- 
     **********************************
     * Running CMake for ads1298test1 *
     **********************************
    
    Loading Zephyr default modules (Zephyr base).
    -- Application: C:/Users/harri/ncs-inter/ads1298test1
    -- CMake version: 3.21.0
    -- Found Python3: C:/ncs/toolchains/b620d30767/opt/bin/python.exe (found suitable version "3.12.4", minimum required is "3.8") found components: Interpreter 
    -- Cache files will be written to: C:/ncs/v2.8.0/zephyr/.cache
    -- Zephyr version: 3.7.99 (C:/ncs/v2.8.0/zephyr)
    -- Found west (found suitable version "1.2.0", minimum required is "0.14.0")
    -- Board: nrf52dk, qualifiers: nrf52832
    -- Found host-tools: zephyr 0.17.0 (C:/ncs/toolchains/b620d30767/opt/zephyr-sdk)
    -- Found toolchain: zephyr 0.17.0 (C:/ncs/toolchains/b620d30767/opt/zephyr-sdk)
    -- Found Dtc: C:/ncs/toolchains/b620d30767/opt/bin/dtc.exe (found suitable version "1.4.7", minimum required is "1.4.6") 
    -- Found BOARD.dts: C:/ncs/v2.8.0/zephyr/boards/nordic/nrf52dk/nrf52dk_nrf52832.dts
    -- Found devicetree overlay: C:/Users/harri/ncs-inter/ads1298test1/nrf52dk_nrf52832.overlay
    -- Generated zephyr.dts: C:/Users/harri/ncs-inter/ads1298test1/build/ads1298test1/zephyr/zephyr.dts
    -- Generated devicetree_generated.h: C:/Users/harri/ncs-inter/ads1298test1/build/ads1298test1/zephyr/include/generated/zephyr/devicetree_generated.h
    WARNING: 'C:/Users/harri/ncs-inter/ads1298test1/dts/bindings\sensor\ti,ads1298.yaml' appears in binding directories but isn't valid YAML: while parsing a block mapping
     in "<unicode string>", line 5, column 1
    did not find expected key
     in "<unicode string>", line 13, column 2
    -- Including generated dts.cmake file: C:/Users/harri/ncs-inter/ads1298test1/build/ads1298test1/zephyr/dts.cmake
    Parsing C:/ncs/v2.8.0/zephyr/Kconfig
    Loaded configuration 'C:/ncs/v2.8.0/zephyr/boards/nordic/nrf52dk/nrf52dk_nrf52832_defconfig'
    Merged configuration 'C:/Users/harri/ncs-inter/ads1298test1/prj.conf'
    Merged configuration 'C:/Users/harri/ncs-inter/ads1298test1/build/ads1298test1/zephyr/.config.sysbuild'
    Configuration saved to 'C:/Users/harri/ncs-inter/ads1298test1/build/ads1298test1/zephyr/.config'
    Kconfig header saved to 'C:/Users/harri/ncs-inter/ads1298test1/build/ads1298test1/zephyr/include/generated/zephyr/autoconf.h'
    -- Found GnuLd: c:/ncs/toolchains/b620d30767/opt/zephyr-sdk/arm-zephyr-eabi/arm-zephyr-eabi/bin/ld.bfd.exe (found version "2.38") 
    -- The C compiler identification is GNU 12.2.0
    -- The CXX compiler identification is GNU 12.2.0
    -- The ASM compiler identification is GNU
    -- Found assembler: C:/ncs/toolchains/b620d30767/opt/zephyr-sdk/arm-zephyr-eabi/bin/arm-zephyr-eabi-gcc.exe
    -- Setting build type to 'MinSizeRel' as none was specified.
    -- Configuring done
    -- Generating done
    -- Build files have been written to: C:/Users/harri/ncs-inter/ads1298test1/build/ads1298test1
    -- Configuring done
    -- Generating done
    -- Build files have been written to: C:/Users/harri/ncs-inter/ads1298test1/build
    -- west build: building application
    [4/138] Generating include/generated/zephyr/version.h
    -- Zephyr version: 3.7.99 (C:/ncs/v2.8.0/zephyr), build: v3.7.99-ncs1
    [138/138] Linking C executable zephyr\zephyr.elf
    Memory region Used Size Region Size %age Used
     FLASH: 18494 B 512 KB 3.53%
     RAM: 5632 B 64 KB 8.59%
     IDT_LIST: 0 GB 32 KB 0.00%
    Generating files from C:/Users/harri/ncs-inter/ads1298test1/build/ads1298test1/zephyr/zephyr.elf for board: nrf52dk
    [10/10] Generating ../merged.hex
     * Terminal will be reused by tasks, press any key to close it.
    
    
    Looking at the zephyr documentation, it says it should just find it (which it did in a way). Despite doing Intermediate Lesson 7 I am still unsure how to get bindings done right.
    
    After adding the following code into an overlay:
    
    &spi1 {
        compatible = "nordic,nrf-spi"; //using SPI as per ERRATA 58
        status = "okay";
        pinctrl-0 = ;
        pinctrl-1 = ;
        pinctrl-names = "default", "sleep";
        cs-gpios = ;
        ads1298: ads1298@0 {
            compatible = "ti,ads1298";
        Code
    
    I cannot build standard or pristine and get the following Logs and error:
    
    Building ads1298test1
    C:\Windows\system32\cmd.exe /d /s /c "west build --build-dir c:/Users/harri/ncs-inter/ads1298test1/build --domain ads1298test1"
    
    -- west build: building domain(s): ads1298test1
    [0/1] Re-running CMake...
    Loading Zephyr default modules (Zephyr base (cached)).
    -- Application: C:/Users/harri/ncs-inter/ads1298test1
    -- CMake version: 3.21.0
    -- Cache files will be written to: C:/ncs/v2.8.0/zephyr/.cache
    -- Zephyr version: 3.7.99 (C:/ncs/v2.8.0/zephyr)
    -- Found west (found suitable version "1.2.0", minimum required is "0.14.0")
    -- Board: nrf52dk, qualifiers: nrf52832
    -- Found host-tools: zephyr 0.17.0 (C:/ncs/toolchains/b620d30767/opt/zephyr-sdk)
    -- Found toolchain: zephyr 0.17.0 (C:/ncs/toolchains/b620d30767/opt/zephyr-sdk)
    -- Found BOARD.dts: C:/ncs/v2.8.0/zephyr/boards/nordic/nrf52dk/nrf52dk_nrf52832.dts
    -- Found devicetree overlay: C:/Users/harri/ncs-inter/ads1298test1/nrf52dk_nrf52832.overlay
    devicetree error: 'C:/Users/harri/ncs-inter/ads1298test1/dts/bindings\sensor\ti,ads1298.yaml' appears in binding directories but isn't valid YAML: while parsing a block mapping
    in "<unicode string>", line 5, column 1
    did not find expected key
    in "<unicode string>", line 13, column 2
    CMake Error at C:/ncs/v2.8.0/zephyr/cmake/modules/dts.cmake:295 (execute_process):
    execute_process failed command indexes:
    
    1: "Child return code: 1"
    
    Call Stack (most recent call first):
    C:/ncs/v2.8.0/zephyr/cmake/modules/zephyr_default.cmake:133 (include)
    C:/ncs/v2.8.0/zephyr/share/zephyr-package/cmake/ZephyrConfig.cmake:66 (include)
    C:/ncs/v2.8.0/zephyr/share/zephyr-package/cmake/ZephyrConfig.cmake:97 (include_boilerplate)
    CMakeLists.txt:2 (find_package)
    
    
    -- Configuring incomplete, errors occurred!
    See also "C:/Users/harri/ncs-inter/ads1298test1/build/ads1298test1/CMakeFiles/CMakeOutput.log".
    See also "C:/Users/harri/ncs-inter/ads1298test1/build/ads1298test1/CMakeFiles/CMakeError.log".
    FAILED: build.ninja
    C:\ncs\toolchains\b620d30767\opt\bin\cmake.exe --regenerate-during-build -SC:\Users\harri\ncs-inter\ads1298test1 -BC:\Users\harri\ncs-inter\ads1298test1\build\ads1298test1
    ninja: error: rebuilding 'build.ninja': subcommand failed
    FATAL ERROR: command exited with status 1: 'C:\ncs\toolchains\b620d30767\opt\bin\cmake.EXE' --build C:/Users/harri/ncs-inter/ads1298test1/build/ads1298test1
    
    * The terminal process terminated with exit code: 1.
    * Terminal will be reused by tasks, press any key to close it.
    
    
    I can identify that the issue is with the child within the node,  if I comment this out it builds without error. However I am unsure how to fix the error that is causing it to say that first the YAML is not a valid YAML?


    Please see attached txt file with logs and overlay code, apologies but the text limit appears not to like me.

Related