嵌入式开发者社区

标题: 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_ENDEXTERNAL_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
希望缄默 发表于 2014-12-5 09:21
是在 CMD 文件定义的~

非常感谢!
我用的烧写程序集的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