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,也可執行.

相關文章
相關標籤/搜索