搜索
bottom↓
回复: 71

最悲伤的事情发生了:程序写完了,单片机装不下

  [复制链接]

出0入0汤圆

发表于 2015-10-17 13:26:45 | 显示全部楼层 |阅读模式
mega8A,Flash容量8K,编译提示超出3.8K,超过自身容量的31.8%,还有救吗!

程序对实时性要求很高,不能再进行优化,这是逼我换单片机了!


本帖子中包含更多资源

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

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

发表于 2015-10-17 13:31:36 | 显示全部楼层
11.8K,能做很多事情了,不换的话,只能在代码上下功夫了

出0入0汤圆

发表于 2015-10-17 13:34:20 | 显示全部楼层
用的什么编绎器,换到atmel studio

出0入0汤圆

发表于 2015-10-17 13:37:14 | 显示全部楼层
如果程序里面有用到sprintf这样的库函数,试试去掉,会有奇效!!

出0入0汤圆

发表于 2015-10-17 13:39:58 | 显示全部楼层
超那么多,还是换吧。3%倒还是可以优化试试

出0入0汤圆

发表于 2015-10-17 13:41:13 | 显示全部楼层
看到BLDC了

出50入10汤圆

发表于 2015-10-17 13:50:38 | 显示全部楼层
用汇编!

出0入91汤圆

发表于 2015-10-17 13:53:15 | 显示全部楼层
ram不够 还是flash不够

出0入0汤圆

发表于 2015-10-17 14:02:14 | 显示全部楼层
换个mega16A,程序基本不用动吧。

出0入0汤圆

发表于 2015-10-17 14:25:37 来自手机 | 显示全部楼层
实时要求的那么高,一开始就选个大一点的不就行了。要是不愿意用汇编就只用换M16

出0入0汤圆

发表于 2015-10-17 14:39:13 | 显示全部楼层
绝逼用了printf,一个函数3kB

出0入0汤圆

发表于 2015-10-17 14:42:23 | 显示全部楼层
换328,168,哈哈

出0入0汤圆

发表于 2015-10-17 14:50:50 | 显示全部楼层
chaled 发表于 2015-10-17 13:37
如果程序里面有用到sprintf这样的库函数,试试去掉,会有奇效!!

没错,这种库太占空间了,去掉就少2~3kB

出0入0汤圆

发表于 2015-10-17 14:58:48 | 显示全部楼层
第一次看见超这么多。

出0入0汤圆

发表于 2015-10-17 15:32:32 | 显示全部楼层
超太多,最好换片子

出0入0汤圆

发表于 2015-10-17 15:34:37 | 显示全部楼层
程序好小巧哦,几K,我都不知道怎么写这么小的程序,我写了个单片机程序,1M FLASH 快装不下了,也正在优化。

出0入0汤圆

发表于 2015-10-17 15:52:33 | 显示全部楼层
果断换单片机了,即使现在优化了勉强装下了,后续一旦要维护升级,修改BUG等,到时再换产品的单片机就蛋疼了

出0入0汤圆

发表于 2015-10-17 16:05:24 | 显示全部楼层
brumby 发表于 2015-10-17 15:34
程序好小巧哦,几K,我都不知道怎么写这么小的程序,我写了个单片机程序,1M FLASH 快装不下了,也正在优化 ...

大哥你这也太搞笑了。。怎么这么大,不过我现在倒是没有遇到过程序太大的情况,都是先估计复杂程度然后再选择单片机,然后再优化的

出0入4汤圆

发表于 2015-10-17 16:29:05 | 显示全部楼层
不用库函数,全自己去编写,我写了一个月,最终程序才10K左右,用的M128,我倒是好想让代码量上去啊

出0入0汤圆

发表于 2015-10-17 16:30:19 | 显示全部楼层
还玩这种过时的芯片?

为什么不使用XMC1300?200K FLASH,妈妈再也不担心我的容量了。哈哈。。。

说正经的,干嘛不使用现代的M0单片机,比如STM32F030,051, 103, 301........,又便宜又好买又好用,关键是集成了几乎可以想象得到的所有外设?放弃AVR吧,这只是一个过时的传说了。

出0入0汤圆

发表于 2015-10-17 19:30:58 | 显示全部楼层
同意海绵宝宝的,曾经很有特色的8位增强型片子,与M0没法比了。价格也相当。

出0入0汤圆

发表于 2015-10-17 19:37:36 | 显示全部楼层
用mega168代替吧,有封装一样的,引脚不记得是不是兼容的了

出0入0汤圆

发表于 2015-10-17 19:41:16 | 显示全部楼层
优化一下

出0入0汤圆

发表于 2015-10-17 19:50:24 来自手机 | 显示全部楼层
优化太花时间了

出0入4汤圆

