历史上的今天
返回首页

历史上的今天

今天是:2025年04月14日(星期一)

正在发生

2020年04月14日 | STM8L编程问题之segment .text size overflow

2020-04-14 来源:eefocus

#error clnk Debugsolar_charger.lkf:1 segment .text size overflow,提示代码段溢出,此时因为使用STM8L的固件库,造成一些不必要的函数被编译,可以尝试注释掉一些不必要的函数;如果已经没有可以注释的函数,可以尝试在project setting中,选择代码优化,压缩代码。

 

遇到最多的莫过于使用库的时候,提示代码超过内存范围。


代码量并不多,但是编译器却明明白白的提示代码超过内存范围,为什么会这样?


主要原因,在于库文件中为了做好错误处理,中间添加了assert代码。同时也由于为了将所有功能函数都提供出来,中间有很多用不到的函数,但是在STM8L中,这些没有用的函数,虽然最后没有连接进执行代码中,但是在生成的.o文件中是有的,由于CxSTM8是在连接前判断.o的总和大小,而不是连接后的判断可执行代码的大小,因此虽然我们的代码很少,但是由于库中没有用到的代码和用于错误处理的代码过多,造成了连接前的.o文件总和大小超过范围,而造成编译器不进行连接。(当然也有可能是进行了连接,但是因为连接后生成的可执行文件大小超过了要求,而没有生成可执行文件。但是,根据当注释掉一些没有用的函数后,连接成功,因此判断是没有进行连接)

 

针对于这种情况,不用库函数,势必会造成开发效率的降低。用库函数,又会造成生成的代码超过内存大小。这个时候,折中的办法是,依然使用库函数,但是:

将库函数中没有用到的函数注释掉;

将库函数中一些不必要的assert语句注释掉;

将一些简单的库函数,做成宏定义直接调用;

避免不必要的代码出现,减少冗余代码。(对于assert处代码,要小心处理)

推荐阅读

史海拾趣

EiKO Global LLC公司的发展小趣事

为了进一步扩大市场份额,EiKO开始实施全球化战略。公司在美国、加拿大、欧洲和亚太地区设立了办事处,以便更好地服务当地客户。同时,EiKO还积极参加国际照明展会和论坛,与全球同行交流经验和技术,不断提升自身的竞争力。

在全球化布局的过程中,EiKO也面临着各种挑战和困难。然而,公司始终坚持以客户为中心的服务理念,通过不断优化产品和服务质量,赢得了越来越多客户的信赖和支持。

ETRI公司的发展小趣事

自1976年成立以来,ETRI一直致力于打造高效便捷的智慧产业生态圈。在汽车制造、轨道交通等行业中,电气和机械设备是必不可少的。ETRI凭借其卓越的技术实力,为这些行业提供了在各种恶劣环境下都能保持稳定性的产品。无论是在电机马达、编码器、传感器,还是在泵、阀、流量计以及温度计压力表等广泛使用的设备中,ETRI都展现了其行业领先的解决方案。

芯茂微电子公司的发展小趣事

芯茂微电子始终坚持以创新驱动发展,不断投入研发资源,推动技术创新和产品升级。同时,公司积极寻求与国内外知名企业和研究机构的合作,共同开展技术研发和市场拓展。通过与合作伙伴的紧密合作,芯茂微电子在集成电路设计、制造工艺、封装测试等方面取得了重要进展,进一步提升了公司的核心竞争力和市场地位。

DLG Hanbit公司的发展小趣事

随着技术的不断进步和市场需求的增长,DLG Hanbit公司意识到技术创新是保持竞争力的关键。公司加大了对研发的投入,引进了一批高端人才,并建立了完善的研发体系。经过几年的努力,公司成功开发出了一系列具有自主知识产权的半导体产品,如高性能的处理器、存储器等。这些产品凭借卓越的性能和稳定的品质,在市场上赢得了良好的口碑,公司也逐渐拓展了市场份额。

Black Box Corporation公司的发展小趣事

在数字化时代,通信技术的更新换代速度极快。为了保持竞争优势,Black Box不断投入研发,推出了一系列创新产品和技术。例如,公司研发了一款智能网络管理平台,能够实时监控网络状态并进行故障预警。这一技术创新大大提高了网络的稳定性和安全性,赢得了客户的广泛好评。

