我想讓個人程序運行在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,也可執行.