发表于 2015-10-17 20:03:42 | 显示全部楼层
brumby 发表于 2015-10-17 15:34
程序好小巧哦,几K,我都不知道怎么写这么小的程序,我写了个单片机程序,1M FLASH 快装不下了,也正在优化 ...

1M的单片机程序?咋会这么多?

出0入0汤圆

发表于 2015-10-17 20:06:33 | 显示全部楼层
说出来你们都不信,我用松翰的,2K的程序愣是被我压缩到1K

出0入0汤圆

发表于 2015-10-17 20:07:21 | 显示全部楼层
晕,你这程序一次写完吗?都不带调试的吗?
都写完了才发现超这么多

出0入0汤圆

发表于 2015-10-17 20:07:35 | 显示全部楼层
1M 的里面估计要用到很多表,很多变量,很多switch

出0入0汤圆

发表于 2015-10-17 20:41:16 | 显示全部楼层
楼主别用C啦  用M8 做电调的都是用汇编呀 。

出0入0汤圆

 楼主| 发表于 2015-10-17 20:57:53 | 显示全部楼层
RAMILE 发表于 2015-10-17 14:39
绝逼用了printf,一个函数3kB

没有printf,没有任何库函数,全部手工打造

出0入0汤圆

 楼主| 发表于 2015-10-17 20:58:50 | 显示全部楼层
mandylion2008 发表于 2015-10-17 16:30
还玩这种过时的芯片?

为什么不使用XMC1300?200K FLASH,妈妈再也不担心我的容量了。哈哈。。。

是要换了,很可能换成stm32,但是AVR的版本也会保留,毕竟成本摆在那里

出0入0汤圆

 楼主| 发表于 2015-10-17 21:00:03 | 显示全部楼层
tdh03z 发表于 2015-10-17 20:07
晕,你这程序一次写完吗?都不带调试的吗?
都写完了才发现超这么多

这次程序升级幅度比较大,一口气写完的,原来的程序可以运行

出0入0汤圆

 楼主| 发表于 2015-10-17 21:01:12 | 显示全部楼层
guowei681 发表于 2015-10-17 20:41
楼主别用C啦  用M8 做电调的都是用汇编呀 。

汇编虽好,然而移植起来却会叫人欲仙欲死,何况我这个还是测试版本,很可能换单片机

出0入0汤圆

发表于 2015-10-17 21:03:27 | 显示全部楼层
mandylion2008 发表于 2015-10-17 16:30
还玩这种过时的芯片?

为什么不使用XMC1300?200K FLASH,妈妈再也不担心我的容量了。哈哈。。。

为啥现在WIN10系统都出了,好多人还用XP呢?   AD15都出了,好多人还在用protel99。
其实是大家用惯了,而且对特定的芯片非常熟悉,如果换芯片可能又要花精力去学习

出0入0汤圆

发表于 2015-10-17 21:32:43 | 显示全部楼层
留声而过 发表于 2015-10-17 14:58
第一次看见超这么多。

朋友,东北大学的吗

出0入0汤圆

发表于 2015-10-17 21:51:44 | 显示全部楼层
mubei 发表于 2015-10-17 21:03
为啥现在WIN10系统都出了,好多人还用XP呢?   AD15都出了,好多人还在用protel99。
其实是大家用惯了, ...

这个类比可能不太正确喔。
现在ARM类芯片是大趋势,以后用8位的单片机会越来越难买,如果不及时跟上发展的脚步,慢慢地就会和现在的一些老工程师一样,排斥新的东西,抱着原有的东西不放,心态就老了。
ARM芯片会在相当长的时间内作为主流,现在32bit的M0可能比8bit的还要便宜,但功能完全不可同日而语。
世界大势,浩浩汤汤。。。

出0入0汤圆

发表于 2015-10-17 22:18:34 | 显示全部楼层
换168吧,改不了多少东西的

出0入0汤圆

发表于 2015-10-17 22:28:32 | 显示全部楼层
mandylion2008 发表于 2015-10-17 21:51
这个类比可能不太正确喔。
现在ARM类芯片是大趋势,以后用8位的单片机会越来越难买,如果不及时跟上发展 ...

其实我也觉得学习使用最新技术的芯片对电工来说很有必要。
最新32位处理器不只性能强了很多,外设更加丰富,ROM,RAM资源也是随便挥霍,而且像XMC这种最新系列产品的加密性能更是改进了很多。

出0入0汤圆

发表于 2015-10-17 23:04:15 | 显示全部楼层
本帖最后由 gy54321 于 2015-10-17 23:06 编辑
mandylion2008 发表于 2015-10-17 16:30
还玩这种过时的芯片?

为什么不使用XMC1300?200K FLASH,妈妈再也不担心我的容量了。哈哈。。。


