jamesdeep 发表于 2015-10-17 13:26:45

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

mega8A,Flash容量8K,编译提示超出3.8K,超过自身容量的31.8%,还有救吗!

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


xiaobendan 发表于 2015-10-17 13:31:36

11.8K,能做很多事情了,不换的话,只能在代码上下功夫了

efen 发表于 2015-10-17 13:34:20

用的什么编绎器,换到atmel studio

chaled 发表于 2015-10-17 13:37:14

如果程序里面有用到sprintf这样的库函数,试试去掉,会有奇效!!

Hhhhhhhh 发表于 2015-10-17 13:39:58

超那么多,还是换吧。3%倒还是可以优化试试

a136498491 发表于 2015-10-17 13:41:13

看到BLDC了

our2008 发表于 2015-10-17 13:50:38

用汇编!

ackyee 发表于 2015-10-17 13:53:15

ram不够 还是flash不够

Eastnorth 发表于 2015-10-17 14:02:14

换个mega16A,程序基本不用动吧。

yyj_sd 发表于 2015-10-17 14:25:37

实时要求的那么高,一开始就选个大一点的不就行了。要是不愿意用汇编就只用换M16

RAMILE 发表于 2015-10-17 14:39:13

绝逼用了printf,一个函数3kB

rom 发表于 2015-10-17 14:42:23

换328,168,哈哈

Earthman 发表于 2015-10-17 14:50:50

chaled 发表于 2015-10-17 13:37
如果程序里面有用到sprintf这样的库函数,试试去掉,会有奇效!!

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

留声而过 发表于 2015-10-17 14:58:48

第一次看见超这么多。

linread 发表于 2015-10-17 15:32:32

超太多,最好换片子

brumby 发表于 2015-10-17 15:34:37

程序好小巧哦,几K,我都不知道怎么写这么小的程序,我写了个单片机程序,1M FLASH 快装不下了,也正在优化。

大米饭 发表于 2015-10-17 15:52:33

果断换单片机了,即使现在优化了勉强装下了,后续一旦要维护升级,修改BUG等,到时再换产品的单片机就蛋疼了

木君之上 发表于 2015-10-17 16:05:24

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

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

ZL_electric 发表于 2015-10-17 16:29:05

不用库函数,全自己去编写,我写了一个月,最终程序才10K左右,用的M128,我倒是好想让代码量上去啊

mandylion2008 发表于 2015-10-17 16:30:19

还玩这种过时的芯片?

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

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

TANK99 发表于 2015-10-17 19:30:58

同意海绵宝宝的,曾经很有特色的8位增强型片子,与M0没法比了。价格也相当。

bangbangji 发表于 2015-10-17 19:37:36

用mega168代替吧,有封装一样的,引脚不记得是不是兼容的了

zhouqw1979 发表于 2015-10-17 19:41:16

优化一下

peterlzj 发表于 2015-10-17 19:50:24

优化太花时间了

zqf441775525 发表于 2015-10-17 20:03:42

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

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

i7gly 发表于 2015-10-17 20:06:33

{:lol:}说出来你们都不信,我用松翰的,2K的程序愣是被我压缩到1K

tdh03z 发表于 2015-10-17 20:07:21

晕,你这程序一次写完吗?都不带调试的吗?
都写完了才发现超这么多

3DA502 发表于 2015-10-17 20:07:35

1M 的里面估计要用到很多表,很多变量,很多switch

guowei681 发表于 2015-10-17 20:41:16

楼主别用C啦用M8 做电调的都是用汇编呀 。

jamesdeep 发表于 2015-10-17 20:57:53

RAMILE 发表于 2015-10-17 14:39
绝逼用了printf,一个函数3kB

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

jamesdeep 发表于 2015-10-17 20:58:50

mandylion2008 发表于 2015-10-17 16:30
还玩这种过时的芯片?

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


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

jamesdeep 发表于 2015-10-17 21:00:03

tdh03z 发表于 2015-10-17 20:07
晕,你这程序一次写完吗?都不带调试的吗?
都写完了才发现超这么多

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

jamesdeep 发表于 2015-10-17 21:01:12

guowei681 发表于 2015-10-17 20:41
楼主别用C啦用M8 做电调的都是用汇编呀 。

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

mubei 发表于 2015-10-17 21:03:27

mandylion2008 发表于 2015-10-17 16:30
还玩这种过时的芯片?

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


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

younge 发表于 2015-10-17 21:32:43

留声而过 发表于 2015-10-17 14:58
第一次看见超这么多。

朋友,东北大学的吗

mandylion2008 发表于 2015-10-17 21:51:44

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

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

tsb0574 发表于 2015-10-17 22:18:34

