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.

[参考译文] AM62A7:修改 SPI NORFlash 驱动程序的过程模式

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1593370/am62a7-modify-the-process-mode-of-the-spi-norflash-driver

器件型号: AM62A7

尊敬的专家:  

使用的 SDK 版本为:09_02_00_05

Linux 版本 6.1.80 (AArch64-OE-Linux-gcc (GCC) 11.4.0

背景:当前机器以 SBL 启动。 在生产线上、存在机器根本无法启动的情况(概率:5/69)。 NORFlash 供应商怀疑它已进入 8 线模式 (SafeBoot)。 正常的过程是在单线模式下读取闪存器件 ID 后切换到 8 线模式。  目前、无法启动的机器使用 SD 卡启动、闪存驱动程序无法读取 ID。

帮助支持修改闪存驱动器、以直接使用 8 线模式读取 ID 并检查是否是导致无法启动的模式问题。  

 

现象:机器根本无法启动。 是 SBL 启动。 使用闪存启动串行端口时、根本不会打印。 乘积电流介于 0.05 和 0.09A 之间。  但是、当使用 SD 卡启动时、无法访问闪存节点、并且 insmod 驱动程序会提示错误、指示无法识别 ID。  如下所示:  

am62axx-evm login: root
Last login: Thu Apr 28 17:45:33 UTC 2022 on ttyS2
-sh: ./init_script.sh: No such file or directory

root@am62axx-evm:/opt/edgeai-gst-apps#
root@am62axx-evm:/opt/edgeai-gst-apps#
root@am62axx-evm:/opt/edgeai-gst-apps# dmesg -n 8
root@am62axx-evm:/opt/edgeai-gst-apps# insmod /lib/modules/6.1.80/kernel/drivers/spi/spi-cadence-quadspi.ko
[   46.100548] spi-nor spi0.0: unrecognized JEDEC id bytes: ff ff ff ff ff ff
root@am62axx-evm:/opt/edgeai-gst-apps# [   96.134117] kauditd_printk_skb: 5 callbacks suppressed
[   96.134131] audit: type=1334 audit(1651168078.940:17): prog-id=15 op=LOAD
[   96.146240] audit: type=1334 audit(1651168078.944:18): prog-id=16 op=LOAD

当前使用的闪存驱动程序为:  

image.png

修改:通过 SD 卡启动 A 内核、专门定制 A 内核 BSP 以处理从 SafeBoot 恢复 S28HS512T、并且不遵循标准默认 SPI NORFlash 驱动程序流程(先读取闪存 ID,然后匹配驱动程序)。  

谢谢。

此致。

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

    您好 Shawn、

    您能否附加完整的 OSPI 控制器器件树? 是否启用了 phy 模式? 此外、如果需要、您可以对内核驱动程序和/或 U-boot 进行更改(补丁)吗?  

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

    你(们)好  

    OSPI 控制节点如下:  

    aliases {
    		serial0 = &mcu_uart0;
    		serial1 = &wkup_uart0;
    		serial2 = &main_uart0;
    		mmc0 = &sdhci0;
    		mmc1 = &sdhci1;
    		ethernet0 = &cpsw_port1;
    		spi0 = &ospi0;
    	};
    
    &ospi0 {
    	pinctrl-names = "default";
    	pinctrl-0 = <&ospi0_pins_default>;
    
    	flash@0{
    		compatible = "jedec,spi-nor";
    		reg = <0x0>;
    		spi-tx-bus-width = <8>;
    		spi-rx-bus-width = <8>;
    		spi-max-frequency = <25000000>;
    		cdns,tshsl-ns = <60>;
    		cdns,tsd2d-ns = <60>;
    		cdns,tchsh-ns = <60>;
    		cdns,tslch-ns = <60>;
    		cdns,read-delay = <4>;
    
    		partitions {
    			compatible = "fixed-partitions";
    			#address-cells = <1>;
    			#size-cells = <1>;
    
    			partition@0 {
    				label = "ospi.tiboot3";
    				reg = <0x00 0x37c0000>;
    			};
    
    			partition@3fc0000 {
    				label = "ospi.phypattern";
    				reg = <0x3fc0000 0x40000>;
    			};
    		};
    	};
    };

    可以修改(修补)内核驱动程序、但不能修改 U-boot。 当前项目已删除并进入 U-Boot 阶段。 稍后很难验证。  

    谢谢

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

    您好 Shawn、感谢您分享上述信息。 我会将此主题发送给同事以获得更好的指导。 请允许他有一两天的时间回到你身边。
    同时、如果内核/U-boot 中发生与 OSPI 控制器相关的任何其他更改、请与我们分享。

    谢谢您、

    Paula   

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    背景:当前机器以 SBL 的形式启动。 在生产线上、存在机器根本无法启动的情况(概率:5/69)。 NORFlash 供应商怀疑它已进入 8 线模式 (SafeBoot)。 正常的过程是在单线模式下读取闪存器件 ID 后切换到 8 线模式。  当前、无法启动的计算机以 SD 卡启动、并且闪存驱动程序无法读取 ID。

    1/。 硬件复位的启动流程是什么?   SBL ->? ->内核...
    2/。 我们可以拥有完整的启动日志吗?
    3。 我们是否有完整的不工作的引导日志?

    此致、
    - Hong

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

    你(们)好

    与此同时、如果内核/U-boot 中相对于 OSPI 控制器进行了任何其他更改、请与我们分享。

    内核/U-boot 不会对 OSPI 控制器进行更改、并使用 SDK9.2 中的默认驱动程序。  

    以下是对该问题的答复:

    1.启动过程为:SBL -> MCU 镜像-> DM ->  TF-A + OPTEE +内核、有关详细信息、请参阅下图。

    2.对于正常启动的机器,完整的引导日志如下:完整的引导日志.txt。

    e2e.ti.com/.../full-working-boot-log.txt

    3、机器无法启动,根本没有日志输出。 电压为 24V 时、相应电流仅为 0.05 至 0.09A。

    谢谢。

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

    让我跟我的同事一起跟进非工作电路板上 OSPI-NOR 的 SBL 引导问题

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

    您好 Shawn、

    您能不能告诉我 SBL 是否也基于 9.2 中的分辨率? 我根据您分享的日志假设是、但只想确认是否从 SDK MCU-PLUS-SDK   9.2 之上的最新 SDK(链接:www.ti.com/.../11.01.00.16)中选取了任何附加更改、或者它是否纯粹是 9.2 驱动程序本身?

    此外、您能否帮助回答以下 7 个问题: https://www.ti.com/lit/an/sprads5/sprads5.pdf#page=11 

    这将有助于加快调试速度。

    期待您的答复。

    此致、

    Vaibhav

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

    尊敬的  Vaibhav:

    是的、SBL 也基于 SDK9.2 版本。 该程序是基线驱动程序本身、尚未修改。  

    有关闪存的相关信息如下:  

    闪存器件:S28HS512T、64M

    需要修改 SPI 驱动器、以支持使用 8 线模式直接读取 ID。  

    谢谢

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

    您好 Shawn、

    请告诉我、在 SBL 代码中、您是否在任何阶段使用 API flashFixUpOspiBoot。

    如果 API 定义如下、请告知我:

    然后将其替换为以下定义:

    请告诉我、如果这样可以解决您的问题、此函数负责在 ROM 退出后重置闪存。

    期待您的答复。

    此致、

    Vaibhav