我把flash-utils里的ccs代码添加到vs2010的工程里,生成解决方案之后报错
1>nandwriter.obj : error LNK2001: 无法解析的外部符号 _EMIFStart
1>util.obj : error LNK2001: 无法解析的外部符号 _EXTERNAL_RAM_START
1>util.obj : error LNK2001: 无法解析的外部符号 _EXTERNAL_RAM_END
1>util.obj : error LNK2019: 无法解析的外部符号 _asm,该符号在函数 _UTIL_waitLoop 中被引用
我查找了下,下面是这些变量在代码中出现的位置
在文件nandwirte.c中
声明extern __FAR__ Uint32 EMIFStart;
函数nandwriter()
中的语句hNandInfo = NAND_open((Uint32)&EMIFStart, (Uint8) DEVICE_emifBusWidth() );
在文件util.c中
声明 extern __FAR__ Uint32 EXTERNAL_RAM_START, EXTERNAL_RAM_END;
函数void *UTIL_allocMem(Uint32 size)
中的语句 cPtr = (void *) (((Uint32) &EXTERNAL_RAM_START) + currMemPtr);
函数void *UTIL_allocMem(Uint32 size)
中的语句if((currMemPtr + size_temp) > ((Uint32) &EXTERNAL_RAM_END))
第一个问题是这些变量是在哪个文件中赋的初值??
下面的warning涉及到类型转换的问题,嵌入式汇编好像vs2010不识别。
第二个问题是类型转换的具体说明在ccs中是怎么规定的
1>ClCompile:
1> util.c
1>d:\visual studio 2010\projects\nandwriter\nandwriter\util.c(70): warning C4197: “VUint32”: 忽略转换中的顶级 volatile 变量
1>d:\visual studio 2010\projects\nandwriter\nandwriter\util.c(118): warning C4013: “asm”未定义;假设外部返回 int
1>d:\visual studio 2010\projects\nandwriter\nandwriter\util.c(161): warning C4018: “<”: 有符号/无符号不匹配
1>d:\visual studio 2010\projects\nandwriter\nandwriter\util.c(209): warning C4018: “<”: 有符号/无符号不匹配
在头文件tistdtypes.h中的条件编译
#if defined(_TMS320C6X)
#elif defined(_TMS320C5XX) || defined(__TMS320C55X__)
#elif defined(_TMS320C28X)
#elif (defined(__TMS470__) || defined(__GNUC__))
#else
#error <tistdtypes.h> is not supported for this target
#endif
第三个问题是,这些型号具体是在哪个文件中定义的,我为了让这段通过手动输入了#define __GNUC__
那这个预编译的问题在ccs中是怎么解决的呢