奋斗哥 发表于 2013-7-9 09:51:11

[STM8开发小工具]使STVD像Keil一样显示代码大小


先上菜:点击此处下载


再上吃法:


1、把解开后的size.exe复制到COSMIC\CXSTM8文件夹,就是你的COSMIC编译工具里有cpstm8.exe的那个文件夹。
2、在SVTD的Project->settings中打开Post-Build选项卡,在commands的最后一行加入:size $(OutputPath)$(TargetSName).map
3、保存返回,编译试试,最后会出现如:Program Size: Code=12470 Eeprom=0 ZeroPage=227 Ram=180 的结果。


思路:


打开map文件,统计各段的长度,然后输出。


主要代码: static void Main(string[] args)
      {
            StreamReader sr = new StreamReader(args);
            string[] s;
            char[] charSeparators = new char[] { ' ' };

            int code_size = 0;
            int zeropage_size = 0;
            int ram_size = 0;
            int eeprom_size = 0;

            for (int i = 0; i < 8; i++)
            {
                string s1 = sr.ReadLine();
            }

            while (true)
            {
                string s1 = sr.ReadLine();
                s = s1.Split(charSeparators, StringSplitOptions.RemoveEmptyEntries);
                if(s.Length == 0)
                {
                  break;
                }
                else if (s == ".text" || s == ".const" || s == ".init")
                {
                  code_size += int.Parse(s);
                }
                else if (s == ".eeprom")
                {
                  eeprom_size += int.Parse(s);
                }
                else if (s == ".bsct," && s == "initialized")
                {
                  zeropage_size += int.Parse(s);
                }
                else if (s == ".ubsct" || s == ".share")
                {
                  zeropage_size += int.Parse(s);
                }
                else if (s == ".data," && s == "initialized")
                {
                  ram_size += int.Parse(s);
                }
                else if (s == ".bss")
                {
                  ram_size += int.Parse(s);
                }
            }
            Console.WriteLine("");
//Program Size: Code=5056 RO-data=288 RW-data=68 ZI-data=1140
            Console.WriteLine("Program Size: Code=" + code_size.ToString() + " Eeprom=" + eeprom_size.ToString() + " ZeroPage=" + zeropage_size.ToString() + " Ram=" + ram_size.ToString());
      }

原帖出处:http://www.amobbs.com/thread-3700831-1-1.html

zhczlzhang 发表于 2021-5-11 10:56:23

正好需要,谢谢。

feixiang20 发表于 2017-12-19 22:26:45

过来看一看

如果是我 发表于 2017-9-7 11:12:30

L小明 发表于 2016-2-16 17:23 static/image/common/back.gif
你那个size.exe文件好像没有放对地方

在commands的最后一行加入:size $(OutputPath)$(TargetSName).map
吧“:”去掉就好了
所以应该加入size $(OutputPath)$(TargetSName).map

L小明 发表于 2016-2-16 17:23:51

hpdell 发表于 2013-12-10 17:41 static/image/common/back.gif
我的按照此方法加入了,怎么提示错误啊 ???

The command: "size Debug\stm8.map" has failed, the ret ...

你那个size.exe文件好像没有放对地方

~大海~ 发表于 2016-1-25 19:09:50

遇到同样问题求解

hpdell 发表于 2013-12-10 17:41:53

本帖最后由 hpdell 于 2013-12-10 17:43 编辑

我的按照此方法加入了,怎么提示错误啊 ???

The command: "size Debug\stm8.map" has failed, the returned value is: -2146232576
stm8.elf - 1 error(s), 0 warning(s)


陈克雄 发表于 2013-7-11 01:21:44

奋斗哥 发表于 2013-7-10 14:09 static/image/common/back.gif
ST Visual Develop(STVD)为全程控制应用开发 - 从构建和调试应用代码到微控制器编程 - 提供了简便易用且 ...

好工具呀,而且还是免费的!!

KdianC 发表于 2013-7-10 19:13:36

好东西啊,赶紧收集起来

陈克雄 发表于 2013-7-10 00:14:46

坐个板凳~~~SVTD是什么,求科普一下~{:soso_e113:}

xiaopaohu123 发表于 2013-7-9 11:32:05

这个功能不错!赞一个;P
页: [1] 2
查看完整版本: [STM8开发小工具]使STVD像Keil一样显示代码大小

Baidu
map