Zephyr > west build時 > STM32F769:SPI2で成功, STM32L476:SPI2で失敗 > device treeファイルの定義に違いがある
Ubuntu 18.04 LTS
ボード: STM32L476 Nucleo_64 (以下、STM32L476)
ボード: STM32F769 Discovery Kit (以下、STM32F769)
Zephyr 2.1.0-rc1
状況
- STM32F769ではSPI2を指定してビルドできる
- STM32L476ではSPI2を指定してビルドできない
- 以下のようなエラーが出る
zephyr/include/generated/generated_dts_board_fixups.h:199:27: error: 'DT_ST_STM32_SPI_FIFO_40003800_IRQ_0_PRIORITY' undeclared (first use in this function); did you mean 'DT_ST_STM32_SPI_FIFO_40013000_IRQ_0_PRIORITY'?
#define DT_SPI_2_IRQ_PRI DT_ST_STM32_SPI_FIFO_40003800_IRQ_0_PRIORITY
https://docs.zephyrproject.org/latest/boards/arm/nucleo_l476rg/doc/index.html
にはSPI1, SPI2, SPI3の定義はある。
なぜSPI2がビルドエラーになるか調べた。
./build/zephyr/include/generated/generated_dts_board_fixups.h
west buildした結果に違いがある。
STM32F769の場合、以下のような定義がある。
#define DT_SPI_2_BASE_ADDRESS DT_ST_STM32_SPI_40003800_BASE_ADDRESS
#define DT_SPI_2_IRQ_PRI DT_ST_STM32_SPI_40003800_IRQ_0_PRIORITY
#define DT_SPI_2_NAME DT_ST_STM32_SPI_40003800_LABEL
...
STM32L476の場合は上記のような定義がない。
この差はdevice treeの定義によるものと考えられる。
device treeの差異
spi2: spi@40003800 {
compatible = "st,stm32-spi";
#address-cells = <1>;
#size-cells = <0>;
reg = <0x40003800 0x400>;
clocks = <&rcc STM32_CLOCK_BUS_APB1 0x00004000>;
interrupts = <36 5>;
status = "disabled";
label = "SPI_2";
};
上記の定義がstm32l4.dtsiにはない。
STM32L476の場合、SPI2のMemory Mappingの定義がなく、上記のエラーが出ているようだ。
同じことがSPI3でも発生する。
<BOARD>.overlay
にspi2の定義を足すとビルドできるのかもしれない(未調査)。
Author And Source
この問題について(Zephyr > west build時 > STM32F769:SPI2で成功, STM32L476:SPI2で失敗 > device treeファイルの定義に違いがある), 我々は、より多くの情報をここで見つけました https://qiita.com/7of9/items/80b8b56a84ffc76c9ee0著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .