2406247_zh-CN

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

2406247_zh-CN

2406247_zh-CN

SDK示例闪存和LWIP硬故障

你好,

当我将两个 SDK 示例“frdmimxrt1186_lwip_ipv4_ipv6_echo_freertos_cm33”和“frdmimxrt1186_flexspi_nor_polling_transfer_cm33”组合在一起时,执行函数“FLEXSPI_SoftwareReset(base);”后最终导致硬故障。我还注意到“基址”0x445E0000 发生了变化。我使用的是 FRDM-RT1186 EVA 套件。造成这种情况的原因可能是什么?

我使用的是 MCUXpressoIDE_25.6.136。

感谢您的反馈。

Re: SDK example flash and LWIP hard-fault

嗨,Pablo,

感谢您与我联系。

我使用的是 SDK 26.03.00 (928 2026-03 , 清单版本 3.15.0 )。

我以“frdmimxrt1186_lwip_ipv4_ipv6_echo_freertos_cm33”开始。

这种情况经常发生,没有特定条件。

我从示例“frdmimxrt1186_flexspi_nor_polling_transfer_cm33”中导入文件;

board/hardware_init_Flash.c
drivers/fsl_flexspi.c
drivers/fsl_flexspi.h
source/appFlash/flexspi_nor_flash_ops.c
source/appFlash/flexspi_nor_polling_transfer.c


board/app.h// 这包含 app.h

source/lwip_ipv4_ipv6_echo_freertos.c // 这包含两个函数调用:

int main(void)
{
BOARD_InitHardware();
BOARD_InitHardware_Flash();

main_Flash();


void BOARD_InitHardware_Flash(void)
{
BOARD_CommonSetting();
// BOARD_ConfigMPU(); // bord.c= identisch mit Lwip prj
// BOARD_InitBootPins(); // pin_mux.c""
BOARD_InitFLASHPins();
// BOARD_InitBootClocks(); // clock_config.c""
// BOARD_InitDebugConsole(); // board.c""
}

int main_Flash(void)
{
uint32_t i = 0;
status_t status;
uint8_t vendorID = 0;

// BOARD_InitHardware_Flash();

...

返回 1;
/*
当(1)
{
}
*/

}


我想就是这样了。

提前谢谢您。

格尔德

Re: SDK example flash and LWIP hard-fault

@GerdMartin

请问您能否详细说明一下您是如何将这两个 SDK 示例结合起来的?
做了哪些改动?

你以哪个例子作为出发点?

您目前使用的是哪个SDK版本?

另外,您提到在执行 FLEXSPI_SoftwareReset(base) 后最终会发生硬故障。每次调用该函数时都会发生这种情况,还是只在特定条件下才会发生?

此致,
巴勃罗

Re: SDK example flash and LWIP hard-fault

嗨,Pablo,我想知道你是否了解我的问题。

非常感谢

格尔德

Re: SDK example flash and LWIP hard-fault

您好,我有一个更新。我忘记从示例 flexspi 中复制文件夹 linkscript 了。现在,我遇到了另一个硬故障初始化 lwip,但 flexspi 初始化工作正常。

格尔德


Re: SDK example flash and LWIP hard-fault您好,我用 SDK 中的另一个示例 (lwip_dhcp) 和 flexSpi 进行了测试,但我仍然遇到了随机硬故障。所以,我的项目遇到了问题。如果还有其他方法可以将大约 1 KB 的数据存储到闪存中,请告诉我。
非常感谢格尔德
Re: SDK example flash and LWIP hard-fault

@GerdMartin

我成功重现了该行为,经过一些测试后,我观察到以下情况:

在你合并的前两个示例中,flexspi_nor_polling_transfer_cm33 会擦除和写入内存区域。默认情况下,此示例使用的区域是组合项目图像的一部分。

我们可以计算出示例访问的扇区。在这个例子中,使用了扇区 20,扇区大小为 4k。

因此,FlexSPI 示例修改了以下地址:

20 × 4k + FlexSPI2_AMBA_BASE = 0x4014000

如果我们检查调用 main_FLASH() 前后的内存内容,可以看到项目映像的一部分被覆盖了。

Pablo_Ramos_0-1787777815010.pngPablo_Ramos_0-1787777815010.pngPablo_Ramos_0-1787777815010.pngPablo_Ramos_0-1787777815010.png

Pablo_Ramos_1-1787777823697.pngPablo_Ramos_1-1787777823697.pngPablo_Ramos_1-1787777823697.pngPablo_Ramos_1-1787777823697.png

能否修改 FlexSPI 示例使用的内存区域,使其不与项目映像重叠?

做出此项更改后,问题是否仍然存在?

此致,
巴勃罗

Re: SDK example flash and LWIP hard-fault谢谢,就这些了。我已将 EXAMPLE_SECTOR 的定义从 20 修改为一个值,但结果偏移量在我的代码中并不存在。现在,我可以继续了。
格尔德
タグ(1)
評価なし
バージョン履歴
最終更新日:
3 週間前
更新者: