“FMC device tree configuration”的版本间的差异
Zhouyuebiao(讨论 | 贡献) |
|||
(未显示同一用户的4个中间版本) | |||
第1行: | 第1行: | ||
== Article purpose == | == Article purpose == | ||
− | + | 本文介绍如何在将 [[FMC internal peripheral|'''FMC''' internal peripheral]] 分配给Linux<sup>®</sup> 操作系统时对其进行配置。 在这种情况下,它由[[MTD overview|MTD framework]]控制。 | |
− | + | 使用[[Device tree|device tree]] 机制执行配置,该机制提供STM32 FMC Linux驱动程序和MTD框架使用的FMC外设的硬件描述。 | |
== DT bindings documentation == | == DT bindings documentation == | ||
− | + | FMC设备树绑定由以下组成: | |
− | * | + | * 通用MTD nand绑定 <ref>{{CodeSource | Linux kernel | Documentation/devicetree/bindings/mtd/nand.txt}}</ref>. |
− | * | + | * FMC驱动程序绑定 <ref> {{CodeSource | Linux kernel | Documentation/devicetree/bindings/mtd/stm32-fmc2-nand.txt}} </ref>. |
== DT configuration == | == DT configuration == | ||
− | + | 该硬件描述是“''STM32微处理器”''设备树文件(扩展名为.dtsi)和“''板子”设备树文件(扩展名为.dts)的组合。 有关设备树文件分割的说明,请参见[[Device tree]]。 | |
− | '''STM32CubeMX''' | + | '''STM32CubeMX'''可用于生成板卡设备树。 有关更多详细信息,请参考[[#How_to_configure_the_DT_using_STM32CubeMX [[#How_to_configure_the_DT_using_STM32CubeMX|How to configure the DT using STM32CubeMX]] . |
===DT configuration (STM32 level) === | ===DT configuration (STM32 level) === | ||
− | + | FMC外设节点位于“ stm32mp157c.dtsi”中。<ref>{{CodeSource | Linux kernel | arch/arm/boot/dts/stm32mp157c.dtsi}}</ref>文件。 | |
fmc: nand-controller@58002000 { {{highlight|Comments}} | fmc: nand-controller@58002000 { {{highlight|Comments}} | ||
第39行: | 第39行: | ||
}; | }; | ||
− | {{Warning| | + | {{Warning|与STM32相关的设备树部分应保持原样,客户不应对其进行修改。}} |
=== DT configuration (board level) === | === DT configuration (board level) === | ||
− | + | FMC外设可以连接到一个SLC NAND闪存(每个封装最多2个管芯)。 | |
&fmc { {{highlight|Comments}} | &fmc { {{highlight|Comments}} | ||
第61行: | 第61行: | ||
}; | }; | ||
− | + | 支持的ECC强度和步长为: | |
* nand-ecc-strength = <1>, nand-ecc-step-size = <512> (HAMMING). | * nand-ecc-strength = <1>, nand-ecc-step-size = <512> (HAMMING). | ||
* nand-ecc-strength = <4>, nand-ecc-step-size = <512> (BCH4). | * nand-ecc-strength = <4>, nand-ecc-step-size = <512> (BCH4). | ||
第67行: | 第67行: | ||
=== DT configuration examples === | === DT configuration examples === | ||
− | + | 以下示例显示了在连接SLC 8位NAND闪存设备时(ECC要求:8位/ 512字节)如何配置FMC控制器. | |
&fmc { | &fmc { | ||
第87行: | 第87行: | ||
}; | }; | ||
− | + | 下例显示了连接SLC 8位NAND闪存设备时的FMC控制器配置(ECC要求:4位/ 512字节). | |
&fmc { | &fmc { | ||
第110行: | 第110行: | ||
==How to configure the DT using STM32CubeMX== | ==How to configure the DT using STM32CubeMX== | ||
− | + | [[STM32CubeMX]] 工具可用于配置STM32MPU设备并获取相应的[[Device_tree#STM32|platform configuration device tree]] 文件。<br /> | |
− | + | STM32CubeMX可能不支持以上[[#DT bindings documentation|DT bindings documentation]] 段中描述的所有属性。 如果是这样,该工具会在生成的设备树中插入'''用户部分'''。 然后可以编辑这些部分以添加某些属性,并将它们代代相传。 有关详细信息,请参阅[[STM32CubeMX]] 用户手册。 | |
==References== | ==References== | ||
− | + | 有关完整说明,请参阅以下链接: | |
<references /> | <references /> | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− |
2020年11月10日 (二) 11:57的最新版本
目录
Article purpose
本文介绍如何在将 FMC internal peripheral 分配给Linux® 操作系统时对其进行配置。 在这种情况下,它由MTD framework控制。
使用device tree 机制执行配置,该机制提供STM32 FMC Linux驱动程序和MTD框架使用的FMC外设的硬件描述。
DT configuration
该硬件描述是“STM32微处理器”设备树文件(扩展名为.dtsi)和“板子”设备树文件(扩展名为.dts)的组合。 有关设备树文件分割的说明,请参见Device tree。
STM32CubeMX可用于生成板卡设备树。 有关更多详细信息,请参考[[#How_to_configure_the_DT_using_STM32CubeMX How to configure the DT using STM32CubeMX .
DT configuration (STM32 level)
FMC外设节点位于“ stm32mp157c.dtsi”中。[3]文件。
fmc: nand-controller@58002000 { Comments compatible = "st,stm32mp15-fmc2"; reg = <0x58002000 0x1000>, --> First region contains the register location <0x80000000 0x1000>, --> Régions 2 to 4 respectively contain the data, command and address space for CS0 <0x88010000 0x1000>, <0x88020000 0x1000>, <0x81000000 0x1000>, --> Régions 5 to 7 contain the same areas for CS1 <0x89010000 0x1000>, <0x89020000 0x1000>; interrupts = <GIC_SPI 48 IRQ_TYPE_LEVEL_HIGH>; --> The interrupt number used dmas = <&mdma1 20 0x10 0x12000A02 0x0 0x0 0>, --> DMA specifiers [4] <&mdma1 20 0x10 0x12000A08 0x0 0x0 0>, <&mdma1 21 0x10 0x12000A0A 0x0 0x0 0>; dma-names = "tx", "rx", "ecc"; clocks = <&rcc FMC_K>; resets = <&rcc FMC_R>; status = "disabled"; };
与STM32相关的设备树部分应保持原样,客户不应对其进行修改。 |
DT configuration (board level)
FMC外设可以连接到一个SLC NAND闪存(每个封装最多2个管芯)。
&fmc { Comments pinctrl-names = "default", "sleep"; --> For pinctrl configuration, please refer to Pinctrl device tree configuration pinctrl-0 = <&fmc2_pins_a>; pinctrl-1 = <&fmc2_sleep_pins_a>; status = "okay"; --> Enable the node #address-cells = <1>; #size-cells = <0>;
nand: nand@0 { reg = <0>; --> Describe the CS line assigned to the NAND chip nand-on-flash-bbt; --> Store the bad block table on NAND Flash memory nand-ecc-strength = <8>; --> Number of bits to correct per ECC step nand-ecc-step-size = <512>; --> Number of data bytes that are covered by a single ECC step #address-cells = <1>; #size-cells = <1>; }; };
支持的ECC强度和步长为:
- nand-ecc-strength = <1>, nand-ecc-step-size = <512> (HAMMING).
- nand-ecc-strength = <4>, nand-ecc-step-size = <512> (BCH4).
- nand-ecc-strength = <8>, nand-ecc-step-size = <512> (BCH8).
DT configuration examples
以下示例显示了在连接SLC 8位NAND闪存设备时(ECC要求:8位/ 512字节)如何配置FMC控制器.
&fmc { pinctrl-names = "default", "sleep"; pinctrl-0 = <&fmc2_pins_a>; pinctrl-1 = <&fmc2_sleep_pins_a>; status = "okay"; #address-cells = <1>; #size-cells = <0>;
nand: nand@0 { reg = <0>; nand-on-flash-bbt; #address-cells = <1>; #size-cells = <1>;
partition@0 { ... }; }; };
下例显示了连接SLC 8位NAND闪存设备时的FMC控制器配置(ECC要求:4位/ 512字节).
&fmc { pinctrl-names = "default", "sleep"; pinctrl-0 = <&fmc2_pins_a>; pinctrl-1 = <&fmc2_sleep_pins_a>; status = "okay"; #address-cells = <1>; #size-cells = <0>;
nand: nand@0 { reg = <0>; nand-on-flash-bbt; nand-ecc-strength = <4>; nand-ecc-step-size = <512>; #address-cells = <1>; #size-cells = <1>;
partition@0 { ... }; }; };
How to configure the DT using STM32CubeMX
STM32CubeMX 工具可用于配置STM32MPU设备并获取相应的platform configuration device tree 文件。
STM32CubeMX可能不支持以上DT bindings documentation 段中描述的所有属性。 如果是这样,该工具会在生成的设备树中插入用户部分。 然后可以编辑这些部分以添加某些属性,并将它们代代相传。 有关详细信息,请参阅STM32CubeMX 用户手册。
References
有关完整说明,请参阅以下链接:
- ↑ Documentation/devicetree/bindings/mtd/nand.txt| |}} Documentation/devicetree/bindings/mtd/nand.txt
- ↑ Documentation/devicetree/bindings/mtd/stm32-fmc2-nand.txt| |}} Documentation/devicetree/bindings/mtd/stm32-fmc2-nand.txt
- ↑ arch/arm/boot/dts/stm32mp157c.dtsi| |}} arch/arm/boot/dts/stm32mp157c.dtsi
- ↑ Documentation/devicetree/bindings/dma/stm32-mdma.txt| |}} Documentation/devicetree/bindings/dma/stm32-mdma.txt