我想让个人程序运行在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,也可执行.