“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