我也觉得说得很在理。
之前用的C8051F单片机
现在全改用STM32系列。   RAM , FLASH 基本不用考虑。
之前定个变量,还得考量一下是用BIT CHAR, 用是INT还得估计估计。
现在基本什么变量都可以设成全局变量, 省下编程的时间真是不少!

出0入0汤圆

发表于 2015-10-18 04:25:52 来自手机 | 显示全部楼层
用 lgt 的328兼容芯片,又便宜,又兼容

出0入0汤圆

发表于 2015-10-18 06:03:14 | 显示全部楼层
你不把工程贴上啦。真是爱莫能助啊。

出0入0汤圆

发表于 2015-10-18 08:35:06 | 显示全部楼层
本帖最后由 mandylion2008 于 2015-10-18 08:47 编辑

个人觉得现在单片机已经不是原来的玩法了,硬件根本就不值钱,值钱的是特定的算法,这个才是单片机技术最本质的价值所在,玩的是软件才对,软件才是可大可小的东西。
一片M0的单片机几乎什么功能都有,但它的价格却和一片功率MOSFET差不多的价钱,甚至还不如一片开关稳压IC.
现在比的是如何快速实现想法,尽快推向市场,如果还在为了一个字节苦苦优化,甚至为了省下几个字节而庆幸不已,那只能是看着人家笑嘻嘻的数钱了。

现在国外的单片机的价格基本可以做到完全无视国产货,再说了,凡是过分讲价格的,又有什么好东西!

出0入0汤圆

发表于 2015-10-18 10:42:40 | 显示全部楼层
还是换硬件好,即便优化代码,装进去了,也不能再继续扩展功能了。压缩代码的时间很浪费,不值得。
果断换硬件。

出0入0汤圆

发表于 2015-10-18 10:45:20 | 显示全部楼层
AVR还有这么多人在使用啊

出0入0汤圆

发表于 2015-10-18 11:09:22 | 显示全部楼层
部分汇编化,楼上提到的printf非常可能。

出0入0汤圆

发表于 2015-10-18 11:21:56 | 显示全部楼层
楼主好像是编无刷电机驱动吧,我用BLheli代码,只有5.4K大小,当然删掉了一些功能,BLheli原始代码编译出来7.8K左右,功能也比较多,楼主可以掂量下

出0入0汤圆

发表于 2015-10-18 11:48:41 | 显示全部楼层
本帖最后由 mandylion2008 于 2015-10-18 11:58 编辑
kingway00 发表于 2015-10-18 11:21
楼主好像是编无刷电机驱动吧,我用BLheli代码,只有5.4K大小,当然删掉了一些功能,BLheli原始代 ...


我以前一直用C语言在C8051F330上写无感方波电调程序,和好硬天行者的功能差不多,编译后不到2K.
后来的高速无感FOC也是全用的C语言,用汇编打基础是必须的,可汇编不是优化的唯一选项,如果用汇编做产品真的OUT了,用个带浮点的STM32F301,比得上用汇编苦苦调试一个月,系统一复杂,估计老板都看不过去了,说什么学习ARM的汇编必要性,我认为这是赤果果的欺骗,顶多看看启动代码,但这个很少用到,不能为了这个原因耽误了更多的事情。搞技术就是为了赚钱,人家用C在贵一点的芯片上写,抢到机会赚到钱,而用汇编还在那里磨啊磨,做出来了还有机会吗?可靠性又如何呢?人家车用电机控制器都指定使用C语言就是为了好审查。
一般人用AVR的原因,很大的原因是老外写的开源是用的AVR.

出0入0汤圆

 楼主| 发表于 2015-10-18 13:08:01 | 显示全部楼层
kingway00 发表于 2015-10-18 11:21
楼主好像是编无刷电机驱动吧,我用BLheli代码,只有5.4K大小,当然删掉了一些功能,BLheli原始代 ...

BLheli功能算是比较全的,不过汇编搞起来效率虽高,开发效率确实极低的。

目前我推崇先C开发,等产品稳定可靠后,再考虑汇编优化。

出0入0汤圆

发表于 2015-10-18 18:39:39 | 显示全部楼层
haha ,,,你这是四轴吧,,,在某个群里看到你发了。。。

世界好小。

出0入0汤圆

 楼主| 发表于 2015-10-18 18:50:53 | 显示全部楼层
沉默胜过白金 发表于 2015-10-18 18:39
haha ,,,你这是四轴吧,,,在某个群里看到你发了。。。

世界好小。 ...

哈哈,我也觉得你这个头像很熟悉

出0入0汤圆

发表于 2015-10-18 19:52:01 来自手机 | 显示全部楼层
jamesdeep 发表于 2015-10-18 18:50
哈哈,我也觉得你这个头像很熟悉

