嵌入式技术论坛
直播中

陈勇

8年用户 1341经验值
私信 关注
[问答]

有大佬能告知scons的编译顺序怎么调整吗?

项目使用的是GD32F450的芯片,由于GD的flash分为两部分,代码放在前面部分的运行是零等待,后面的代码运行会有延迟。现在需要把系统部分的代码和驱动都放在前面编译放在前部分零等待的flash上,特别是驱动相关的,实测串口会出现偶尔的丢包,把固件大小压下来让程序只在前面的零等待flash跑就不会出现丢包了。但是官方的sconstruct一直都是驱动放在最后面编译,找了很久都没有找到相关资料,有大佬能告知scons的编译顺序怎么调整吗
2.jpg
3.jpg


回帖(7)

王鑫

2023-4-7 15:38:08
你这个要求,需要手动编写链接脚本来指定链接位置才行,光靠顺序不够用。
最好分成2个不同的SECTIONS
举报

陈勇

2023-4-7 15:38:17
请问下只需要修改SConstruct吗,将系统驱动等和应用区分成两个sections,先链接系统驱动那边吗?对python脚本不太熟悉
举报

王鑫

2023-4-7 15:38:23
链接脚本是link.lds这个文件,和python,scons没有关系。
即使链接时输入文件的顺序是乱的,也会按链接脚本的要求来的,所以scons脚本那边可以不用修改的。
举报

陈勇

2023-4-7 15:38:38
2.jpg
我把特定的文件放在最前面,最后生成的map能看到是在最前面的链接的,但是生成的bin文件会大很多,请问下会是什么问题呢
举报

王鑫

2023-4-7 15:38:43
可以对比map文件看差异哦
举报

陈勇

2023-4-7 15:38:51
2.jpg
指定链接的文件都是一样的,比较出来是一些GCC的库函数大小不一样,把所有的驱动放到最前面链接,大小居然大了70多k,生成的二进制文件有很多的00
举报

陈勇

2023-4-7 15:38:56
已解决,去掉KEEP即可
举报

更多回帖

发帖
×
20
完善资料,
赚取积分