Control Sciences Inc公司的发展小趣事

Control Sciences Inc深知人才是企业发展的核心。因此,公司一直注重人才培养和引进。公司不仅设立了专门的研发机构,吸引了大批优秀的科研人才,还定期组织员工培训和交流活动,提高团队的整体素质。这些措施使得Control Sciences Inc的团队越来越强大,为公司的发展提供了有力的人才保障。

问答坊 | AI 解惑

阿牛哥系列故事大嘴歪评世界杯

阿牛哥冒着七月的艳阳酷暑,晚上听完国际广播电台的新闻,西瓜荔枝,要看世界杯球赛了。晚上的这场要看,凌晨的那场要听。电视电脑收音机都需要,就是不能影响白天的工作。先说说世界杯比赛,不能在家里看,太影响家人.去哥们马六家看;啤酒不喝 ...…

查看全部问答>

又是bootload的问题---VIVI的工程编译

本人下载了VIVI,现在疑问,它是在什么IDE编译的。我系统是XP的,我用ADS或者MDK也可以编译它吧。 我的目的是想自己编译出boot 的bin文件下载到nandflash中去。 请高手指点一二,小弟将不胜感激…

查看全部问答>

PC104设备在纯DOS下跑程序的问题,虚拟软驱引导的纯DOS和实际安装的DOS有区别不?

如题。 现在程序跑在虚拟软驱引导的纯DOS里面,2000里面用bc31写的程序在2000下跑很流畅,但是到DOS下却非常卡。 想在DOS里面再编译,链接模式选small能通过,但是程序一跑就死,选large能通过,一跑连画面都没有,选其他linker都不成功。何解? ...…

查看全部问答>

wince 是否支持"微软雅黑"字体?

wince 是否支持\"微软雅黑\"字体? 看到linux下显示的字体比较漂亮,font文件下看到msyh.ttf,也就是雅黑字体了,EVC下显示的字效果比较一般,要是wince支持msyh.ttf的话,应该怎样添加呢? …

查看全部问答>

求助:关于I2C Config

I2C_Config IIC_Configt ={      0,//主模式      0,      (20-5),//scl low time      (20-5),      1,      0,  ...…

查看全部问答>

晶振问题

请各位帮忙分析一下: 晶振工作不正常,第一次不起振,然后用烙铁点了一下,工作正常了一会,然后又不振了,再用烙铁点一下,又能正常工作,挂上仿真器,只能正常工作一会,如此反复。。。 请大家帮忙分析下。先谢了…

查看全部问答>

MSP430FG461X系列的20位地址指针在C语言中如何实现?

我把一个20位的地址0x10000,赋值给一个指针变量时,总是提示超出了0~0xFFFF的范围。 在汇编中这是可以做到的,因为MSP430X提供了MOVA等带A的指令,且工作寄存器都是20位的,可以用于20位的地址传输。就是不知道C语言中怎么实现。 不知是不是有 ...…

查看全部问答>

请教定时器中断的问题(一直都查不到资料,麻烦高手指点)

问题1:一般在主函数中装定时器初值,有必要吗?我好像试了,不装也能正常运行。 问题2:如果在定时器1中关闭了定时器0,用TR0=1再次打开定时器0时,需要重新装定时器0的初值吗?还是TR0=1直接就进入定时器0的中断函数从头开始执行。我试过两次不 ...…

查看全部问答>

对于FPGA的引脚分配大家是怎么做的呢?

FPGA的IO量很大,如果不是特殊用途的话,很多IO都基本是一致的,在FPGA与存储器等等外围芯片连接的时候,为了方便布线,会对IO管脚的分配进行调整,这种调整大家是怎么做的呢?大家用的是啥PCB工具呢?…

查看全部问答>

请您帮我看看这个电路中的两个疑问 谢谢

大家有谁知道发射级的电感作用是什么?另外,还请高手赐教一下这个调幅电路的放大倍数应该是多少,我是新手  这方面还请大家多多给予指导帮助,谢谢您。…

查看全部问答>