硬汉嵌入式论坛

 找回密码
 立即注册
查看: 1064|回复: 5
收起左侧

求助,移植LevelX hardfault Cannot access Memory

[复制链接]

9

主题

50

回帖

77

积分

初级会员

积分
77
发表于 2022-5-5 17:22:23 | 显示全部楼层 |阅读模式
本帖最后由 EmbeddedXGJ 于 2022-5-5 17:42 编辑

程序用了RT-Thread。
移植LevelX,程序会进入hardfault。

image.png
通过RT-Thread打印的信息回溯找不出程序出问题的代码。

2c1b8304d82c9494d0ebdd5b2878d16.png

通过ST-Link调试,发现,出现Cannot access Memory程序就会进入hardfault。通过调试定位到出问题的代码:
    _lx_nor_flash_sector_write(&XM25Q128A, 1, wbuf);
    _lx_nor_flash_sector_read(&XM25Q128A, 1, rbuf);
通过调试发现上面两句代码单独执行其中一句都不会出问题,两句一起的时就会进hardfault。调试就会出现Cannot access Memory。
实在是搞不懂了,求助大佬能给些解决思路。

回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115661
QQ
发表于 2022-5-6 08:56:00 | 显示全部楼层
不加RTT,裸机能正常使用不
回复

使用道具 举报

9

主题

50

回帖

77

积分

初级会员

积分
77
 楼主| 发表于 2022-5-6 10:51:40 | 显示全部楼层
eric2013 发表于 2022-5-6 08:56
不加RTT,裸机能正常使用不

裸机下也进入了hardfault
回复

使用道具 举报

9

主题

50

回帖

77

积分

初级会员

积分
77
 楼主| 发表于 2022-5-6 11:01:28 | 显示全部楼层
哎哟,我醉了。 level_write.png level_read.png 没认真看他们读写接口的注释,原来每次读写的buffer大小都要512字节,奇葩
改成这样就可以了:
void LX_NOR_FLASH_ReadWrite_Test(void)
{
    uint8_t wbuf[512] = "http://www.optomedic.com";
    uint8_t rbuf[512] = {0};

    _lx_nor_flash_sector_write(&XM25Q128A, 1, wbuf);

    _lx_nor_flash_sector_read(&XM25Q128A, 1, rbuf);

    printf("lx read %s\r\n", rbuf);
}


回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115661
QQ
发表于 2022-5-7 00:52:42 | 显示全部楼层
EmbeddedXGJ 发表于 2022-5-6 11:01
哎哟,我醉了。没认真看他们读写接口的注释,原来每次读写的buffer大小都要512字节,奇葩
改成这样就可以 ...

现在加上RTT是否正常了。
回复

使用道具 举报

9

主题

50

回帖

77

积分

初级会员

积分
77
 楼主| 发表于 2022-5-7 09:55:00 | 显示全部楼层
eric2013 发表于 2022-5-7 00:52
现在加上RTT是否正常了。

正常
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-5-10 10:51 , Processed in 0.451679 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表