嵌入式开发者社区
标题: SPI flash烧写程序理解 [打印本页]
作者: shejishi0225 时间: 2014-12-4 11:19
标题: SPI flash烧写程序理解
本帖最后由 shejishi0225 于 2014-12-4 11:22 编辑
OMAP-L138_FlashAndBootUtils TI 的烧写工具集
中的SPI1 flash启动,
代码编译时出现如下错误,该如何解决?
undefined first referenced
symbol in file
--------- ----------------
EXTERNAL_RAM_END C:/ti/OMAP-L138_FlashAndBootUtils_2_40/OMAP-L138/CCS/SPIWriter/DSP/util.obj
EXTERNAL_RAM_START C:/ti/OMAP-L138_FlashAndBootUtils_2_40/OMAP-L138/CCS/SPIWriter/DSP/util.obj
error #10234-D: unresolved symbols remain
error #10010: errors encountered during linking; "C:/ti/OMAP-L138_FlashAndBootUtils_2_40/OMAP-L138/CCS/SPIWriter/SPIWriter_DSP/../../../../OMAP-L138/CCS/SPIWriter/DSP/SPIWriter_OMAP-L138.out" not built
EXTERNAL_RAM_END及EXTERNAL_RAM_START该如何定义呢?
在util.c文件中对其定义如下:
extern __FAR__ Uint32 EXTERNAL_RAM_START, EXTERNAL_RAM_END;
作者: shejishi0225 时间: 2014-12-4 15:55
接上述继续描述:
我将上述2个变量强制定义如下
#define EXTERNAL_RAM_START (0xc0000000) //REVISIT dynamic memory allocation in DDR
#define EXTERNAL_RAM_END (EXTERNAL_RAM_START + 0x00020000)
但又报了新错误。
程序如下:
if((currMemPtr + size_temp) > ((Uint32) &EXTERNAL_RAM_END))
{
return NULL;
}
cPtr = (void *) (((Uint32) &EXTERNAL_RAM_START) + currMemPtr);
currMemPtr += size_temp;
编译针对上述报错如下:
"C:/ti/OMAP-L138_FlashAndBootUtils_2_40/Common/src/util.c", line 121: error #160: expression must be an lvalue or a function designator
"C:/ti/OMAP-L138_FlashAndBootUtils_2_40/Common/src/util.c", line 126: error #160: expression must be an lvalue or a function designator
如何解决呢?
作者: 希望缄默 时间: 2014-12-5 09:21
是在 CMD 文件定义的~
作者: shejishi0225 时间: 2014-12-5 13:40
非常感谢!
我用的烧写程序集的SPIWriter_DSP.CMD其中有一段定义如下:
.extram
{
. += 0x04000000;
} load = DRAM, FILL=0x00000000, type=DSECT, START(_EXTERNAL_RAM_START), END(_EXTERNAL_RAM_END), SIZE(_EXTERNAL_RAM_SIZE)
但编译时就是会报错误,所以我现在是强制定义了那两个宏。
作者: wapdasta 时间: 2018-10-24 13:56
楼主怎么解决的,我现在遇到同样一个问题。[attach]4140[/attach]
CMD是定义了,但是编译还是错误
欢迎光临 嵌入式开发者社区 (https://51ele.net/) |
Powered by Discuz! X3.4 |