那个群。我也关注了很多四轴群。

出0入0汤圆

发表于 2015-10-18 20:25:19 | 显示全部楼层
可以考虑编译加  -O2 编译选项,还可以搞搞 -O3,但是一般不太推荐O3优化

出0入0汤圆

发表于 2015-10-18 22:09:53 | 显示全部楼层
发现编写界面程序很占空间。
碰到过类似的问题

出0入0汤圆

发表于 2015-10-18 22:29:25 来自手机 | 显示全部楼层
brumby 发表于 2015-10-17 15:34
程序好小巧哦,几K,我都不知道怎么写这么小的程序,我写了个单片机程序,1M FLASH 快装不下了,也正在优化 ...

是不是又是字库,又是图片,还装了个C E系统。要是用汇编就牛了。

出0入0汤圆

发表于 2015-10-19 07:55:58 | 显示全部楼层
换MCU把,这方法最好

出0入0汤圆

发表于 2015-10-19 08:31:43 | 显示全部楼层
换16k, 除非COST非常严格

出0入0汤圆

发表于 2015-10-19 09:54:29 | 显示全部楼层
首先,你得告诉大家,你用的是什么编译器,使用了哪个优化等级?然后,你得将你的代码贴出来,看看是怎么写的,大家才知道有没有办法可以优化。
不过我可以断定可以优化到写得下,甚至可能你都没有开优化,看着像是GCC的编译器。不可能需要写这么大的东西,当时选型的时候只选一个只有8K Flash的MCU。

出0入0汤圆

发表于 2015-10-25 20:56:29 来自手机 | 显示全部楼层
cos 发表于 2015-10-18 22:29
是不是又是字库,又是图片,还装了个C E系统。要是用汇编就牛了。

没字库,没图片,没系统,有汇编,有表格:-(,我以前写上位机软件的:-[

出0入0汤圆

发表于 2015-10-25 22:32:06 | 显示全部楼层
表格放到 EEPROM

出0入0汤圆

发表于 2015-10-25 22:47:24 | 显示全部楼层
换换,汇编语言

出0入76汤圆

发表于 2015-10-25 23:19:49 | 显示全部楼层
是用的GCC,还是IAR?

建议使用IAR,开最高优化。

出0入0汤圆

发表于 2015-10-26 12:45:50 | 显示全部楼层
优化代码,去掉那些乱七八糟是设置,专机专用。

出0入0汤圆

发表于 2015-10-26 13:11:43 | 显示全部楼层
MEGA168基本啥也不用动。

出0入0汤圆

发表于 2015-11-4 11:33:20 | 显示全部楼层
还是尽量优化吧,不然单是代码移植就够头疼一段时间的

出130入20汤圆

发表于 2015-11-4 11:57:46 | 显示全部楼层
88 168 328都兼容的啊,直接换168好了,贵不了不少

出0入0汤圆

发表于 2015-11-4 11:58:52 | 显示全部楼层
rom 发表于 2015-10-17 14:42
换328,168,哈哈

正解!!
封装都一样,直接换上

出0入0汤圆

 楼主| 发表于 2015-11-4 12:01:00 | 显示全部楼层
shuiluo2 发表于 2015-11-4 11:57
88 168 328都兼容的啊,直接换168好了,贵不了不少

还是换单片机了,8位运算能力实在是不行,一条16位无符号整型除法26us,没办法接受

出130入20汤圆

发表于 2015-11-4 12:02:46 | 显示全部楼层
jamesdeep 发表于 2015-11-4 12:01
还是换单片机了,8位运算能力实在是不行,一条16位无符号整型除法26us,没办法接受 ...

那你真是蛋疼,还要移植程序,如果运算能力要求高,早就该用其他片子了歪。

出0入0汤圆

发表于 2015-11-4 12:17:56 | 显示全部楼层
mandylion2008 发表于 2015-10-18 11:48
我以前一直用C语言在C8051F330上写无感方波电调程序,和好硬天行者的功能差不多,编译后不到2K.
后来的高 ...

说的很有道理、、、

出0入0汤圆

发表于 2015-11-4 12:22:25 | 显示全部楼层
想都不用想,果断换单片机

出0入0汤圆

发表于 2015-11-4 12:27:19 | 显示全部楼层
ST32好像好多都是M级的FLASH了

出0入4汤圆

发表于 2015-11-4 14:03:00 | 显示全部楼层
看到楼主发生这样悲伤的事情,我更加坚定了我的原则:一开始调试的时候,我会选择容量较大的单片机,其他元器件也是同理,留多一点余量,到最后来一波costdown,选容量适合的同系列单片机几乎不用改代码
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-3-29 21:54

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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