程序代码如下:
#include <csl.h>
#include <csl_pll.h>
#include <csl_chip.h>
#include <csl_gpio.h>
#include <csl_gpiohal.h>
#include <stdio.h>
void delay();
/*锁相环的设置*/
PLL_Config myConfig = {
0, //IAI: the PLL locks using the same process that was underway
//before the idle mode was entered
1, //IOB: If the PLL indicates a break in the phase lock,
//it switches to its bypass mode and restarts the PLL phase-locking
//sequence
24, //PLL multiply value; multiply 24 times
1 //Divide by 2 PLL divide value; it can be either PLL divide value
//(when PLL is enabled), or Bypass-mode divide value
//(PLL in bypass mode, if PLL multiply value is set to 1)
};
int main(void) {
printf("enter the program:\n");
// int i = 0;
// 初始化CSL库
CSL_init();
// 设置系统的运行速度为144MHz
PLL_config(&myConfig);
// 确定方向为输出
GPIO_RSET(IODIR,0xFF);
// GPIO_RSET(IODATA,0xaa);
while(1)
{
GPIO_RSET(IODATA,~0x01);
delay();
delay();
GPIO_RSET(IODATA,~0x02);
delay();
delay();
GPIO_RSET(IODATA,~0x04);
delay();
delay();
GPIO_RSET(IODATA,~0x80);
delay();
delay();
GPIO_RSET(IODATA,~0x40);
delay();
delay();
GPIO_RSET(IODATA,~0x10);
delay();
delay();
GPIO_RSET(IODATA,~0x08);
delay();
delay();
}
}
void delay()
{
Uint32 j = 0,k = 0;
for(j = 0;j<0x0c;j++)
{
for(k= 0;k<0xffff;k++)
{}
}
}
对于代码中标记的那行,写与不写占用的内存如下图
cmd文件如下:
MEMORY
{
PAGE 0:
MMR : origin = 0000000h, length = 00000c0h
SPRAM : origin = 00000c0h, length = 0000040h
VECS : origin = 0000100h, length = 0000100h
DARAM0 : origin = 0000200h, length = 0003E00h
DARAM1 : origin = 0004000h, length = 0004000h
DARAM2 : origin = 0008000h, length = 0004000h
DARAM3 : origin = 000c000h, length = 0004000h
SARAM0 : origin = 0010000h, length = 0004000h
SARAM1 : origin = 0014000h, length = 0005000h
SARAM2 : origin = 0019000h, length = 0003000h
SARAM3 : origin = 001c000h, length = 0004000h
SARAM4 : origin = 0020000h, length = 0004000h
SARAM5 : origin = 0024000h, length = 0004000h
SARAM6 : origin = 0028000h, length = 0004000h
SARAM7 : origin = 002c000h, length = 0004000h
SARAM8 : origin = 0030000h, length = 0004000h
SARAM9 : origin = 0034000h, length = 0004000h
SARAM10 : origin = 0038000h, length = 0004000h
SARAM11 : origin = 003c000h, length = 0004000h
SARAM12 : origin = 0040000h, length = 0004000h
SARAM13 : origin = 0044000h, length = 0004000h
SARAM14 : origin = 0048000h, length = 0004000h
SARAM15 : origin = 004c000h, length = 0004000h
CE0 : origin = 0050000h, length = 03b0000h
CE1 : origin = 0400000h, length = 0400000h
CE2 : origin = 0800000h, length = 0400000h
CE3 : origin = 0c00000h, length = 03f8000h
PDROM : origin = 0ff8000h, length = 07f00h
/* VECS : origin = 0ffff00h, length = 00100h */ /* reset vector */
}
SECTIONS
{
vectors : {} > VECS PAGE 0 /* interrupt vector table */
.cinit : {} > SARAM0 PAGE 0
.text : {} > SARAM1 PAGE 0
isrs : {} > SARAM2 PAGE 0
.stack : {} > SARAM4 PAGE 0
.sysstack: {} > SARAM4 PAGE 0
.sysmem : {} > SARAM5 PAGE 0
.data : {} > SARAM3 PAGE 0
.bss : {} > SARAM3 PAGE 0
.const : {} > SARAM6 PAGE 0
.cio : {} > SARAM6 PAGE 0
.csldata: {} > SARAM7 PAGE 0
}
所以,请问为何printf函数为何会占用这么多的内存?

