strange board DTS parsing error


Li, Jun R
 

Hi all,

 

I’m trying to add a sensor board to a STM32F4 discovery board for a prototype, i.e.,  adding a BMI160 sensor to the SPI1 bus. To do that, I’ve modified the file

“boards/arm/stm32f4_disco/stm32f4_disco.dts” and added the following section:

 

+

+&spi1 {

+       cs-gpios = <&gpiob 5 0>;

+       status = "ok";

+

+       bmi160@1 {

+                compatible = "bosch,bmi160";

+                reg = <0x1>;

+                label = "bmi160";

+                spi-max-frequency = <640000>;

+                int-gpios = <&gpioa 4 0>;

+                status = "ok";

+        };

+};

 

I used samples/hello_world to validate my changes. However, when I built “hello_world” by specifying the board to “stm32f4_disco”, I got the following errors:

 

cmake -DBOARD=stm32f4_disco ..

Zephyr version: 1.14.0

-- Found PythonInterp: /usr/bin/python3 (found suitable version "3.5.2", minimum required is "3.4")

-- Selected BOARD stm32f4_disco

-- Loading /home/my/zephyr/boards/arm/stm32f4_disco/stm32f4_disco.dts as base

-- Overlaying /home/my/zephyr/dts/common/common.dts

Traceback (most recent call last):

  File "/home/my/zephyr/scripts/dts/extract_dts_includes.py", line 542, in <module>

    main()

  File "/home/my/zephyr/scripts/dts/extract_dts_includes.py", line 524, in main

    generate_node_definitions()

  File "/home/my/zephyr/scripts/dts/extract_dts_includes.py", line 471, in generate_node_definitions

    extract_node_include_info(reduced, k, k, None)

  File "/home/my/zephyr/scripts/dts/extract_dts_includes.py", line 300, in extract_node_include_info

    node_compat, sub_node_address, c, v, names)

  File "/home/my/zephyr/scripts/dts/extract_dts_includes.py", line 219, in extract_property

    reg.extract(node_address, names, def_label, 1)

  File "/home/my/zephyr/scripts/dts/extract/reg.py", line 49, in extract

    extract_controller(node_address, "cs-gpios", cs_gpios, reg[0], def_label, "cs-gpio", True)

  File "/home/my/zephyr/scripts/dts/extract/globals.py", line 373, in extract_controller

    prop_array = [prop_array[index]]

IndexError: list index out of range

CMake Error at /home/my/zephyr/cmake/dts.cmake:145 (message):

  command failed with return code: 1

Call Stack (most recent call first):

  /home/my/zephyr/cmake/app/boilerplate.cmake:401 (include)

  CMakeLists.txt:3 (include)

 

-- Configuring incomplete, errors occurred!

 

If I comment either the line “cs-gpios = <&gpiob 5 0>;” or the section “bmi160@1 { ...}” above, the cmake configuration will succeed. But keeping both will get the above errors. I have no idea why it generated the parsing error. I saw the board dts definition file “boards/arc/arduino_101_sss/arduino_101_sss.dts” also did the same thing but it doesn’t get this kind of error.

 

Thank you!

Jun Li

 

Join devel@lists.zephyrproject.org to automatically receive all group messages.