换168吧,改不了多少东西的

mubei 发表于 2015-10-17 22:28:32

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

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

gy54321 发表于 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还得估计估计。
现在基本什么变量都可以设成全局变量, 省下编程的时间真是不少!

wxws_wxws 发表于 2015-10-18 04:25:52

用 lgt 的328兼容芯片,又便宜,又兼容

ttoto 发表于 2015-10-18 06:03:14

你不把工程贴上啦。真是爱莫能助啊。

mandylion2008 发表于 2015-10-18 08:35:06

本帖最后由 mandylion2008 于 2015-10-18 08:47 编辑

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

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

侵掠如火 发表于 2015-10-18 10:42:40

还是换硬件好,即便优化代码,装进去了,也不能再继续扩展功能了。压缩代码的时间很浪费,不值得。
果断换硬件。

chunyu 发表于 2015-10-18 10:45:20

AVR还有这么多人在使用啊

spacefram 发表于 2015-10-18 11:09:22

部分汇编化,楼上提到的printf非常可能。

kingway00 发表于 2015-10-18 11:21:56

楼主好像是编无刷电机驱动吧,我用BLheli代码,只有5.4K大小{:smile:},当然删掉了一些功能,BLheli原始代码编译出来7.8K左右,功能也比较多,楼主可以掂量下

mandylion2008 发表于 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.

jamesdeep 发表于 2015-10-18 13:08:01

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

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

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

沉默胜过白金 发表于 2015-10-18 18:39:39

haha ,,,你这是四轴吧,,,在某个群里看到你发了。。。{:sweat:}

世界好小。

jamesdeep 发表于 2015-10-18 18:50:53

沉默胜过白金 发表于 2015-10-18 18:39
haha ,,,你这是四轴吧,,,在某个群里看到你发了。。。

世界好小。 ...

{:lol:} 哈哈,我也觉得你这个头像很熟悉

crlfc 发表于 2015-10-18 19:52:01

jamesdeep 发表于 2015-10-18 18:50
哈哈,我也觉得你这个头像很熟悉

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

moypray 发表于 2015-10-18 20:25:19

可以考虑编译加-O2 编译选项,还可以搞搞 -O3,但是一般不太推荐O3优化

mzf3 发表于 2015-10-18 22:09:53

发现编写界面程序很占空间。
碰到过类似的问题

cos 发表于 2015-10-18 22:29:25

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

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

cc1987 发表于 2015-10-19 07:55:58

{:smile:}换MCU把,这方法最好

mcucow 发表于 2015-10-19 08:31:43

换16k, 除非COST非常严格

wzyllgx 发表于 2015-10-19 09:54:29

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

brumby 发表于 2015-10-25 20:56:29

cos 发表于 2015-10-18 22:29
是不是又是字库,又是图片,还装了个C E系统。要是用汇编就牛了。

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

ordinary 发表于 2015-10-25 22:32:06

表格放到 EEPROM

不枉此生23 发表于 2015-10-25 22:47:24

换换,汇编语言

foxpro2005 发表于 2015-10-25 23:19:49

是用的GCC,还是IAR?

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

孤独飞行 发表于 2015-10-26 12:45:50

优化代码,去掉那些乱七八糟是设置,专机专用。{:cry:}

HYLG 发表于 2015-10-26 13:11:43

MEGA168基本啥也不用动。

hswkcg 发表于 2015-11-4 11:33:20

还是尽量优化吧,不然单是代码移植就够头疼一段时间的

shuiluo2 发表于 2015-11-4 11:57:46

88 168 328都兼容的啊,直接换168好了,贵不了不少

duxingkei 发表于 2015-11-4 11:58:52

rom 发表于 2015-10-17 14:42
换328,168,哈哈

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

jamesdeep 发表于 2015-11-4 12:01:00

shuiluo2 发表于 2015-11-4 11:57
88 168 328都兼容的啊,直接换168好了,贵不了不少

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

shuiluo2 发表于 2015-11-4 12:02:46

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

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

destiny、 发表于 2015-11-4 12:17:56

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

说的很有道理、、、

wjg29542954 发表于 2015-11-4 12:22:25

想都不用想,果断换单片机

nowow 发表于 2015-11-4 12:27:19

ST32好像好多都是M级的FLASH了

MagicYang 发表于 2015-11-4 14:03:00

看到楼主发生这样悲伤的事情,我更加坚定了我的原则:一开始调试的时候,我会选择容量较大的单片机,其他元器件也是同理,留多一点余量,到最后来一波costdown,选容量适合的同系列单片机几乎不用改代码
页: [1]
查看完整版本: 最悲伤的事情发生了:程序写完了,单片机装不下