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.

[参考译文] AM2432:IS25LP256D 自定义闪存支持

Guru**** 1821780 points
Other Parts Discussed in Thread: AM2434, AM2432, UNIFLASH, SYSCONFIG, LP-AM243
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1367867/am2432-custom-flash-support-with-is25lp256d

器件型号:AM2432
主题中讨论的其他器件: UNIFLASHSysConfigLP-AM243、AM2434

工具与软件:

您好!

我们有一个带有 AM2432 ALV 芯片的定制电路板、我们选择的闪存是 IS25LP256D、并且处于 QSPI 模式。 现在、我们要在启动时将一些 Hello world 图像刷写到电路板中。  

以下是我完成的步骤:

 1.遵循 AM243x MCU+ SDK:添加对定制闪存设备的支持( TI.com ) ,获取 SDFM 参数并将其保存到.json 文件中。

----------------------------------------------------------------------------------------

Starting SOC Initialization ...

Resetting self cluster ...

[OSPI Flash Diagnostic Test] Starting ...

[OSPI Flash Diagnostic Test] Flash Manufacturer ID : 0x9D

[OSPI Flash Diagnostic Test] Flash Device ID       : 0x6019

[OSPI Flash Diagnostic Test] Executing Flash Erase on first block...

[OSPI Flash Diagnostic Test] Done !!!

[OSPI Flash Diagnostic Test] Performing Write-Read Test...

[OSPI Flash Diagnostic Test] Write-Read Test Passed!

[QSPI Flash Diagnostic Test] SFDP Information :

================================================

                      SFDP                     

================================================

SFDP Major Revision                       : 0x1

SFDP Minor Revision                       : 0x6

Number of Parameter Headers in this Table : 2

 

Types of Additional Parameter Tables in this flash

---------------------------------------------------

Unsupported Parameter Table type!!! - 0x29D

 

JSON Data for the flash :

 

