器件型号: AM625
您好团队:
MCAL 软件包: MCAL _SitaraMPU_10.01.00.03
如我们的通话中所述、继续处理我们在上一张票证中的问题(关于将同一内核中的多个 RPRC 文件合并为单个二进制文件的工具 — 处理器论坛-处理器 — TI E2E 支持论坛)、我们创建了该票证。
问题是作为输入给出的数据与从闪存读取的数据不匹配。
您能否告知我们、TI 是否有一个示例验证了 Fls_Write 在超过 1MB 数据上的运行情况。
谢谢你。
此致、
Pradeep R
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.
器件型号: AM625
您好团队:
MCAL 软件包: MCAL _SitaraMPU_10.01.00.03
如我们的通话中所述、继续处理我们在上一张票证中的问题(关于将同一内核中的多个 RPRC 文件合并为单个二进制文件的工具 — 处理器论坛-处理器 — TI E2E 支持论坛)、我们创建了该票证。
问题是作为输入给出的数据与从闪存读取的数据不匹配。
您能否告知我们、TI 是否有一个示例验证了 Fls_Write 在超过 1MB 数据上的运行情况。
谢谢你。
此致、
Pradeep R
您好 Pradeep、
目前观察到的行为是读回数据与已知数据不匹配、并且会随机看到一组 FFh。
您能否请执行以下步骤来验证这是否纯粹是写入或读取问题、因为它肯定不是擦除问题:
如果启用了 DAC、并且您看到这些随机 FFh、则写入操作未正确执行、读取效果良好。 如果您没有看到随机的 FFh、则这可以归类为读取失败。
希望这可以澄清需要执行的操作。
期待结果。
此致、
Vaibhav
尊敬的 Vaibhav:
我们 在 FLS 配置中启用了 DAC 位进行调试、请找到附加的文件 bin.zip application.bin(输入应用程序)和 dump_from_flash.bin(从闪存输出应用程序转储)。
如果您需要更多信息、请告知我们。
BR、
Shubham
嗨、Shubham、
[引述 userid=“587427" url="“ url="~“~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1589467/am625-regarding-flash-write-issue-during-nominal-download-of-huge-data/6126646作为 application.bin(输入应用程序)的共享 bin.zip 和 dump_from_flash.bin(从闪存输出应用程序转储)、我们已配置为 1024 个缓冲区大小、大小为 1024 个。
如果可以检查任何内容、请告知我们。
[/报价]谢谢、这应该没问题、我们等待 Appotronic 评论他们测试 MCAL INDAC 示例的方式。 好像在没有 SBL NULL/SBL OSPI 的情况下、它们没有独立测试。
请查看电子邮件、了解他们一方的最新更新。
谢谢、
Vaibhav
共享更新的 FLS_delay 和 OSPI_flashExecCmd
static Std_ReturnType OSPI_flashExecCmd(const CSL_ospi_flash_cfgRegs *pRegs)
{
uint32 retry = OSPI_DAC_WRITE_TIMEOUT;
Std_ReturnType retVal = E_OK;
volatile uint32 tempCount = FLS_TIMEOUT_DURATION;
if (FLS_TIMEOUT_DURATION > 9U)
{
/* Each unit of SW_delay equals to 9 clockcycles, so dividing by 9U */
tempCount = (FLS_TIMEOUT_DURATION / 9U);
}
/* Wait for FSM to to come out of reset */
do
{
if (tempCount == 0U)
{
/* Timeout */
break;
}
MCAL_SW_DELAY(tempCount);
}while (CSL_ospiIsIdle(pRegs) == FALSE);
/* Start to execute flash read/write command */
CSL_ospiFlashExecCmd(pRegs);
while (retry != 0U)
{
/* Check the command execution status */
if (CSL_ospiFlashExecCmdComplete(pRegs) == TRUE)
{
break;
}
OSPI_delay(OSPI_CHECK_IDLE_DELAY);
retry--;
}
if (retry == 0U)
{
retVal = E_NOT_OK;
}
if (FLS_TIMEOUT_DURATION > 9U)
{
/* Each unit of SW_delay equals to 9 clockcycles, so dividing by 9U */
tempCount = (FLS_TIMEOUT_DURATION / 9U);
}
do
{
if (tempCount == 0U)
{
/* Timeout */
break;
}
MCAL_SW_DELAY(tempCount);
}while (CSL_ospiIsIdle(pRegs) == FALSE);
return (retVal);
}
static void Fls_delay(uint32 msecs)
{
volatile uint32 tempCount = 1000000U * msecs;
/* Each unit of MCAL_SW_DELAY() equals ~9 clock cycles,
so we scale tempCount accordingly */
if (msecs > 9U)
{
tempCount = msecs / 9U;
}
/* Wait for the delay to complete */
do
{
if (tempCount == 0U)
{
/* Timeout reached */
break;
}
MCAL_SW_DELAY(tempCount);
} while (tempCount > 0U);
}
此致、
Vaibhav
您好 EB 团队、
感谢 Pradeep 通过电话运行测试。
摘要(呼叫:2025年11月25日):
此致、
Vaibhav
你好、 Vaibhav Kumar 、
感谢您的支持和所有反馈。
通过多次测试、我们发现传递给闪存驱动程序的解压缩数据中存在零星的不匹配。
闪存驱动程序已正确写入数据、但解压缩的数据在选定位置不匹配。
我们将检查解压缩部分、如果我们对闪存驱动程序有任何疑问、我们将再次返回。
此致、
Pradeep R