工具与软件:
大家好、团队成员:
我要在从闪存加载映像之后和启动内核之前将闪存模式从八模式更改为1S-1S-1S 模式。
我需要此消息是因为、我的驱动程序(VxWorks VxBus XSPI 闪存驱动程序)期望闪存处于1S-1S-1S 模式进行连接。 由于 Uboot 以八进制模式刷写、因此未连接驱动程序。
您能告诉我如何进行更改以及可以在哪些地方进行更改吗?
谢谢。此致、
Hamsa Lakshaman
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.
工具与软件:
大家好、团队成员:
我要在从闪存加载映像之后和启动内核之前将闪存模式从八模式更改为1S-1S-1S 模式。
我需要此消息是因为、我的驱动程序(VxWorks VxBus XSPI 闪存驱动程序)期望闪存处于1S-1S-1S 模式进行连接。 由于 Uboot 以八进制模式刷写、因此未连接驱动程序。
您能告诉我如何进行更改以及可以在哪些地方进行更改吗?
谢谢。此致、
Hamsa Lakshaman
@更新 中 Δ V ospi0定义的器件树部分(git.ti.com/.../k3-am625-sk.dts Get-Go 中切换 U-Boot 以使用1位模式
spi-tx-bus-width = <8>;
spi-rx-bus-width = <8>;
最终目的
spi-tx-bus-width = <1>;
spi-rx-bus-width = <1>;
此致、Andreas
您好!
我已经尝试了以上更改
[报价 userid="4452" url="~/support/processors-group/processors/f/processors-forum/1458550/sk-am62-change-the-flash-boot-mode-from-octal-spi-to-1s-1s-1s-mode/5609012 #5609012"]spi-tx-bus-width = <8>;
spi-rx-bus-width = <8>;最终目的
spi-tx-bus-width = <1>;
spi-rx-bus-width = <1>;如果我进行上述更改、Uboot 无法探测闪存、并收到以下错误:

当我浏览 Uboot 代码流程时、我知道 Uboot 期望闪存(s28HS)在读取/写入操作时处于八进制模式、而在探测时、闪存初始化为八进制模式。 代码片段如下:



我的 VxWorks 闪存驱动程序在尝试连接时期望闪存处于1S-1S-1S 模式。 因此、我希望在内核映像引导之前将闪存重新置于1S-1S-1S 模式(VxWorks 映像)。
请在这个问题上帮助我。
谢谢。此致、
Hamsa L
尊敬的 Hamsa:
[报价 userid="59876" url="~/support/processors-group/processors/f/processors-forum/1458550/sk-am62-change-the-flash-boot-mode-from-octal-spi-to-1s-1s-1s-mode/5611495 #5611495"]如果我进行上述更改、Uboot 无法探测闪存、并收到以下错误:

首先、我可以重新创建您看到的问题。
在花任何精力寻找可能的修复方法之前、您可以在结束时确认 OSPI 外设模块和/或 OSPI 闪存器件的"剩余状态"是导致 VxWork"连接"问题的真正原因吗? 为此、您可以出于测试目的通过 UART 引导 U-Boot (或使用 SD 卡引导、因为您使用的是 SK-AM62板)、因此 U-Boot (和 ROM)绝不能触摸 OSPI 外设。 然后、查看是否可以启动 VxWorks。
此致、Andreas
尊敬的 Andreas:
我们测试了 DFU 方法和 UART 刷写方法 、我们将映像加载到 RAM 并从 RAM 启动 VxWorks 映像。 在这种情况下、 VxWorks 能够连接闪存驱动器(vxbXspiFlash)并执行闪存操作。
在这里、当映像被加载到 RAM 中时、uboot 不会访问闪存。 因此、当加载 VxWorks 映像时、连接了闪存驱动程序。
附加一些卡扣进行确认
供参考使用的引导命令:
在 UART 引导模式下、我们能够看到如下所示附加了闪存驱动程序:
谢谢。此致、
Hamsa L
尊敬的 Hamsa:
感谢您的耐心。 我终于可以腾出一些时间并对此进行实验、并得到一个工作示例、其中显示 SK-AM62B 板上的1s-1s 引导。 您应该能够根据自己的需求/闪存芯片采用此解决方案。 请注意、务必将引导模式设置为"SPI"、以便从头开始使用1位数据访问。
以下是启用此功能的补丁。。。
a0797059@jiji:~/git/u-boot (ti-u-boot-2024.04)
$ git show
commit a6e74b25685504b1b12a9dbf761157b4852e2e1e (HEAD -> ti-u-boot-2024.04)
Author: Andreas Dannenberg <dannenberg@ti.com>
Date: Thu Jan 30 16:49:04 2025 -0600
ti: sk-am62b: Perform boot from OSPI using a single data line only
Signed-off-by: Andreas Dannenberg <dannenberg@ti.com>
diff --git a/arch/arm/dts/k3-am625-sk.dts b/arch/arm/dts/k3-am625-sk.dts
index 5ca722aec43..5b8f632bbb1 100644
--- a/arch/arm/dts/k3-am625-sk.dts
+++ b/arch/arm/dts/k3-am625-sk.dts
@@ -246,15 +246,14 @@
bootph-all;
compatible = "jedec,spi-nor";
reg = <0x0>;
- spi-tx-bus-width = <8>;
- spi-rx-bus-width = <8>;
+ spi-tx-bus-width = <1>;
+ spi-rx-bus-width = <1>;
spi-max-frequency = <25000000>;
cdns,tshsl-ns = <60>;
cdns,tsd2d-ns = <60>;
cdns,tchsh-ns = <60>;
cdns,tslch-ns = <60>;
cdns,read-delay = <4>;
- cdns,phy-mode;
partitions {
bootph-all;
diff --git a/drivers/mtd/spi/spi-nor-ids.c b/drivers/mtd/spi/spi-nor-ids.c
index 4e83b8c94c9..48cc58a1078 100644
--- a/drivers/mtd/spi/spi-nor-ids.c
+++ b/drivers/mtd/spi/spi-nor-ids.c
@@ -382,7 +382,7 @@ const struct flash_info spi_nor_ids[] = {
#ifdef CONFIG_SPI_FLASH_S28HX_T
{ INFO("s28hl512t", 0x345a1a, 0, 256 * 1024, 256, SPI_NOR_OCTAL_DTR_READ) },
{ INFO("s28hl01gt", 0x345a1b, 0, 256 * 1024, 512, SPI_NOR_OCTAL_DTR_READ) },
- { INFO("s28hs512t", 0x345b1a, 0, 256 * 1024, 256, SPI_NOR_OCTAL_DTR_READ) },
+ { INFO("s28hs512t", 0x345b1a, 0, 256 * 1024, 256, 0) },
{ INFO("s28hs01gt", 0x345b1b, 0, 256 * 1024, 512, SPI_NOR_OCTAL_DTR_READ) },
{ INFO("s28hs02gt", 0x345b1c, 0, 256 * 1024, 1024, SPI_NOR_OCTAL_DTR_READ) },
#endif
下面是相关的引导日志。。。
# Manually set boot mode to SPI by programming CTRLMMR_MAIN_DEVSTAT => mw.l 0x43000030 0x1b => reset resetting ... U-Boot SPL 2024.04-00001-ga6e74b25685 (Jan 30 2025 - 16:50:13 -0600) SYSFW ABI: 4.0 (firmware rev 0x000a '10.1.8--v10.01.08 (Fiery Fox)') SPL initial stack usage: 13392 bytes Trying to boot from SPI Authentication passed Authentication passed Authentication passed Authentication passed Authentication passed Starting ATF on ARM64 core... NOTICE: BL31: v2.11.0(release):v2.11.0-906-g58b25570c9-dirty NOTICE: BL31: Built : 04:20:32, Nov 1 2024 U-Boot SPL 2024.04-00001-ga6e74b25685 (Jan 30 2025 - 16:50:22 -0600) SYSFW ABI: 4.0 (firmware rev 0x000a '10.1.8--v10.01.08 (Fiery Fox)') SPL initial stack usage: 1904 bytes Trying to boot from SPI Authentication passed Authentication passed U-Boot 2024.04-00001-ga6e74b25685 (Jan 30 2025 - 16:50:22 -0600) SoC: AM62X SR1.0 HS-FS Model: Texas Instruments AM625 SK EEPROM not available at 0x50, trying to read at 0x51 Reading on-board EEPROM at 0x51 failed -121 DRAM: 2 GiB Core: 81 devices, 31 uclasses, devicetree: separate MMC: mmc@fa10000: 0, mmc@fa00000: 1 Loading Environment from nowhere... OK In: serial Out: serial Err: serial EEPROM not available at 0x50, trying to read at 0x51 Net: eth0: ethernet@8000000port@1 Hit any key to stop autoboot: 0 =>
此致、Andreas
这是因为、最新版本与启动 VxWorks 映像不兼容。
请提供详细的背景资料、说明为什么它不兼容。
此致、Andreas
尊敬的 Andreas:
请参阅以下主题
AM625:AM62 -处理器论坛-处理器- TI E2E 支持论坛
谢谢。此致
Hamsa Lakshmanan