STM32f103zet6(块1的第三小块)通过fsmc连接外部sram(is62w51216)。我修改sct文件,将fsmc的rw、zi都连到0x68000000。在线
调试时发现全局变量初始值不对。fsmc.c里测试读写外部sram正常。还有,我写了fsmc.0的rw、zi均放在0x68000000,fsmc_m()里边的局部变量怎么还是映射到ram1去了?
怎么将局部变量也放到ram2去?sct文件:
LR_IROM1 0x08000000 0x00080000 {
ER_IROM1 0x08000000 0x00080000 {
*.o (RESET, +First)
*(InRoot$$Sec
tions)
.ANY (+RO)
}
RW_IRAM1 0x20000000 0x00010000 {
.ANY (+RW +ZI)
}
RW_IRAM2 0x68000000 0x100000 {
FSMC.O (+RW +ZI)
}
}
fsmc.c文件:
unsigned long int fsmc_cnt=0x09;
char x=0x05;
void fsmc_m()
{
unsigned char a[257]={1};
x=x+3;
fsmc_cnt+=5;
a[0]=x;
a[2]=fsmc_cnt;
while(1);
}
“__main()作为c语言的入口函数,它主要做了以下工作:
1.把RO,RW从他们的加载域复制到他们的运行域中去(可以用在LINKER中设置RO=,RW=,来确定,也可以用scatter文件来定义)
2.初始化ZI域
3.跳到__rt_entry. 而库函数__rt_entry()会完成以下工作:
1.调用__rt_stackheap_init()设置stack和heap 2.调用__rt_lib_init()初始化相应的库函数, 3.调用main(),即是我们自己的应用程序了
4.调用exit()来处理main()函数的返回值”
一周热门 更多>