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.
我在让我的自定义硬件引导 IBL 时遇到一些问题。 我的定制硬件与 TMDSEVM6657LS 类似、因为它具有一个连接到处理器 I2C 端口的 EEPROM (AT24CM01)和一个连接到 SPI CS0端口的 NOR 闪存(N25Q064A)。 唯一的区别是存储器和 C6657之间有一个缓冲器。 I2C 线路上的缓冲器是 SPI 线路上的 PCA9306和 SN74AVC4T774。 此外、我的硬件和 EVM 都具有来自处理器 UART0的外部 UART 连接。
由于需要定制 IBL、我已按照提供的说明在 EVM 和定制硬件上构建和加载 IBL。 注意:我已修改 IBL 以在版本行中返回其他字符、以确认我的 IBL 构建正在硬件上执行。
(https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1057566/faq-tms320c6657-how-to-flash-the-ibl-intermediate-boot-loader-into-eeprom-and-how-to-flash-the-application-binary-into-nor-how-to-boot-the-ibl-application-binary) 注意:在脚本正确构建映像之前、我需要运行"make clear"。
我在 EVM 和我的定制硬件上加载了这个新的 IBL。 使用 EVM 时、器件按预期引导(即串行端口报告 IBL 的版本、然后尝试从 SPI NOR 引导。) 在我的自定义硬件上加载此代码时、串行端口上不显示任何内容。 此时、我监控了存储器和 C6657之间的 I2C 通信。 下面总结了 I2C 通信
然后、我注意到两个单元之间的引导地址不同。 因此、我将 IBL 重新编译为目标0x50 (使 EVM_c6657_i2c ENDIAN=Little I2C_BUS_ADDR=0x50)。 我将这个新的输出文件 i2crom_0x50_c6657_le.bin 复制到 EEPROM 加载程序目录、并将 eepromwriter_input.txt 文件 的 bus_addr 更改为 0x50 、并将这个版本加载到定制硬件中。 I2C 事务与 EVM 的事务匹配、但未在 UART 上生成预期结果。 (例如、IBL 版本信息的传输)
我的问题是:
1) 1)这就是我需要更改的全部内容、以便将 IBL 重新定位为从 addr = 0x50加载吗? 如果不是、还需要更改什么?
2) 2)为了正确运行默认 IBL 编译、我是否需要将我的硬件更改为从 addr = 0x51引导?
3) 3)对于如何继续调试此引导方法是否有任何建议?
提前感谢您的帮助。
Brad、
首先、当 在定制硬件上执行平台测试时、必须启动并运行外部存储器(DDR3)。
从上一个帖子中、我可以看到输出日志显示了您的自定义硬件中的外部存储器测试"失败"。
请遵循以下常见问题解答、但事实是它已准备好用于 Keystone 2器件。
相反、我们必须遵循 Keystone I DDR3初始化 指南-https://www.ti.com/lit/an/spracl8/spracl8.pdf
以及"Keystone I DDR3初始化 指南"中提供的扩展表。
--
DDR3启动后、讨论上面发布的问题将更有意义。 因为即使对于 IBL + APP --> I2C 方法,该应用也会被刷写到 NOR 中,并且使用需要 DDR3的相同 NOR 编写器实用程序-->。
此致
Shankari G
我一直在研究 IBL 如何配置 DDR3存储器。 我可以最好地确定 DDR3配置的设置位置有两个。
我是否正确读取了代码、因为不需要在 device.c 文件中配置 EMIF、我需要在 emif4.c 文件中配置 EMIF?
Brad、
首先让我回顾一下扩展表中 DDR3注册计算(您在另一个线程中提供了该计算)。
然后,DDR3注册值应送入自定义硬件的 GEL 文件(sarogota.gel)。
接下来、将运行几个 DDR3内存测试。 (包含在 GEL 中,并且将对整个 DDR3内存执行一些读写测试。)
接下来,运行平台测试 (将确保“外部内存测试”通过, 因为外部内存测试失败,现在...。 在定制硬件中)。
完成这些操作后、让我们继续修改 IBL 源代码。
此方法是否正常?
(我们不要在 e2e 中运行两个线程。 让我来一个。 这一个或上一个。)
此致
Shankari G
虽然我同意只进行一次对话是可取的。 我正在使用两个树形结构、以便直接思考我当时使用的引导配置(即、该线程用于从 I2C 存储器引导 IBL 时、另一个线程用于直接从 SPI 存储器引导时。 我知道线程之间存在重叠、我遇到的任何问题都可能是不同方法之间的常见问题。 但是、我迫切需要在使处理器自行启动(例如、没有开发 POD)的目标上取得进展、因为这会阻碍其他硬件验证测试。 我的管理人员对此主题非常积极、我对阻碍项目的工作感到非常热。 (例如、为什么我愿意在夜间与您的白天时间相匹配...) 我现在回到办公室,愿意尝试 你的任何建议。
Brad、
好的。
我需要一些时间来查看您使用的 DRAM 芯片的 DDR3计算展板。
--
同时、您可以执行以下操作:
DDR3调试源代码可从这里获得--->https://www.ti.com/lit/an/sprac04/sprac04.pdf (在第 n:1页,第三行)
(下载“sprac04.zip” http://www.ti.com/lit/zip/sprac04后,解压缩并找到 GEL,“Keystone2_DDR_Debug_v1_4.gel ”)
1.下载并修改 Keystone-I 的源代码
2. 通过与 Keystone2_DDR_Debug_v1_4.gel 进行比较来修改您的定制硬件 GEL 文件
--
这将在您的定制硬件中调试您的 DDR3。
此致
Shankari G
当您离开时、我已注意到 IBL 的运行。 我对它的运行有几个问题。
如果您能提供任何见解、我将不胜感激。
Brad
自从我上一篇文章以来、我现在在我的定制硬件上运行 IBL。 对阅读这些帖子的其他人而言、以下是我所学到的内容的摘要。
我学到的其他东西。
问题。
IBL 图像非常大、加载需要大量时间。 在 IBL 代码中、有多 个预处理器指令会限制映像中包含的代码量(即 exclude_nor_SPI、 exclude_ETH)。 TI 曾/是否设想过用户如何正确设置这些预处理器定义? 请提供一个示例吗?
Brad、
唯一的参考是 TI-C6657 EVM 以及此处发布的常见问题解答指南:
--
其他几个 DOxygen 文档将在以下位置提供:
--
[引用 userid="476937" URL"~/support/processors-group/processors/f/processors-forum/1166305/tms320c6657-booting-ibl-i2c-app-spi-issues/4406274 #4406274"]问题。
IBL 图像非常大、加载需要大量时间。 在 IBL 代码中、有多 个预处理器指令会限制映像中包含的代码量(即 exclude_nor_SPI、 exclude_ETH)。 TI 曾/是否设想过用户如何正确设置这些预处理器定义? 请提供一个示例吗?
[/报价]客户应按照常见问题解答指南手动安装 TI-C6657 EVM。
然后、在 DOxygen 指南中提供的文档的帮助下、根据客户对定制硬件的要求执行代码遍历和修改...
--
例如、
IBL 的引导模式记录在 IBL 配置:定义 IBL 支持的引导模式
安装"Processor SDK 6.3"后、位于 C:/ti/pdk_c665x_2_0_16/packages/ti/boot/ibl/doc/IBL-Configuration/group__ibl_boot_modes.html。
此致
Shankari G