在线时间0 小时
UID211219
ST金币0
蝴蝶豆0
注册时间2010-8-22
新手上路
- 最后登录
- 1970-1-1
|
发表于 2010-8-22 16:39:53
|
显示全部楼层
a0a.1 0b0c
回复:如何禁止KEIL 初始化RAM?请高手帮忙
回复第 2 楼 wyskp于2009-02-01 03:19:48发表:
已解决。
KEIL 工程师给的方案:
利用输入段使用OVERLAY,而不是NOINIT.
指定单个变量不初始化:
int print_time __attribute__ ((section ("ER_RSV")));
指定文件内所以变量不被初始化:
#pragma arm section code ="ER_RSV", rwdata = "ER_RSV"
int abc;
int systick;
int sys_var1;
#pragma arm section code, rwdata
; *************************************************************
; *** Scatter-Loading Description File generated by uVision ***
; *************************************************************
LR_IROM1 0x08000000 0x00020000 { ; load region size_region
ER_IROM1 0x08000000 0x00020000 { ; load address = execution address
*.o (RESET, +First)
*(InRoot$$Sections)
.ANY (+RO)
}
RW_IRAM1 0x20000000 0x00004000 { ; RW data
.ANY (+RW +ZI)
}
OVERLAY_RAM1 0x20004000 OVERLAY {
*.o (ER_RSV) ;所有模块的指定段为"ER_RSV"的变量放这里
}
}
我也遇到了跟楼主一样的问题,希望的到解决。
.\obj\V_OV7660_STM32.sct(7): error: L6236E: No section matches selector - no section to be FIRST/LAST.
LR_IROM1 0x08000000 0x00010000 { ; load region size_region
ER_IROM1 0x08000000 0x00010000 { ; load address = execution address
*.o (Init, +First) //是这行错误,原来是(reset,+FIRST),现在这样也不行。要怎么解决。我的工程也是从IAR转来的。原来是IAR的工程。用的《STM32 IAR工程->Keil MDK转换详解》这篇文章里的那位仁兄的启动文件,现在只剩下这个错误。
*(InRoot$$Sections)
.ANY (+RO)
}
RW_IRAM1 0x20000000 0x00010000 { ; RW data
.ANY (+RW +ZI)
}
}
LR_IROM2 0x08010000 0x00010000 {
ER_IROM2 0x08010000 0x00010000 { ; load address = execution address
.ANY (+RO)
}
}
|
|