{

 

"flashSize": 33554432,

"flashPageSize": 256,

"flashManfId": "0x9D",

"flashDeviceId": "0x6019",

"flashBlockSize": 65536,

"flashSectorSize": 4096,

"cmdBlockErase3B": "0xD8",

"cmdBlockErase4B": "0xD8",

"cmdSectorErase3B": "0x20",

"cmdSectorErase4B": "0x20",

"protos": {

"p111": {

"isDtr": false,

"cmdRd": "0x03",

"cmdWr": "0x02",

"modeClksCmd": 0,

"modeClksRd": 0,

"dummyClksCmd": 0,

"dummyClksRd": 0,

"enableType": "0",

"enableSeq": "0x00",

"dummyCfg": null,

"protoCfg": null,

"strDtrCfg": null

},

"p112": {

"isDtr": false,

"cmdRd": "0x3B",

"cmdWr": "0x02",

"modeClksCmd": 0,

"modeClksRd": 0,

"dummyClksCmd": 0,

"dummyClksRd": 8,

"enableType": "0",

"enableSeq": "0x00",

"dummyCfg": null,

"protoCfg": null,

"strDtrCfg": null

},

"p114": {

"isDtr": false,

"cmdRd": "0x6B",

"cmdWr": "0x02",

"modeClksCmd": 0,

"modeClksRd": 0,

"dummyClksCmd": 0,

"dummyClksRd": 8,

"enableType": "2",

"enableSeq": "0x00",

"dummyCfg": null,

"protoCfg": null,

"strDtrCfg": null

},

"p118": null,

"p444s": {

"isDtr": false,

"cmdRd": "0xEB",

"cmdWr": "0x02",

"modeClksCmd": 0,

"modeClksRd": 2,

"dummyClksCmd": 0,

"dummyClksRd": 4,

"enableType": "2",

"enableSeq": "0x04",

"dummyCfg": {

"isAddrReg": false,

"cmdRegRd":"0x00",

"cmdRegWr":"0x00",

"cfgReg":"0x00000000",

"shift":0,

"mask":"0x00",

"bitP":0

},

"protoCfg": {

"isAddrReg": false,

"cmdRegRd": "0x00",

"cmdRegWr": "0x00",

"cfgReg": "0x00000000",

"shift": 0,

"mask": "0x00",

"bitP": 0

},

"strDtrCfg": {

"isAddrReg": false,

"cmdRegRd": "0x00",

"cmdRegWr": "0x00",

"cfgReg": "0x00000000",

"shift": 0,

"mask": "0x00",

"bitP": 0

}

},

"p444d": {

"isDtr": false,

"cmdRd": "0xEB",

"cmdWr": "0x02",

"modeClksCmd": 0,

"modeClksRd": 2,

"dummyClksCmd": 0,

"dummyClksRd": 4,

"enableType": "2",

"enableSeq": "0x04",

"dummyCfg": {

"isAddrReg": false,

"cmdRegRd":"0x00",

"cmdRegWr":"0x00",

"cfgReg":"0x00000000",

"shift":0,

"mask":"0x00",

"bitP":0

},

"protoCfg": {

"isAddrReg": false,

"cmdRegRd": "0x00",

"cmdRegWr": "0x00",

"cfgReg": "0x00000000",

"shift": 0,

"mask": "0x00",

"bitP": 0

},

"strDtrCfg": {

"isAddrReg": false,

"cmdRegRd": "0x00",

"cmdRegWr": "0x00",

"cfgReg": "0x00000000",

"shift": 0,

"mask": "0x00",

"bitP": 0

}

},

"p888s": null,

"p888d": null,

"pCustom": {

"fxn": null

}

},

"addrByteSupport": "0",

"fourByteAddrEnSeq": "0xA9",

"cmdExtType": "NONE",

"resetType": "0x30",

"deviceBusyType": "1",

"cmdWren": "0x06",

"cmdRdsr": "0x05",

"srWip":  0,

"srWel":  1,

"cmdChipErase": "0xC7",

"rdIdSettings": {

"cmd": "0x9F",

"numBytes": 5,

"dummy4": 0,

"dummy8": 0

},

"xspiWipRdCmd": "0x00",

"xspiWipReg": "0x00000000",

"xspiWipBit": 0,

"flashDeviceBusyTimeout": 60000000,

"flashPageProgTimeout": 200

}

 

All tests have passed!!

----------------------------------------------------

2.修改 Flasher_JTAG_uniflash_AM243EVM 演示并获取.out 文件

3. 再次使用 JScript 初始化 SOC。

4.设置 Uniflash

5.加载映像并发生错误

有什么想法如何继续?

