|
发表于 2014-9-3 17:12:02
|
显示全部楼层
要改sct文件,不要用Keil自动生成的那个
这个应该是Keil自动生成的
LR_IROM1 0x08006000 0x0001C000 { ; load region size_region
ER_IROM1 0x08006000 0x0001C000 { ; load address = execution address
*.o (RESET, +First)
*(InRoot$$Sections)
.ANY (+RO)
}
RW_IRAM1 0x20000010 0x00004000 { ; RW data
.ANY (+RW +ZI)
}
}
这个要改掉,我的程序是在RAM里跑的,scatter文件是这样的,你照猫画虎吧
MODULE 0x20002800 0x3000 ; load region size_region
{
PRO2 0x20002800 0x2700 ; execution address
{
T12.o (TEntryC,+FIRST)
.ANY (+RO)
}
DAT2 0x20004F00 0x100 ; RW data
{
.ANY (+RW +ZI)
}
}
*(InRoot$$Sections) 这个部分就是你所认为浪费空间的内容,是C运行时库所必须的
我不用main函数,但在进入TEntryC之前所有代码是我自己做的,相当于自己做scatter loader的功能,如果自己把C运行时库也做了,那相当于自己实现了一个_main |
|