打印
[开发工具]

关于MAP文件问题

[复制链接]
3717|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
totoko163|  楼主 | 2008-2-25 16:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
os, ST, se, App, STM
我的MAP里面有个地方产生啦多余的4K RAM,谁知道是什么问题吗?
----------------------------------------------------------
  ======================
CODE
  Relative segment, address: 0800246C - 08002477 (0xc bytes), align: 2
  Segment part 2.
           ENTRY                   ADDRESS         REF BY
           =====                   =======         ======
           ??divu32_t              0800246D        AppDispScr_CPU (app)
                                                   AppDispScr_VersionTickRate (app)
                                                   AppFormatDec (app)




                ****************************************
                *                                      *
                *            MODULE SUMMARY            *
                *                                      *
                ****************************************

Module               CODE    DATA  CONST
------               ----    ----  -----
                    (Rel)   (Rel)  (Rel)
?CMAIN                 48
?_EXIT                 12
?__dbg_break            2
?__exit                18
?cstartup_ctx          22
?div_module            12
?exit                   4
?low_level_init         4
?memcpy                22
?memset                18
?segment_init          48
app                 1 134   1 580    196
  + shared                            12
app_vect              242
bsp                 1 616      20
cpu_a                  22
lcd                   368       2     12
lcd_os                 60       4     12
os_core             1 736   4 968    288
os_cpu_a              176
os_cpu_c              208       2
os_dbg                  2             92
os_flag                76
os_mbox               418
os_mem                 72
os_q                   56
os_sem                388
os_task               464
os_time               216
os_tmr                560             40
stm32f10x_adc         258
stm32f10x_flash        44
stm32f10x_gpio        204
stm32f10x_rcc         588             20
stm32f10x_systick     104
stm32f10x_tim          92
N/A (command line)          4 096
N/A (alignment)        22
------              -----  ------    ---
Total:              9 336  10 672    672


                ****************************************
                *                                      *
                *      SEGMENTS IN ADDRESS ORDER       *
                *                                      *
                ****************************************


SEGMENT              SPACE    START ADDRESS   END ADDRESS     SIZE  TYPE  ALIGN
=======              =====    =============   ===========     ====  ====  =====
INTVEC                             08000000 - 080000F7          F8   rel    2
ICODE                              080000F8 - 0800016F          78   rel    2
DIFUNCT                                 08000170                     rel    2
CODE                               08000170 - 08002477        2308   rel    2
INITTAB                            08002478 - 0800248F          18   rel    2
DATA_ID                                 08002490                     dse    0
DATA_C                             08002490 - 08002717         288   rel    2
DATA_I                                  20000000                     dse    0
DATA_Z                             20000000 - 200019AF        19B0   rel    2
CSTACK                             200019B0 - 200029AF        1000   rel    2

                ****************************************
                *                                      *
                *        END OF CROSS REFERENCE        *
                *                                      *
                ****************************************

  9 336 bytes of CODE  memory
 10 672 bytes of DATA  memory
    672 bytes of CONST memory

Errors: none
Warnings: none
沙发
ryansheng| | 2008-2-25 18:00 | 只看该作者

Re

很明显,是CSTACK

使用特权

评论回复
板凳
totoko163|  楼主 | 2008-2-25 18:09 | 只看该作者

CSTACK

  CSTACK ram變量那么大啊..
有什么办法减小和设置他呢?

使用特权

评论回复
地板
starm| | 2008-2-25 18:15 | 只看该作者

可以通过 .xcl 文件修改每个堆栈大小

QCODE_I=CODE_ID
//-QINTVEC_ROM=INTVEC
//*************************************************************************
// Stack and heap segments.
//*************************************************************************

-D_CSTACK_SIZE=1000
-D_SVC_STACK_SIZE=0
-D_FIQ_STACK_SIZE=10
-D_ABT_STACK_SIZE=0
-D_UNDEF_STACK_SIZE=0
-D_IRQ_STACK_SIZE=400
-D_HEAP_SIZE=1000

-Z(DATA)CSTACK+_CSTACK_SIZE=RAMSTART-RAMEND
-Z(DATA)SVC_STACK+_SVC_STACK_SIZE=RAMSTART-RAMEND
-Z(DATA)ABT_STACK+_ABT_STACK_SIZE=RAMSTART-RAMEND
-Z(DATA)UNDEF_STACK+_UNDEF_STACK_SIZE=RAMSTART-RAMEND
-Z(DATA)FIQ_STACK+_FIQ_STACK_SIZE=RAMSTART-RAMEND
-Z(DATA)IRQ_STACK+_IRQ_STACK_SIZE=RAMSTART-RAMEND
-Z(DATA)HEAP+_HEAP_SIZE=RAMSTART-RAMEND

使用特权

评论回复
5
totoko163|  楼主 | 2008-2-25 18:23 | 只看该作者

堆栈大小

刚刚修改啦堆栈大小,结果发现没什么变化,是我修改错啦吗?主程序的量小啦点..从1.8K变到啦0.8K

                ****************************************
                *                                      *
                *            MODULE SUMMARY            *
                *                                      *
                ****************************************

Module               CODE   DATA  CONST
------               ----   ----  -----
                    (Rel)  (Rel)  (Rel)
?CMAIN                 48
?_EXIT                 12
?__dbg_break            2
?__exit                18
?cstartup_ctx          22
?div_module            12
?exit                   4
?low_level_init         4
?memcpy                22
?memset                18
?segment_init          48
app                 1 134    812    196
  + shared                           12
