This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] Linux/AM3352:内核中看不到 m25p80闪存芯片、但在 u-boot 中找到

Guru**** 2609955 points
Other Parts Discussed in Thread: AM3352

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/582462/linux-am3352-m25p80-flash-chip-not-seen-in-kernel-but-found-in-u-boot

器件型号:AM3352

工具/软件:Linux

你(们)好

我正在使用基于 BeagleBoneBlack 的设计、并使用适用于 am3352的最新 SDK 和工具?

有人能告诉我如何在内核中启用对 m25p80 SPI 闪存芯片的支持吗?

我查看了之前发布的问题、并遵循了我能够找到的示例、但我没有太多的运气。

我可以从 u-boot 访问该芯片、并已将其用于读取内核和 DTB。

我已将 DTS 中的闪存定义为

spi0{(&S)
状态="正常";
pinctrl-names ="default";
pinctrl-0 =<&spi0_PINs>;

SPI-FLASH@0{
兼容="micron、n25q256a"、"m25p80";
SPI-max-frequency =<48000000>;
reg =<0>;
#address-cells =<1>;
大小单元格=<1>;
分区@0{
标签="SPL";
REG =<0x00000000 0x00020000>;
};
分区@20000 {
标签="u-boot";
REG =<0x00020000 0x00066000>;
};
分区@86000{
标签="DTB";
REG =<0x00086000 0x00010000>;
};
分区@96000{
标签="内核";
REG =<0x00960000 0x0050a000>;
};
分区@5a0000{
标签="-";
REG =<0x005a0000 0x01a60000>;
};
};
}; 



在我的.config 内、我可以看到我有的

#
###自包含 MTD 器件驱动程序
#
# CONFIG_MTD_PMC551未设置
# CONFIG_MTD_DataFlash 未设置
CONFIG_MTD_M25P80=y
# CONFIG_MTD_SST25L 未设置
# CONFIG_MTD_SLRAM 未
设置# CONFIG_MTD_MPDDR_PHRAM 未设置
# CONFIG_MTPDR_M2DR_MTPDD_MTR2_MTPMBD



驱动程序且未设置# CMTPLD_MDD_MDD_MDD_MTPLD_MDD_MDD_MTR2_MTPMBD 驱动程序

未设置
# CONFIG_MTD_LPDDR2_NVM 未设置
CONFIG_MTD_SPI_NOR = y
CONFIG_MTD_SPI_NOR_USE_4K_Sectors = y
CONFIG_MTD_UBI_UBI_TBI_THRESHOLD=4096

CONFIG_BEB_LIMIT=20
# CONFIG_MTD_UDB_UBI_UDBI 未

设置# CONFIG_UDB_UDB_TDB_TDI_TAULT_TDB_T

内核运行后,没有/dev/mtd 设备。
/proc/mtd 和 sys/class/MTD 中都没有任何内容

感谢您就我的深入介绍提出的任何建议

此致、
Richard

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Richard、

    您能否尝试添加:
    SPI-FLASH@0{
    兼容="micron、n25q256a"、"m25p80";
    SPI-max-frequency =<48000000>;
    + 状态="正常";
    reg =<0>;
    #address-cells =<1>;

    此致、
    Yordan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢您的建议  

    但是,似乎没有产生任何影响:/dev//sys/class/mtd 或/proc/mtd 中仍然没有任何变化

    转储树的一部分,我可以看到新的属性

    395- SPI@48030000{
    1396- 兼容="ti、omAP4-mcspi";
    1397- #address-cells = 0x00000001>;
    1398- #size-cells =<0x00000000>;
    1399- REG =<0x48030000 0x000001c1>;
    1400- 中断= 0x00000041>;
    1401- TI、SPI-num-cs =<0x00000002>;
    1402: ti、hwmids ="spi0";
    1403-14 DMA =<0x0000002d 0x00000011 0x00000000 0x00000003 0x72783000 0x00000005 0x00000003 0x756c7400 0x00000043 0x68403000 0x6d696372 0x6d323570>;
    1404- dma-names ="tx0"、"rx0"、"tx1"、"rx1";
    1405- 状态="正常";
    1406 - pinctrl-names ="默认值";
    1407- pinctrl-0 = 0x00000043>;
    1408- SPI-FLASH@0{
    1409- 兼容="micron、n25q256a"、"m25p80";
    1410- SPI-max-frequency =<0x02dc6c00>;
    1411- 状态="正常";
    1412- reg =<0x00000000>;
    1413- #address-cells = 0x00000001>;
    1414- 大小单元格= 0x00000001>;
    

    仔细看代码、我注意到提到"m25p80"是兼容的并使用了"JEDEC":我将尝试在这里挖掘。

    我还注意到、modprobe 未找到"m25p80"的依赖项

    再次感谢

    Richard

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你(们)好

    这些日期的必需绑定看起来如下所示:

    spi0{(&S)
    状态="确定";
    pinctrl-names ="默认值";
    pinctrl-0 =<&spi0_PINs>;
    
    SPI-FLASH@0{
    兼容="micron、n25q256a"、"JEDEC、SPI-NOR ";//<--- N.B.此
    SPI-max-frequency =<48000000>;
    状态="确定"; 

    这可以在源代码的绑定文档中找到;(这些文档可能是最新的)。

    祝你一切顺利

    Richard

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢您更新该主题。

    此致、
    Yordan