查看: 2642|回复: 1

[CodeWarrior] 【转】Codewarrior下开发Kinetis使用ewl_noio库以减少代码空间

[复制链接]

该用户从未签到

14

主题

113

帖子

0

中级会员

Rank: 3Rank: 3

积分
259
最后登录
1970-1-1
发表于 2015-5-13 13:45:36 | 显示全部楼层 |阅读模式
原作者:jicheng0622      
在一些对成本敏感且控制功能简单的应用领域,小Flash空间的芯片比较受欢迎,以前这部分都是8位机的地盘,而现在随着ARM产品越来越丰富,低端产品的覆盖率也在增加,其也开始慢慢觊觎这部分市场了。飞思卡尔Kinetis系列中KL02和KE04就是其中比较有代表性的两款产品系列,这两个系列里有部分型号拥有最小8k Flash空间管脚数最少14或者16个SSOP封装,哎,ARM做到这份儿上不容易啊,呵呵。。。

    对一些小存储空间的MCU来说,每一个字节的空间都是宝贵的(粒粒皆辛苦啊),所以我们在使用小Flash空间开发时除了要对代码进行功能优化之外还要注意减少不必要的空间损耗,比如一些冗余的常数变量,用不到的API函数或者隐藏起来的一些自带函数库。今天我想说的就是在用Codewarrior10.x开发KL02或者KE04时如何去掉一个占空间的大户,即Debug I/O库(实际上就是一些printf和scanf之类的打印函数实现),这个Debug I/O我们在新建一个工程时是默认勾选的,如下图所示:

Codewarrior下开发Kinetis使用ewl_noio库以减少代码空间1.png

这个库我们大多数情况下是用不到的,但是在最后编译时其却包含在其中,所以我们在对KL02 8kflash型号的芯片随便编写几个底层驱动后再编译就会发现8k代码空间已经没剩下多少了,下图为我添加了部分工程后编译生成的bin格式文件的大小(注意Codewarrior下面,虽然其生成的文件都是.hex后缀,但是实际上里面具体的格式可能是S19或者是纯二进制数据,这个跟配置的输出类型有关系),可以看到已经耗掉7k多的代码空间了,有点束手束脚的感觉。

Codewarrior下开发Kinetis使用ewl_noio库以减少代码空间2.png

这时我们可以通过对该工程配置,去掉其新建工程时自带的Debug I/O库函数(默认为ewl库),选择ew_noio,即不使用Codewarrior自带Debug库函数。具体工程配置和再次编译后输出的bin格式文件大小如下图所示,可以看到使用ewl_noio库之后大概空闲出4k左右的代码空间出来,这对一共才有8k Flash的MCU来说多出一半可用的空间,已经非常可观了,这下子就可以游刃有余的继续增加功能代码了。

Codewarrior下开发Kinetis使用ewl_noio库以减少代码空间3.png

Codewarrior下开发Kinetis使用ewl_noio库以减少代码空间4.png

    飞思卡尔官方的代码包中的基于Codewarrior10.4的工程默认都是选择ewl库的,即使能了Debug I/O函数接口的,而这个库所占的空间对大多数Kinetis型号来说不算太大,但是对只有8k或者16k代码空间的MCU来说已经不能再这样浪费掉了,所以这就需要我们手动去修改默认库为ewl_noio,即屏蔽掉了Debug I/O相关的函数库以节省空间。此外,实际上如果我们打算新建工程的时候,也建议在最上面截图中的I/O Support选项选择No I/O,其实现的配置和手动修改成ewl_noio库是一样的。

我知道答案 目前已有1人回答
回复

使用道具 举报

  • TA的每日心情
    奋斗
    2016-12-22 09:09
  • 签到天数: 12 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    24

    主题

    446

    帖子

    0

    高级会员

    Rank: 4

    积分
    876
    最后登录
    2019-3-8
    发表于 2015-6-15 15:15:02 | 显示全部楼层
    楼主的这个做法是从哪学的,很实用
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-9-13 01:52 , Processed in 0.099077 second(s), 25 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表