app_vect              242
bsp                 1 616     20
cpu_a                  22
lcd                   368      2     12
lcd_os                 60      4     12
os_core             1 736  4 200    288
os_cpu_a              176
os_cpu_c              208      2
os_dbg                  2            92
os_flag                76
os_mbox               418
os_mem                 72
os_q                   56
os_sem                388
os_task               464
os_time               216
os_tmr                560            40
stm32f10x_adc         258
stm32f10x_flash        44
stm32f10x_gpio        204
stm32f10x_rcc         588            20
stm32f10x_systick     104
stm32f10x_tim          92
N/A (command line)         4 096
N/A (alignment)        22
------              -----  -----    ---
Total:              9 336  9 136    672

使用特权

评论回复
6
totoko163|  楼主 | 2008-2-25 18:29 | 只看该作者

修改堆栈

  这个堆栈的修改会有什么不同,我不是在C原吗里面有设置吗?怎么这里还要单独修改呢?

-QCODE_I=CODE_ID

//*************************************************************************
// Stack and heap segments.
//*************************************************************************

-D_CSTACK_SIZE=256   (这里原来是1000)
-D_HEAP_SIZE=256     (这里原来是1000)

-Z(DATA)CSTACK+_CSTACK_SIZE=RAMSTART-RAMEND
-Z(DATA)HEAP+_HEAP_SIZE=RAMSTART-RAMEND


                ****************************************
                *                                      *
                *            MODULE SUMMARY            *
                *                                      *
                ****************************************

Module               CODE   DATA  CONST
------               ----   ----  -----
                    (Rel)  (Rel)  (Rel)
?CMAIN                 48
?_EXIT                 12
?__dbg_break            2
?__exit                18
?cstartup_ctx          22
?div_module            12
?exit                   4
?low_level_init         4
?memcpy                22
?memset                18
?segment_init          48
app                 1 134    812    196
  + shared                           12
app_vect              242
bsp                 1 616     20
cpu_a                  22
lcd                   368      2     12
lcd_os                 60      4     12
os_core             1 736  4 200    288
os_cpu_a              176
os_cpu_c              208      2
os_dbg                  2            92
os_flag                76
os_mbox               418
os_mem                 72
os_q                   56
os_sem                388
os_task               464
os_time               216
os_tmr                560            40
stm32f10x_adc         258
stm32f10x_flash        44
stm32f10x_gpio        204
stm32f10x_rcc         588            20
stm32f10x_systick     104
stm32f10x_tim          92
N/A (command line)           598
N/A (alignment)        22
------              -----  -----    ---
Total:              9 336  5 638    672


                ****************************************
                *                                      *
                *      SEGMENTS IN ADDRESS ORDER       *
                *                                      *
                ****************************************


SEGMENT              SPACE    START ADDRESS   END ADDRESS     SIZE  TYPE  ALIGN
=======              =====    =============   ===========     ====  ====  =====
INTVEC                             08000000 - 080000F7          F8   rel    2
ICODE                              080000F8 - 0800016F          78   rel    2
DIFUNCT                                 08000170                     rel    2
CODE                               08000170 - 08002477        2308   rel    2
INITTAB                            08002478 - 0800248F          18   rel    2
DATA_ID                                 08002490                     dse    0
DATA_C                             08002490 - 08002717         288   rel    2
DATA_I                                  20000000                     dse    0
DATA_Z                             20000000 - 200013AF        13B0   rel    2
CSTACK                             200013B0 - 20001605         256   rel    2

                ****************************************
                *                                      *
                *        END OF CROSS REFERENCE        *
                *                                      *
                ****************************************

 9 336 bytes of CODE  memory
 5 638 bytes of DATA  memory
   672 bytes of CONST memory

Errors: none
Warnings: none

使用特权

评论回复
7
totoko163|  楼主 | 2008-2-25 22:48 | 只看该作者

猜想

OS_CRITICAL_METHOD == 3
给这里使用的吗?IAR管理中断?

使用特权

评论回复
8
grant_jx| | 2008-2-26 01:07 | 只看该作者

我说command line是什么

楼主下午打我电话的时候我正在外地出差,电话里问得我稀里糊涂的,从来没注意过map文件里还有“command line”,晚上回来也没有看到楼主发的的邮件,原来在这里。

IAR的手册上是这样解释-D_CSTACK_SIZE的

THE STACK
The stack is used by functions to store variables and other information that is used locally by functions, as described in the chapter Data storage. It is a continuous block of memory pointed to by the processor stack pointer register SP.
The data segment used for holding the stack is called CSTACK. The cstartup module initializes the stack pointer to the end of the stack segment.
The default linker file sets up a constant representing the size of the stack, at the beginning of the linker file:
-D_CSTACK_SIZE=2000
Note that the size is written hexadecimally without the 0x notation.
Further down in the linker file, the actual segment is defined in the memory area available for the stack:
-Z(DATA)CSTACK+_CSTACK_SIZE=RAMSTART-RAMEND


Stack size
The compiler uses the internal data stack, CSTACK, for a variety of user program operations, and the required stack size depends heavily on the details of these operations. If the given stack size is too small, the stack will normally overwrite the variable storage, which is likely to result in program failure. If the given stack size is too large, RAM will be wasted.



在IAR的安装文件夹doc目录EWARM_CompilerReference.pdf文档,Page51。

使用特权

评论回复
9
xusn| | 2008-2-26 11:31 | 只看该作者

-D directive

-D 就是定义一个标号, 赋个初值以便以后引用
类似:  #define    ROMSTART    0x0000

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

25

帖子

1

粉丝