MDK连接脚本错误

我想让个人程序运行在RAM中而不是在SPI FLASH上,写了一个scatterfile:spa

ROM 0x00000000 0x00200000 ;spi flash
{
STARTUP +0
{
startup.o(RESET, +First)
;*(+RO)
}
RO 0x20000000 0x00020000 ;运行地址RAM中
{
*(+RO)
*(+RW)
*(+ZI)
}
}code

连接时出现错误:flash

 

Error: L6202E: entry.o(.ARM.Collect$$$$00000000) cannot be assigned to non-root region 'ER_RO'io

错误能够经过改为下面消除:file

ROM 0x00000000 0x00200000 ;加载地址flash
{
STARTUP +0
{
startup.o(RESET, +First)
;*(+RO)
}
}程序

RAM 0x20000000 0x00020000;加载地址RAM文件

{co

RO 0x20000000 0x00020000 ;运行地址RAM中
{
*(+RO)
*(+RW)
*(+ZI)
}错误

}生成

能够连接经过,可是因为加载地址两个,连接完成以后会生成***.bin的目录,目录里面有名为ROM和RAM连个文件.

最后没有找到具体缘由,entry.o不知道是具体怎么生成的,也不知道有什么做用,只能改为:

ROM 0x00000000 0x00200000 ;spi flash
{
STARTUP +0
{
startup.o(RESET, +First)
*(+RO)
}
RO 0x20000000 0x00020000 ;运行地址RAM中
{

xxx.o;我想要运行在RAM中的code

.

.

.

xxx2.o
;*(+RO)
*(+RW)
*(+ZI)
}
}

连接经过,能够生成xxx.bin,也可执行.

相关文章
相关标签/搜索