极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 25861|回复: 14

求助大神帮忙简化SD卡的库,程序写不下了,能否缩小程序体积呢

[复制链接]
发表于 2012-10-26 00:03:28 | 显示全部楼层 |阅读模式
RT,最近弄了好几个传感器在Arduino UNO上,编译的时候已经提示程序超大了,现在想精简扩展库来节省些空间好写有用的程序,不知道想法现不现实。

附件中是一个SD卡读写库,为什么要用这个库呢,因为ArduinoIDE自带的库有个致命缺陷,就是SD卡初始化成功后,中途将卡拔下来,他居然还能继续成功的写入数据,太神奇了。这个SDFat库就可以返回错误。但是一个简单的写卡例子就要占去15000字节之巨,实在是太浪费时间了。

我只需要写卡的部分,不读文件,写的文件不需要日期支持,不使用目录,不需要删除文件,不用重命名文件。简单说就是我只要按名字写文件(不存在就创建)的功能,写失败能返回错误就行,其他功能一律都不要,不知道这样能否将库简化一些呢?至少减少1/3的字节也行啊,我好能有空间写其他的程序。

希望高手帮忙解决一下吧,跪求了………………

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

 楼主| 发表于 2012-10-26 17:32:34 | 显示全部楼层
本帖最后由 shenhaiyu 于 2012-10-26 17:38 编辑

呃,没人能搞定吗?还是说我没使用的变量及函数已经被优化掉了,我编译出来的大小已经是最优的了?


试验了一下,貌似是我对C语言不熟悉,看来没使用的函数和变量都不会被编译的,那我如何才能减小程序体积呢……
回复 支持 反对

使用道具 举报

发表于 2012-10-26 18:44:22 | 显示全部楼层
gcc优化的挺好
可以试试加空间优化参数编译
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-10-26 19:05:06 | 显示全部楼层
test01 发表于 2012-10-26 18:44
gcc优化的挺好
可以试试加空间优化参数编译



差了600多字节,唉,郁闷啊

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

发表于 2013-10-11 12:35:57 | 显示全部楼层
可查看SDFAT 里面的 cpp ,去掉不用的 函数 。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-10-11 13:39:14 | 显示全部楼层
yyy_zc 发表于 2013-10-11 12:35
可查看SDFAT 里面的 cpp ,去掉不用的 函数 。

尝试过,没用到的函数不参加编译,删掉也不能减小体积……
回复 支持 反对

使用道具 举报

发表于 2013-10-12 23:07:21 | 显示全部楼层
哇 一年了还在坚持呀。看样子bootload 也没使用
可能基本的你都尝试过了
1.浮点数改为整数.
2.减少内存分配,少一点调试用的输出内容  如 println("bala bala...")
3.其它模块能减少不
4.看看 cook book 中的减少size 的方法
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-10-14 23:38:00 | 显示全部楼层
yyy_zc 发表于 2013-10-12 23:07
哇 一年了还在坚持呀。看样子bootload 也没使用
可能基本的你都尝试过了
1.浮点数改为整数.

嗯,基本上你说过的都尝试过。暂时的解决办法是把某些库中的内容用汇编自己重新……就是太让人崩溃了
回复 支持 反对

使用道具 举报

发表于 2013-10-15 13:10:18 | 显示全部楼层
EEPROM (Bytes): 有1k ,有些 数据 能否先装在哪里 .
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-10-15 19:44:50 | 显示全部楼层
yyy_zc 发表于 2013-10-15 13:10
EEPROM (Bytes): 有1k ,有些 数据 能否先装在哪里 .

那读写EEPROM的程序岂不是还要占去很多空间
回复 支持 反对

使用道具 举报

发表于 2013-10-15 20:48:19 | 显示全部楼层
本帖最后由 histamine 于 2013-10-15 20:50 编辑

LZ可以试试这个库,编译时可以去掉目录、读取、seek之类的功能,从而缩小体积

Petit FAT File System Module
http://elm-chan.org/fsw/ff/00index_p.html

当然用起来没arduino库那么方便
回复 支持 反对

使用道具 举报

发表于 2013-10-15 21:08:57 | 显示全部楼层
SDfat 只读取不会太大
回复 支持 反对

使用道具 举报

发表于 2013-10-15 21:38:23 | 显示全部楼层
1.http://playground.arduino.cc//Code/SDCARD
这个是无库的
2.换atmega64  64K
3.把你的代码拿出来大家具体分析
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-10-16 00:33:39 | 显示全部楼层
histamine 发表于 2013-10-15 20:48
LZ可以试试这个库,编译时可以去掉目录、读取、seek之类的功能,从而缩小体积

Petit FAT File System Mo ...

好的,我试试,非常感谢,不知道是否支持8GB的卡
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-10-16 00:35:56 | 显示全部楼层
yyy_zc 发表于 2013-10-15 21:38
1.http://playground.arduino.cc//Code/SDCARD
这个是无库的
2.换atmega64  64K

呃,好吧,其实就相当于把库直接写到代码里而已……
回复 支持 反对

使用道具 举报

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

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-7 23:58 , Processed in 0.042759 second(s), 22 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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