提前感谢您。

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

    您好!

    您可以不使用 JTAG_UNIFLASH、而是将自定义闪存与 SBL_UART_UNIFLASH 集成

    https://software-dl.ti.com/mcu-plus-sdk/esd/AM243X/latest/exports/docs/api_guide_am243x/TOOLS_FLASH.html#TOOLS_FLASH_UART_UNIFLASH

    使其开始工作后、我们可以检查 JTAG 1。

    此致、

    Prashant

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

    您好!

    全部7个 UART 端口都连接到电路板上的 RS485收发器 . 我们现在使用 UART6 (0至6)作为 DEBUG_LOG_PORT。

    我们修改了 SysConfig 并添加了一个 GPIO 来控制 UART7_TX_EN。 完成此修改后、我们可以通过 RS485=>USB 转换器在 PC 上获取 UART 输出。  

    我可以对 SBL_UART_UNIFLASH 进行相同的修改、然后返回。

    谢谢您的建议。

    BR

    Junjie.

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

    另一条信息是这一点 将引导模式设置为 UART 模式后、我们没有看到任何 UART6的输出 . 我们是否应该看到指南中所述的一些输出?

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

    您好!

    在 UART 引导模式下、ROM 始终使用 UART0转储该字符串以及接收映像。 我不确定您的 UART 设置、但是的、您必须在尝试 SBL_UART_UNIFLASH 之前先看到该字符串。

    关于 JTAG_flaser、这是您第一次尝试此工具、还是之前工作过但现在发现了错误?

    此致、

    Prashant

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

    您好!

    我还发现只能使用 UART0、快速测试的一个步骤是 UART0上没有输出。

    明天我将尝试使用 UART0来传输映像。

    关于 JTAG_FLASH、这是我第一次尝试使用定制板。 我们已成功使用 UNIFLASH 将映像编程到 AM243-EVM 和 LP-AM243电路板中。  

    BR

    Junjie.

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

    您好!

    [报价 userid="608177" url="~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1367867/am2432-custom-flash-support-with-is25lp256d/5224614 #5224614"]关于 JTAG_FLASH、这是我第一次尝试使用定制电路板。 我们已成功使用 UNIFLASH 将映像编程到 AM243-EVM 和 LP-AM243电路板中。  [报价]

    在这种情况下、我想您已经熟悉了这个刷写过程。 但是、以防万一、您在点击"Load Images"按钮开始刷写过程之前、是否已确保对 SoC 进行了初始化?

    随后的文档中提到了这一点

    https://software-dl.ti.com/mcu-plus-sdk/esd/AM243X/09_02_00_50/exports/docs/api_guide_am243x/TI_UNIFLASH_TOOL.html

    此致、

    Prashant

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

    您好!

     "初始化 SoC" 补偿 加载映像。 这里的一个问题是、我根据 EVM 板的示例工程(AM2434 ALV)重新编译 JTAG_Flasher.out。 我们的电路板基于 AM2432 ALV。  此差异是否会在 JTAG 闪存期间导致一些问题?

    考虑 UART_UNIFLASH。 强制 RS485_EN 为高电平后、我们可以从 UART0获取打印输出。 然后、我们强制 RS485_EN 为低电平、并开始 UART_FLASH 操作、它在发送时阻塞   sbl_uart_uniflash.Debug.hs_fs.tiimage

    有什么想法吗?

    感谢您的进步。

    BR

    Junjie.

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

    您好!

    [报价 userid="608177" url="~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1367867/am2432-custom-flash-support-with-is25lp256d/5234826 #5234826"]这里的一个问题是我根据 EVM 板的示例项目(AM2434 ALV)重新编译了 JTAG_Flasher.out。 我们的电路板基于 AM2432 ALV。  此差异是否会在 JTAG 闪存期间导致一些问题?[/QUOT]

    这不会导致任何问题。 JTAG 闪存器仅在 R5FSS0-0内核上运行、不使用任何其他内核。

    可能是 JTAG 闪存器启动、但可能在 OSPI 初始化时某处失败、因此 Uniflash 会超时等待响应。 在 Uniflash 报告故障后、您是否可以手动连接到内核、以及查看内核所挂起的地址是什么?

    [报价 userid="608177" url="~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1367867/am2432-custom-flash-support-with-is25lp256d/5234826 #5234826"]关于 UART_UNIFLASH。 将 RS485_EN 强制设置为高电平后、便可从 UART0获取打印结果。

    您的意思是 UART0上会出现一些十六进制字符串? 如果是、你可以尝试直接通过 UART 引导 SBL NULL、看看这是否起作用。

    https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1329012/am6442-sbl-is-blocked-in-an-loop-of-bootloader_socwaitforfwboot/5057360#5057360

    此致、

    Prashant

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

    您好!

    我们现在可以连接到 UART0 (在另一个板上工作后)。 以前的电路板上存在一些硬件问题。

    但仍然无法通过 UART0加载映像。 有什么想法吗?

    它始终报告 已过期的 ACK;块1的得到 B'C'

    BR

    Junjie.

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

    您好、 Prashant

    >>这不会引起任何问题。 JTAG 闪存器仅在 R5FSS0-0内核上运行、不使用任何其他内核。

    >>可能是 JTAG 闪存器启动、但在 OSPI 初始化的某个地方失败、因此 Uniflash 会超时等待响应。 在 Uniflash 报告故障后、您是否可以手动连接到内核、以及查看内核所挂起的地址是什么?

    您能详细说明一下如何 查看地址 MCU 暂停吗? 如果出现 Uniflash 报告错误、似乎 CCS 已断开连接。

    此致

    Zekun

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

    您好!

    但我们仍然无法通过 UART0加载映像。 有任何想法?

    看起来 SoC 在该过程的中间正在进行复位。 您是否尝试过多次、发现了同样的问题? 请确保在 UART 引导模式下为电路板通电后立即开始刷写过程。

    您能详细说明一下如何 查看 MCU 暂停地址吗? 如果 uniflash 报告错误、则似乎 CCS 已断开连接。[/QUOT]

    在 Uniflash 发生故障后、可以使用 CCS 连接到 R5FSS0-0内核。 连接后、它将在某个地址暂停、如下所示

    此致、

    Prashant

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

    您好!

    我们在0x00000044暂停

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

    您好!

    我们对 JTAG UNIFLASH 进行了更多的测试。

    1.我们移除了定制电路板上的 IS25LP256D。

    2.将闪存芯片(从 AM243-LP 板上移除)固化到定制板上。

    3.初始化 SOC 步骤

    4.使用 Uniflash 刷写采用 TI AM243-LP 配置的电路板。

    5. Uniflash 报告成功。  

    因此、所有相关的硬件器件似乎都可以、问题出在根据您的手册生成的 flasher_jag_uniflash.out 中。

    关于 UART_UNIFLASH、问题在于 UART 通信本身、我们稍后可以研究它。

    我们是否应重点讨论 JTAG_UNIFLASH?

    BR

    Junjie.

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

    尊敬的俊杰:

    是的、我们应关注 JTAG Flasher。

    让我们暂时忘记 Uniflash。 在我们确认 JTAG 闪存器正在引导并与您的定制闪存器件兼容后、我们就可以使用 Uniflash 了。 因此、想法是不让 Uniflash 加载 JTAG 刷出文件、而是使用 CCS 手动执行。

    因此、在 SoC 初始化之后、您可以使用"Load Program"选项重置内核以及加载 JTAG 闪存器输出文件。 这将引导应用程序。 然后检查它成功的距离。 最好在 Board_driversOpen 时发生故障而不进行任何更改。

    然后、您可以反复更新闪存配置、直到 Board_driversOpen 返回成功。

    调试过程应与以下内容类似

    之后、您应该能够成功地将其与 Uniflash 配合使用。

    此致、

    Prashant

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

    Prashant、您好!

    我今天早上发现了这个问题。

    原因有两个:

    1.示例 SysConfig 中有一个默认 MMC 配置。 这会非常有用。 它卡在打开 MMC 函数中。

    但是我 这么做 删除 MMC 的配置、否则它将报告生成错误。 有什么想法吗?

    2. SysConfig 只会根据所选的协议输入相应的值。 默认配置为8-8-8、因此它会加载错误的参数。 切换到1s-1s-1s 后、我必须再次加载 json 文件。

    现在、JTAG_UNIFLASH 成功报告。

    是什么  

    1.修改后的 ospi_sbl (我已将 QSPI 闪存部分修改为 JTAG_uniflash.out)为调试端口启用 UART 7。

    2.修改了 hello world 应用、为调试端口启用了 UART7。 (我可以看到 UART7在调试模式下的输出。)

    但在我们切换回 QSPI 模式后、没有输出。

    有什么建议,如何启动一个 Hello world 应用程序?

     

    谢谢你。

    BR

    Junjie.

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

    尊敬的俊杰:

    [报价 userid="608177" url="~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1367867/am2432-custom-flash-support-with-is25lp256d/5254595 #5254595"]但是我 这么做 删除 MMC 的配置、否则它将报告生成错误。 有什么想法吗? [报价]

    要禁用 eMMC 初始化、只需将 Card Type 设置为 NO_DEVICE。

    关于如何启动 Hello world 应用程序的任何建议?

    您能否首先尝试刷写和引导 SBL NULL 映像? 如果进行引导、则至少要确认 JTAG 闪存器是否正常工作。 然后、我们可以移动到 SBL OSPI 和 Hello World。

    此致、

    Prashant

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

    Prashant、您好!

    我将 JTAG_UNIFLH 修改为以下配置1s-1s。

    我将 UART 部分修改为在 sbl_null 示例工程中使用 uart6并生成了文件。

    对板编程后、

    1.将实验板切换回 SPI 模式、模式0和 CS0。 引导引脚是(LSB 优先:110 (PLL 25MHz) 1100 (SPI) 00 (模式0和 CS0)

    2. 我使用 lclk 0和 CS0将实验板切换回 QSPI 模式。 引导引脚是(LSB 优先:110 (PLL 25MHz) 0100 (QSPI) 00 (lclk = 0和 CS0)

    没有输出。

    有什么想法吗?  

    是否将协议更改为4S-4S-4S? 1至1至4节电池? 使用 QSPI 模式?

    BR

    Junjie.

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

    尊敬的俊杰:

    在对电路板进行编程后、

    JTAG Uniflash 是否报告刷写成功完成?

    如果启动后、我们可以假设它已将映像正确写入闪存中、那么应侧重于从 SPI 引导的 ROM。 在这种情况下、有两种可能:

    1. ROM 确实引导了 SBL NULL 映像、但 UART 日志记录可能无法正常工作。
    2. ROM 无法从 SPI 引导、可能是由于引导模式不正确。

    为了识别是哪一个、 您能否使用 JTAG 连接到 R5F 内核并查看内核被暂停的地址。 如果是0x00000044、则是第一种情况。 如果是0x41xxxxxx、则是第二种情况。

    对于第一种情况、必须在 SBL NULL 示例中设置正确的 UART 设置。

    在第二种情况下、您可以尝试禁用 SFDP 的 xSPI 引导模式(B0-B7:11001110、B8-B15:00000000)。

    此致、

    Prashant

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

    Prashant、您好!

    感谢您的反馈。 我只是尝试将 JTAG_UNIFLASH 设置为 4S-4S-4S 并生成了一个新的  JTAG_UNIFLASH_444.out .

    之后将 SBL_NULL 编程为用这个值进行闪存   JTAG_UNIFLASH_444.out . 或者会与 QSPI 模式(.. B0-B7:11001000 )、  我可以启动 SBL_NULL 并查看打印内容!

    然后、我导入了一个 sbl_ospi 示例并修改了 SysConfig、与相同  JTAG_UNIFLASH_444.out

    它似乎卡在某个地方。

    除了添加一些 debug_log 之外、是否有其他方法可以调试此 sbl_ospi?

    另一个猜测是、我可能需要修改一些从 ospi 到 QSPI 的配置?

    我检查了 sbl_ospi LP 和 EVM 之间的差异。 sbl_ospi 使用4S-4D-4D 并启用了 PHY 和 DMA

    有什么想法吗?

    谢谢你。

    BR

    Junjie.

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

    尊敬的俊杰:

    您是否未在 SBL OSPI 中启用 DMA 和 PHY? 如果不能启动调试器、您能否尝试启用调试器、看看这样是否可行?

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

    不、我是从 EVM sbl_ospi 演示开始的。 我现在可以尝试它,也可以尝试4D-4D。

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

    Prashant、您好!

    我进行了几个测试、请参阅以下摘要。

    另一件事是、我尝试为板闪存 4S-4D-4D  并生成了一个新的  JTAG_UNIFLASH_444d.out  . Uniflash 会在最后一步报告验证错误的错误。 所以4S-4S 似乎只能用。

    BR

    Junjie.

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

    您好!

    在启用 PHY 和 DMA 的4S-4S-4S 模式下、您能否在 SBL OSPI SysConfig 中通过以下检查禁用身份验证并尝试引导?

    此致、

    Prashant

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

    您好!

    它已被禁用。

    BR

    Junjie.

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

    否、当前已启用身份验证。 您需要选中对应于"Disable auth for Appimage image"的复选框以跳过身份验证。

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

    您好!

    在"禁用 Appimage 图像的授权"后,它似乎更好,但它仍然卡在运行 Hello world 应用程序之前。

    我已经在调试模式下测试的 Hello world 应用。 它可以打印出 Hello world。

    有什么建议吗?

    BR

    Junjie.

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

    您好!

    我认为 SBL OSPI 尚不与您的定制器件兼容。 因此、它可能读取的数据不正确、从而导致出现该问题。

    您是否可以在使用 SBL NULL 或任何其他方法初始化 SoC 之后、通过 CCS 运行 OSPI_FLASH_IO 示例? 如果此示例运行成功、则将确切的闪存配置复制粘贴到 SBL OSPI、然后查看 Hello World 是否引导?

    https://software-dl.ti.com/mcu-plus-sdk/esd/AM243X/09_02_00_50/exports/docs/api_guide_am243x/EXAMPLES_DRIVERS_OSPI_FLASH_IO.html

    此致、

    Prashant

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

    您好!

    我试图修改  OSPI_FLASH_IO 示例、该示例可以通过所有测试。

    然后、我将相同的配置复制到了 SBL_OSPI 项目并添加了一些打印内容。  

    控制台输出为"加载 rprcImageLoad R50-0 =-1"后

    然后我跟踪了代码、似乎幻数不匹配。 有什么建议吗?

    另一件事是它只能启动 一次 作为写入字节。 那么它将进入像 NO_BOOT 一样的模式? 与 DEV 模式相同的电流、但无法运行 Initialize_SOC 步骤。 我假设主引导模式 QSPI 发生了故障、它进入了备用引导模式、或者它损坏了闪存? 在我们将主引导模式更改回 DEV 之前、我们无法再对闪存进行编程。 更改此模式需要时间、是否有其他方法可以 在不更改引导模式引脚的情况下恢复?

    BR

    Junjie.

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

    您好!

    然后我跟踪了代码、似乎幻数不匹配。 有什么建议吗? [报价]

    您能否检查"cpuinfo->rprcOffset"的值? SBL OSPI 从不正确的偏移读取数据、或从正确的偏移读取不正确的数据。

    [报价 userid="608177" url="~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1367867/am2432-custom-flash-support-with-is25lp256d/5263532 #5263532"]另外一件事是它只能启动 一次 在对映像进行编程之后。[/QUOT]

    您想说、一旦您对 SBL OSPI 和 Hello World 应用映像进行编程并将引导模式更改为 QSPI、SBL OSPI 引导、但在电路板断电/上电后它不会再次引导吗?

    此致、

    Prashant

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

    您能否检查"cpuinfo->rprcOffset"的值? SBL OSPI 从不正确的偏移读取数据或从正确的偏移读取不正确的数据。[/QUOT]

    没错 0x20

    您是说对 SBL OSPI 和 Hello World appimage 进行编程并将引导模式更改为 QSPI 后、SBL OSPI 引导、但在电路板断电/电源打开后它不会再次引导吗?

    是的、情况就是这样。

    我查看了另一篇文章、其中提到了器件类型。 根据打印输出信息、我们可以看到 FS 参数。

    [常见问题解答] TDA4VM:J72E:如何确定这是 GP 器件还是 HS 器件-处理器论坛-处理器- TI E2E 支持论坛

    以下是我们的控制台输出

    0a0000011a0000616d36347800000000000048534653000002000000020002a6000000000000b018658ad99dc903c8c9bfb27b12751099920a042ad1d997b

    下面是我使用下面链接中介绍的工具解析的内容。

    3.3.1. GP 到 HS-SDK 迁移指南—处理器 FS 文档 

    下面是我从复制的内容  Makefile_ccs_bootimage_gen

    ifeq ($(ENC_SBL_ENABLED)、yes)
    $(BOOTIMAGE_CERT_GEN_CMD)--swrv 1 --sbl-enc --enc-key $(APP_encryption_key)--sbl-bin $(BOOTIMAGE_BIN_NAME)--sysfw-bin $(SYSFW_PATH)/sysfw-hs-enc.bin --sysfw-iner-loadford-internal-bin $(SYSFW_CONFIG)$-BOOTIMADSB_COND ()$-sysfw_LOADDR_LOADDR_BOODBROB -$-LOADDR_COND (SYSP_BOODBF_COND)$-SYSCADDR_COND ($-SYSCHARDROD (SYSFW_COND)--$-sysfw_LOADBRD (SYSFW_LOADDR_COND)-$-sysfw_LOADDR_LOADDR (SYSCADDR_COND (SYSCK)- sysfw-hs-enc-cert.bin
    设计
    $(BOOTIMAGE_CERT_GEN_CMD)--swrv 1 --sbl-bin $(BOOTIMAGE_BIN_NAME)--sysfw-bin $(SYSFW_PATH)/sysfw-iner-cert sysfw-hs-enc.bin $(SYSFW_PATH) sysfw-hs-enc-cert.bin
    字节序

    有什么建议吗?

    BR

    Junjie.

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

    您好!

    我们应该专注于应用程序图像的此验证吗?

    如果我启用此选项、它将在上述位置返回-1。

    如果我禁用此选项、在哪里关闭应用程序映像的加密?

    BR

    Junjie.

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

    您好!

    部分更新:

    我在 使用 LP 板上的闪存(S25HL512T)替换闪存的电路板上再做一次测试。

    在与 sbl_ospi_am243_lp 相同的配置下、我们可以顺利启动 SBL、但仍然没有 hello world 打印。

    自定义闪存(IS25lp256d)与  S25HL512T 的区别在于 加载 rprc 步骤。 对于自定义闪存、它失败、对于 TI 默认闪存、它会报告0。

    但它们都无法启动 hello world。

    能否就如何继续提供一些反馈?

    BR

    Junjie.

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

    您好、 Prashant

    您是否可以优先考虑这个问题、因为它已经等待了2周。 我将在明天第二天的现场支持,你有什么想法,我们可以测试?  

    此致

    Zekun

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

    您好!

    您能就如何继续提供一些反馈吗?

    您需要连接到 R5F 内核、并记下内核挂起的地址。 如果该地址位于 Hello World 应用程序使用的区域中、这意味着该应用程序已引导、但出于某些原因未在 UART 上转储日志。

    如果您可以共享 Hello World 应用程序映像、我也可以在自己侧检查一次。

    此致、

    Prashant

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

    您好、Prashant

    是的、我们可以共享应用程序。  

    但是、如果我们使用客户的闪存、它将在 rprc 加载时发生故障。 下一步是使用客户闪存进行调试?

    此致

    Zekun

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

    请找到 hello world 应用程序。

    对将 UART6用作调试 UART 端口进行了一些修改。 并将引脚 P17设置为 GPIO 输出、默认为高电平。

    e2e.ti.com/.../3348.Debug.zip

    使用 TI 闪存时、它仍然卡在 SBL 地址。

    BR

    Junjie.

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    使用 TI 闪存时、它仍然停留在 SBL 地址。

    这不是 SBL 地址。 该地址位于 MSRAM 第三组中、如果没有更改、则用于 R5F_0应用

    情况确实如此

    这意味着 Hello World 应用程序确实正在启动、但 UART 日志记录功能无法正常工作或应用程序在运行时遇到了一些问题。

    对"Hello World"映像出现的问题进行调试的方法是、在其主函数的一开始放置一个无限循环、然后照常启动它。 启动后、控制将停留在 Forever 循环内。 然后连接到内核、加载符号、中断无限循环并逐步调试。

    此致、

    Prashant

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

    您好!

    使用相同的设置、在我重新编辑闪存后、我不能运行 TI 闪存。 我稍后会尝试您的建议。

    对定制闪存失败的原因有任何建议? 如果我们也可以在自定义闪存上执行相同的步骤(顺利传递 LOAD rprc)、我也可以尝试它。

    BR

    Junjie.

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

    Hi Prashant、è re

    借助 TI 芯片、我们尝试调试幻数、我们在下方位置添加 while 循环。

    得到幻数有一位错误。

    在 IS25LP256D 上、具有相同的幻数错误、但数字不同

    有什么想法吗?

    BR

    Junjie.

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

    您好!

    且获取幻数有一位错误。

    现在您遇到了这种不匹配(甚至是 TI EVM 上的闪存器件)的情况、发生了什么变化?

    您之前提到过 loadrprc 没有报告 TI EVM 上的闪存器件任何故障、并且应用至少确实启动了?

    另一方面、AM243x-EVM 中的 SBL_OSPI 包含 用于 OSPI 闪存部分的 flashFixUpOpiBoot 函数调用。 由于您正在使用 QSPI、是否已删除此函数调用?

    此致、

    Prashant

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

    您好!  

    [报价 userid="531297" url="~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1367867/am2432-custom-flash-support-with-is25lp256d/5274118 #5274118"]

    现在您遇到了这种不匹配(甚至是 TI EVM 上的闪存器件)的情况、发生了什么变化?

    您之前提到过 loadrprc 没有报告 TI EVM 上的闪存器件任何故障、并且应用至少确实启动了?

    [报价]

    我不是在 TI EVM 上、而是在 TI AM243-LP 板上使用闪存芯片。 我没有任何改变、可能是我们飞线并且信号不稳定、但现在它永远无法进入该状态。

    [报价 userid="531297" url="~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1367867/am2432-custom-flash-support-with-is25lp256d/5274118 #5274118"]另一方面、AM243x-EVM 中的 SBL_OSPI 包含 适用于 OSPI 闪存器件的 flashFixUpOpiBoot 函数调用。 由于您正在使用 QSPI、是否已删除此函数调用?[/QUOT]

    我刚才对它添加了注释、并尝试了一下。 相同的幻数错误。

    BR

    Junjie.

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

    尊敬的 Prashant 和 Zequn:

    感谢您的支持。 现在、我找到了一种用于启动 Hello world 应用程序的解决方法。

    剩余问题:

    1.  我们必须为应用程序映像禁用 Auth、否则它会报告某些测试失败。

    2.我在 SysConfig 中找不到在何处启用 DAC 模式、因此我必须修改  ospi_am243x.syscfg.js 中的默认值来解决此问题。

    根本原因是 Bootloader_verifyMulticoreImage->Bootloader_getMsgLen->Bootloader_findSeq 中存在错误  

    它不会检查 DAC 模式是否启用、直接使用指针访问闪存地址0x60008000。 这会导致系统卡在 boot_Handler!= NULL 之后。 (在 Bootloader_verifyMulticoreImage 中)

    虽然正确的方法应该与 驱动程序在 OSPI_readDirct 中先启用 DAC 所做的方法相同。

    摘要如下:

    1.构建并运行 flash_diag_example、将 SDFM 参数读取到 xxx.json 中

    2.修改 Flasher_JTAG_uniflash 示例中的 SysConfig

      -在 OSPI 部分中,将输入 CLK 更改为100000000 (100M)

      -在 Flash 部分中,将协议设置为1-1-1s

      -从在步骤1中获取的 json 文件中加载闪存参数

      -在 MMCSD 部分中,选择 NO_DEVICE ,因为我们的板上没有 SD 卡。

      -构建项目

    3.修改 sbl_ospi 示例中的 SysConfig

      -在 OSPI 部分中,将输入 CLK 更改为100000000 (100M)

      -在 Flash 部分中,将协议设置为1-1-1s

      -从在步骤1中获取的 json 文件中加载闪存参数。

      -在引导加载程序部分中,选择"禁用应用程序映像的验证"

      -修改 sdk_path/source/drivers/.meta/ospi/dac 中的 ospi_am243x.syscfg.js 以启用 soc。

      -构建项目

    BR

    Junjie.

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

    尊敬的俊杰:

    根本原因是 Bootloader_verifyMulticoreImage->Bootloader_getMsgLen->Bootloader_findSeq[/quot]  

    这是一个已知问题、预计将在下一个版本中修复

    https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1332543/mcu-plus-sdk-am243x-ospi-multi-partition-bootloader-example-not-working/5079592#5079592

    此致、

    Prashant