문제

TI DSPS 용 컴파일러를 사용하고 있으므로 기본 CC 및 링크 및 도구는 의미가 없습니다. 아래는 저에게 적합한 Sconstruct 파일입니다. 누군가가 더 나아질 제안이 있는지 궁금합니다. 몇 가지 문제:

  1. 내 .obj 파일이 소스 .C 파일과 다른 디렉토리로 가야한다고 어떻게 든 말하고 싶습니다. (링크 단계의 소스를 파악하려면 컴파일/링크의 종속성을 알아 내려면 "-fr"및 "-fs"인수와 컴파일러에 묶는 것이 좋을 것입니다. , 그러나 나는 수동으로 그렇게하는 것이 마음에 들지 않습니다.
  2. 아래에 Sconstruct 파일에는 일부 재고 C 파일이 있으며 모두 DSP2804X_의 접두사로 시작합니다. 지금 스콘은 이에 대한 종속성을 알 수 없습니다.이 디렉토리에 .obj 파일이 동일한 디렉토리에 살기를 기대하는 반면, 컴파일러에 "-fr"및 "-fs"를 사용하는 것은 .Obj 파일을 의미합니다. Sconstruct 파일과 동일한 디렉토리로 끝납니다. 더 좋은 방법이 있습니까? 이 참조 파일을 로컬 디렉토리에 복사하는 빌드 단계가 있어야한다고 생각합니다. 변경하면 변경 사항을 사용하는 모든 프로젝트로 전파하기를 원합니다.

한숨을 쉬다....

env = Environment(
   CC = 'C:/appl/ti/ccs/3.3/C2000/cgtools/bin/cl2000',
   CCCOM = '$CC $CFLAGS $CCFLAGS $SOURCES',
   CCFLAGS = Split('-g -q -pdr -d"_DEBUG" -d"LARGE_MODEL" -ml -mt -v28'),

   LINKCOM = '$LINK $LINKFLAGS ${SOURCES.file} -o ${TARGET.base}.out',
   LINK = 'C:/appl/ti/ccs/3.3/C2000/cgtools/bin/cl2000',
   LINKFLAGS = Split('-z -q -c -ecode_start -stack0x200 -w -x'),

   ASCOM = '$CC $CFLAGS $CCFLAGS $SOURCES',
#Bizarre but true. assembly is just like compiling C.
   );


includes = {'CCFLAGS' : [
  '-i../common/headers/include',
  '-i../common/include',
  '-fr.',
  '-fs.'
  ]};
env.MergeFlags(includes);

links = {'LINKFLAGS' : [
  '-m./Debug/Example_2804xGpioToggle.map',
  '-i../common/headers/include', 
  '-iC:/appl/ti/ccs/3.3/C2000/xdais/lib',
  '-iC:/appl/ti/ccs/3.3/C2000/cgtools/lib', 
  '-lrts2800_ml.lib',
  '../common/cmd/28044_RAM_lnk.cmd',
  '../common/headers/cmd/DSP2804x_Headers_nonBIOS.cmd'
  ]};
env.MergeFlags(links);

print "CCCOM is:", env['CCCOM'], "\n", env['LINKCOM'], '\n', env['ASCOM'];

env.Program('blink_gpio', [
  'Example_2804xGpioToggle.c',
  '../common/headers/source/DSP2804x_GlobalVariableDefs.c',
  '../common/source/DSP2804x_CodeStartBranch.asm',
  '../common/source/DSP2804x_DefaultIsr.c',
  '../common/source/DSP2804x_PieCtrl.c',
  '../common/source/DSP2804x_PieVect.c',
  '../common/source/DSP2804x_SysCtrl.c'
  ]);
도움이 되었습니까?

해결책

나는 두 가지 문제를 해결함으로써 두 가지 문제를 해결했다 계층 적 빌드 그리고 사용 -fr=${TARGET.dir} 내 컴파일러 플래그에서.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top