modustoolbox编译问题

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

cross mob
charles-weikeng
Level 3
Level 3
Distributor - Weikeng(GC)
50 sign-ins 10 likes given 10 replies posted

客户使用modustoolbox开发CY8C6245AZI-S3D72,在正常编译通过的工程下增加了全局变量数组的长度,结果编译报错,初步判断是RAM超了。通过对比发现 .bss的大小最大是25292,如附件描述,请帮忙确认根本原因和提供解决方案,谢谢!

0 Likes
1 Solution

您好,您可以查看下makefile文件中对于link文件指定的判断

Ida_Wang_0-1698833303286.png

所以在编译过程中实际使用的是dfu的一个link文件,并不是您上面所发的文件。您把这个地方改成上面发的link文件就可以编译通过了。

Ida_Wang_1-1698833584891.png

 

View solution in original post

9 Replies
charles-weikeng
Level 3
Level 3
Distributor - Weikeng(GC)
50 sign-ins 10 likes given 10 replies posted

编译1.png编译2.png编译3.png

0 Likes
Ida_Wang
Moderator
Moderator
Moderator
100 replies posted 25 solutions authored 10 likes received

您好,请提供一下link文件和未报错时的map文件,以及修改后完整的编译报错信息

0 Likes
lock attach
Attachments are accessible only for community members.
charles-weikeng
Level 3
Level 3
Distributor - Weikeng(GC)
50 sign-ins 10 likes given 10 replies posted
 
0 Likes
Ida_Wang
Moderator
Moderator
Moderator
100 replies posted 25 solutions authored 10 likes received

您好,原因确实是RAM超了,您可以查看下link文件中RAM的长度

Ida_Wang_0-1698818299636.png

有两种方法解决这个问题:

第一种:查看自己工程中的一些大的比较占内存的数组,如果是常量,建议定义成const类型(定义成const类型就会放在flash中),这样可以节省RAM空间

第二种:可以适当修改下M0和M4内存的大小,把M0的RAM空间改小一些,M4的RAM空间放大一些(M0的link文件中RAM的LENGTH适当改小)

建议第一种方法,因为第二中方法能挪给M4的内存也没有多少

0 Likes
charles-weikeng
Level 3
Level 3
Distributor - Weikeng(GC)
50 sign-ins 10 likes given 10 replies posted

我编译看到是.bss区域超了,就是存放未初始化或初始化为0的全局变量区域,如果我手动初始化也可以解决问题。另外这颗IC的RAM是256K,目前只用了28K,怎么超的。

0 Likes

您好,是否方便分享下报错的工程?或者把报错的详细信息贴一下

0 Likes
lock attach
Attachments are accessible only for community members.
charles-weikeng
Level 3
Level 3
Distributor - Weikeng(GC)
50 sign-ins 10 likes given 10 replies posted

您好,请查看附件,全局变量数组长度加长就会编译报错,另外全局变量没有常量,不方便使用const关键字,该芯片的RAM是256K,不应该会溢出,帮忙确认下如何解决该问题,谢谢!

报错信息:

make[1]: *** [../mtb_shared/core-make/release-v1.9.1/make/core/build.mk:529: D:/Work/custom_project/2023/TCL/Code_SWJK200003V03/application/TCL_CenControlor_App/build/CY8CPROTO-062S3-4343W/Debug/mtb-example-psoc6-empty-app.elf] Error 1
make: *** [../mtb_shared/core-make/release-v1.9.1/make/core/main.mk:434: secondstage_build] Error 2

0 Likes

您好,您可以查看下makefile文件中对于link文件指定的判断

Ida_Wang_0-1698833303286.png

所以在编译过程中实际使用的是dfu的一个link文件,并不是您上面所发的文件。您把这个地方改成上面发的link文件就可以编译通过了。

Ida_Wang_1-1698833584891.png

 

charles-weikeng
Level 3
Level 3
Distributor - Weikeng(GC)
50 sign-ins 10 likes given 10 replies posted

您好,通过修改makefile,解决RAM不够编译报错的问题,谢谢!

0 Likes