这个链接失败的实际原因从这条信息里看起来不是很明显。COMBANK class也和bank0 class是部分重叠的。因为链接的需要,COMBANK可能是会宣称不匹配的,但是实际上你可能并没有在COMBANK class上超过数据大小的限制,这时你可以通过控制BANK0 class里的数据量来解决这个问题。
BANK0是被用来存放所有的局部变量、函数参数,并且也是被用来存放那些没有明确分配到其他bank去的全局变量的。解决这个问题最简单的办法是,检查一下你的全局变量并确定哪些全局变量是可以移动到其他bank去的,然后给这些全局变量的定义前加上"bank1"、"bank2"或"bank3"限定符以分配到其他区域。如果你已经做了这些还不能解决的话,那么你现在需要看一看是否可以降低RAM的 局部变量/函数参数 消耗。
参考map文件的call-graph section并且关注那些标有(*)的函数,这些函数是贡献最多 局部变量/函数参数 消耗的路径。 |