CY8C4126AXI 在编译时报错Build error: L6985E: 详情如下图所示

公告

大中华汽车电子生态圈社区并入开发者社区- 更多资讯点击此

Tip / 登入 to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
kun120510
Level 1
Level 1
First reply posted First question asked Welcome!

CY8C4126AXI 在编译时报错 Build error: L6985E: 详情如下图所示问题详情 2021-07-14.png

0 点赞
1 解答
Roy_Liu
Moderator
Moderator
Moderator
5 comments on KBA First comment on KBA 10 questions asked

是的 ,EEPROM 会造成此问题,参考一下EmEEPROM component datasheet.

Creator里的EePROM code example 针对MDK/GCC 和IAR 编译器是有宏定义的:

#if defined (__ICCARM__)
#pragma data_alignment = CY_FLASH_SIZEOF_ROW
const uint8_t Em_EEPROM_em_EepromStorage[Em_EEPROM_PHYSICAL_SIZE] = {0u};
#else
const uint8_t Em_EEPROM_em_EepromStorage[Em_EEPROM_PHYSICAL_SIZE]
__ALIGNED(CY_FLASH_SIZEOF_ROW) = {0u};
#endif /* defined (__ICCARM__) */

Roy Liu

在原帖中查看解决方案

0 点赞
4 回复数
LinglingG_46
Moderator
Moderator
Moderator
500 solutions authored 1000 replies posted 10 questions asked

1: 你的这个错误是在什么情况下面发生的?

2: 你在project,build-setting里面选择的编译器是什么?

3: 从提示来看这是一个内存分配的错误,你可以把你的工程打包放在这里,我看看我这里是否可以复现问题。

4:有一些资料可以参考,你可以看一下,是否对你有帮助:

https://www.21ic.com/app/mcu/201812/778980.htm

0 点赞
kun120510
Level 1
Level 1
First reply posted First question asked Welcome!

1:错误发生是在把编译器由IAR换成MDK时发生的。我这边有两个工程,将编译器由IAR换成MDK时,一个工程报错,一个工程正常;经查看报错工程比正常的工程多用了EEPROM,不知EEPROM是否会造成此问题的出现。

2、project,build-setting里面选择的编译器是MDK

 

 

0 点赞
Roy_Liu
Moderator
Moderator
Moderator
5 comments on KBA First comment on KBA 10 questions asked

是的 ,EEPROM 会造成此问题,参考一下EmEEPROM component datasheet.

Creator里的EePROM code example 针对MDK/GCC 和IAR 编译器是有宏定义的:

#if defined (__ICCARM__)
#pragma data_alignment = CY_FLASH_SIZEOF_ROW
const uint8_t Em_EEPROM_em_EepromStorage[Em_EEPROM_PHYSICAL_SIZE] = {0u};
#else
const uint8_t Em_EEPROM_em_EepromStorage[Em_EEPROM_PHYSICAL_SIZE]
__ALIGNED(CY_FLASH_SIZEOF_ROW) = {0u};
#endif /* defined (__ICCARM__) */

Roy Liu
0 点赞
LinglingG_46
Moderator
Moderator
Moderator
500 solutions authored 1000 replies posted 10 questions asked

你说的从IAR换到MDK,按照我的理解IAR是个集成开发环境,MDK是个编译器。

你想表达的是什么呢?

你把有问题的工程的EEPROM的操作先注释掉,看是否还有问题?这样可以排除是由其它地方内存使用错误导致的。如果去掉了就没有问题,有下面两个解决方法供参考:

1:我第一次回复的链接的解决方法。

2:按照EEPROM的datasheet中的方法,把EEPROM放到你知道的合法的位置,然后再看是否有问题。

0 点赞