سؤال

أنا أستخدم مترجما ل TI DSPS، وبالتالي فإن CC الافتراضي والرابط وكما لا معنى للأدوات. فيما يلي ملف Slinstruct يعمل بالنسبة لي، أتساءل ما إذا كان لدى أي شخص اقتراحات لجعله أفضل. بعض المشاكل:

  1. أود أن أخبرها بطريقة ما أن ملفات .obj يجب أن تذهب في دليل مختلف عن ملفات .c المصدر. (يحتاج إلى معرفة أين، من أجل معرفة مصادر خطوة الارتباط، والتبعية الخاصة بتجميع / الارتباط) سيكون من الجيد أن تصل إلى حد ما بجدات "-fr" و "-fs" إلى المحول البرمجي ، لكنني لا أمانع في القيام بذلك يدويا.
  2. هناك بعض ملفات الأسهم C في ملف Slonstruct أدناه، كلها تبدأ بادئة DSP2804X_. في الوقت الحالي الآن لا يمكن لعشب العضلات معرفة التبعيات لهذه، لأنني أعتقد أنه يتوقع أن تعيش ملفات .obj في نفس الدليل، في حين أن استخدامي "-fr" و "-fs" للمترجم يعني تلك ملفات .obj ينتهي في نفس الدليل كملف Slincent. هل هناك طريقة أفضل للقيام بذلك؟ أعتقد أنه من المحتمل أن يكون لدي خطوة للبناء التي نسخ الملفات المرجعية هذه إلى دليل محلي: إذا قمت بتغييرها، فأنا أريد أن تنتشر التغييرات إلى جميع المشاريع التي تستخدمها.

تنهد....

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