MDK链接脚本错误
我想讓我的程序運行在RAM中而不是在SPI FLASH上,寫了一個scatterfile:
ROM 0x00000000 0x00200000 ;spi flash
{
STARTUP +0
{
startup.o(RESET, +First)
;*(+RO)
}
RO 0x20000000 0x00020000 ;運行地址RAM中
{
*(+RO)
*(+RW)
*(+ZI)
}
}
鏈接時出現錯誤:
?
Error: L6202E: entry.o(.ARM.Collect$$$$00000000) cannot be assigned to non-root region 'ER_RO'
錯誤可以通過改成下面消除:
ROM 0x00000000 0x00200000 ;加載地址flash
{
STARTUP +0
{
startup.o(RESET, +First)
;*(+RO)
}
}
RAM?0x20000000 0x00020000;加載地址RAM
{
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,也可執行.
?
轉載于:https://www.cnblogs.com/fengeryi/p/4184782.html
總結
- 上一篇: 12月23 语句
- 下一篇: sphinx全文检索功能 | windo