问个问题!编译成功后怎么看RAM 和ROM的使用情况!谢谢!
问个问题!编译成功后怎么看RAM 和ROM的使用情况!谢谢! 在你编译好项目的目录下有一个扩展名为.MAP文件,里面有详细的ROM、RAM使用情况。例如:
*** Memory map ***-------------------------注:存储器使用表
SPACE=REGULAR
MEMORY=ROM-------------------------------注:ROM使用情况
BASE ADDRESS=0000H SIZE=1000H
OUTPUT INPUT INPUT BASE SIZE
SEGMENTSEGMENTMODULE ADDRESS
@@VECT00 0000H 0002H CSEG AT--------------注:这里表明00H开始后的2个BYTE已被占用
@@VECT00 @cstart 0000H 0002H
* gap * 0002H 0016H-------------------------注:02H开始后的16个BYTE空
SSS0 0018H 0002H CSEG AT
SSS0 option 0018H 0002H
* gap * 001AH 0004H
@@VECT1E 001EH 0004H CSEG AT
@@VECT1E serial 001EH 0004H
* gap * 0022H 001EH
@@CALT 0040H 000CH CSEG CALLT0
@@CALT @cstart 0040H 0000H
@@CALT systemin 0040H 0000H
@@CALT main 0040H 0000H
@@CALT system 0040H 0000H
@@CALT serial 0040H 0000H
@@CALT SERIAL_u 0040H 0000H
@@CALT watchdog 0040H 0000H
78K/0S Series Linker V1.40 Date:21 Aug 2008 Page: 3
@@CALT @cproc 0040H 0004H
@@CALT @deilost 0044H 0004H
@@CALT @dincdec 0048H 0004H
* gap * 004CH 0032H
SSS1 007EH 0002H CSEG AT
SSS1 option 007EH 0002H
DBSET 0080H 0002H CSEG AT
DBSET option 0080H 0002H
@@R_INIS 0082H 0000H CSEG UNITP
@@R_INIS @cstart 0082H 0000H
@@R_INIS systemin 0082H 0000H
@@R_INIS main 0082H 0000H
@@R_INIS system 0082H 0000H
@@R_INIS serial 0082H 0000H
@@R_INIS SERIAL_u 0082H 0000H
@@R_INIS watchdog 0082H 0000H
@@R_INIS @rom 0082H 0000H
@@LCODE 0082H 0097H CSEG
@@LCODE@cstart 0082H 0059H
@@LCODE@cproc 00DBH 001CH
@@LCODE@deilost 00F7H 000CH
@@LCODE@dincdec 0103H 0016H
@@R_INIT 0119H 0000H CSEG
@@R_INIT @cstart 0119H 0000H
@@R_INIT systemin 0119H 0000H
@@R_INIT main 0119H 0000H
@@R_INIT system 0119H 0000H
@@R_INIT serial 0119H 0000H
@@R_INIT SERIAL_u 0119H 0000H
@@R_INIT watchdog 0119H 0000H
@@R_INIT @rom 0119H 0000H
@@CNST 0119H 0000H CSEG
@@CNST @cstart 0119H 0000H
@@CNST systemin 0119H 0000H
@@CNST main 0119H 0000H
@@CNST system 0119H 0000H
@@CNST serial 0119H 0000H
@@CNST SERIAL_u 0119H 0000H
@@CNST watchdog 0119H 0000H
@@CODE 0119H 01F1H CSEG
@@CODE systemin 0119H 0014H
@@CODE main 012DH 0069H
@@CODE system 0196H 0013H
@@CODE serial 01A9H 014EH
@@CODE SERIAL_u 02F7H 0000H
@@CODE watchdog 02F7H 0013H
* gap * 030AH 0BC6H---------------------------最重要:030AH表明此后的空间没有应用到
SSS2 0ED0H 0100H CSEG AT --------下面RAM情况也类似
SSS2 option 0ED0H 0100H
* gap * 0FD0H 0030H
MEMORY=RAM
BASE ADDRESS=FE00H SIZE=0200H
OUTPUT INPUT INPUT BASE SIZE
SEGMENTSEGMENTMODULE ADDRESS
@@DATA FE00H 0014H DSEG
@@DATA @cstart FE00H 0002H
@@DATA systemin FE02H 0000H
78K/0S Series Linker V1.40 Date:21 Aug 2008 Page: 4
@@DATA main FE02H 000BH
@@DATA system FE0DH 0000H
@@DATA serial FE0DH 0007H
@@DATA SERIAL_u FE14H 0000H
@@DATA watchdog FE14H 0000H
@@DATA @rom FE14H 0000H
@@INIT FE14H 0000H DSEG
@@INIT @cstart FE14H 0000H
@@INIT systemin FE14H 0000H
@@INIT main FE14H 0000H
@@INIT system FE14H 0000H
@@INIT serial FE14H 0000H
@@INIT SERIAL_u FE14H 0000H
@@INIT watchdog FE14H 0000H
@@INIT @rom FE14H 0000H
* gap * FE14H 000CH
@@INIS FE20H 0000H DSEG SADDRP
@@INIS @cstart FE20H 0000H
@@INIS systemin FE20H 0000H
@@INIS main FE20H 0000H
@@INIS system FE20H 0000H
@@INIS serial FE20H 0000H
@@INIS SERIAL_u FE20H 0000H
@@INIS watchdog FE20H 0000H
@@INIS @rom FE20H 0000H
@@DATS FE20H 0000H DSEG SADDRP
@@DATS @cstart FE20H 0000H
@@DATS systemin FE20H 0000H
@@DATS main FE20H 0000H
@@DATS system FE20H 0000H
@@DATS serial FE20H 0000H
@@DATS SERIAL_u FE20H 0000H
@@DATS watchdog FE20H 0000H
@@DATS @rom FE20H 0000H
@@BITS FE20H 0000H BSEG
@@BITS @cstart FE20H.0 0000H.0
@@BITS systemin FE20H.0 0000H.0
@@BITS main FE20H.0 0000H.0
@@BITS system FE20H.0 0000H.0
@@BITS serial FE20H.0 0000H.0
@@BITS SERIAL_u FE20H.0 0000H.0
@@BITS watchdog FE20H.0 0000H.0
* gap * FE20H 00E0H
* gap (Not Free Area) * FF00H 0100H
Target chip : uPD78F9222
Device file : V3.00 左边的*gap*表示此段地址后的空间是没有用到的,没有用到的地址数对应SIZE下的数字 懂了一点!!十分感谢! 扩展名为.MAP文件,可能在你的项目文件下面有几个,特别是C程序,使用不同的库,生成的map文件名字也不同,不要打开错了,如果不知道是那个,请利用文件生成的时间来区别,看文件属性,这个方法可以。 回复【4楼】NEC-etouch 北京意同创科技公司
-----------------------------------------------------------------------
78K0系列的可以看到生成.map文件。
CA850怎么不能编译出.map文件,这个怎么查看ram和rom啊,或是怎么设置编译器才能生成该文件啊?我用的是PM+6.31版本的。谢谢了! 78K/0 Series Linker V4.00 Date:2010 Page: 3
* gap * 0036H 0048H
ONC_SBR 007EH 0002H CSEG AT
ONC_SBRoption 007EH 0002H
OPT_SET 0080H 0004H CSEG AT
OPT_SEToption 0080H 0004H
ONC_SET 0084H 0001H CSEG AT
ONC_SEToption 0084H 0001H
* gap * 0085H 000AH
* gap (Not Free Area) * 008FH 0107H ------------->中的 Not Free Area 是什么意思?? mark mark,要研究和学习的 mark,学习了 回复【1楼】NEC-etouch 北京意同创科技公司
-----------------------------------------------------------------------
你好,请问一下,我现在的程序老是死机,分析的问题是函数嵌套太多导致的,其实最终的问题是RAM不够,但是从MAP中我不知道怎么看到底还剩下多少,开机运行后就不知道RAM的使用情况了, 78K/0 Series Linker V4.00 Date:2010 Page: 3
请问这个什么东西? 回复【10楼】visualworld
回复【1楼】nec-etouch 北京意同创科技公司
-----------------------------------------------------------------------
你好,请问一下,我现在的程序老是死机,分析的问题是函数嵌套太多导致的,其实最终的问题是ram不够,但是从map中我不知道怎么看到底还剩下多少,开机运行后就不知道ram的使用情况了,
-----------------------------------------------------------------------
RAM使用:
1)存放全局变量和static修饰的局部变量,也就是.MAP文件中显示的@@DATA和@@INIT(应该还有其他的一些东东.....)
2) 函数调用时上下文的保存和局部变量的空间,关于这个你可以优化你自己所写的函数,比如函数参数传递尽量多用指针方式......
页:
[1]