鱼C论坛

 找回密码
 立即注册
查看: 4493|回复: 16

求帮看一个程序

[复制链接]
发表于 2015-3-30 14:17:32 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
最近在做一个项目,需要用一个叫做scons的工程管理工具代替Makefile,但是这个用的是python。python真的是一窍不通,项目时间不多了。再去学来不及了。希望鱼友们帮我看一下,有没有语法错误。谢谢了!

代码段1:
  1. import os

  2. # toolchains options
  3. ARCH='arm'
  4. CPU='cortex-m3'
  5. CROSS_TOOL='keil'

  6. if os.getenv('RTT_CC'):
  7.     CROSS_TOOL = os.getenv('RTT_CC')

  8. # cross_tool provides the cross compiler
  9. # EXEC_PATH is the compiler execute path, for example, CodeSourcery, Keil MDK, IAR

  10. if  CROSS_TOOL == 'gcc':
  11.     PLATFORM    = 'gcc'
  12.     EXEC_PATH   = 'D:/SourceryGCC/bin'
  13. elif CROSS_TOOL == 'keil':
  14.     PLATFORM    = 'armcc'
  15.     EXEC_PATH   = 'D:/Keil'
  16. elif CROSS_TOOL == 'iar':
  17.     PLATFORM    = 'iar'
  18.     IAR_PATH    = 'C:/Program Files/IAR Systems/Embedded Workbench 6.0 Evaluation'

  19. if os.getenv('RTT_EXEC_PATH'):
  20.     EXEC_PATH = os.getenv('RTT_EXEC_PATH')

  21. BUILD = 'debug'

  22. if PLATFORM == 'gcc':
  23.     # toolchains
  24.     PREFIX = 'arm-none-eabi-'
  25.     CC = PREFIX + 'gcc'
  26.     AS = PREFIX + 'gcc'
  27.     AR = PREFIX + 'ar'
  28.     LINK = PREFIX + 'gcc'
  29.     TARGET_EXT = 'axf'
  30.     SIZE = PREFIX + 'size'
  31.     OBJDUMP = PREFIX + 'objdump'
  32.     OBJCPY = PREFIX + 'objcopy'

  33.     DEVICE = ' -mcpu=cortex-m3 -mthumb -ffunction-sections -fdata-sections'
  34.     CFLAGS = DEVICE
  35.     AFLAGS = ' -c' + DEVICE + ' -x assembler-with-cpp'
  36.     LFLAGS = DEVICE + ' -Wl,--gc-sections,-Map=rtthread-myboard.map,-cref,-u,Reset_Handler -T myboard_rom.ld'

  37.     CPATH = ''
  38.     LPATH = ''

  39.     if BUILD == 'debug':
  40.         CFLAGS += ' -O0 -gdwarf-2'
  41.         AFLAGS += ' -gdwarf-2'
  42.     else:
  43.         CFLAGS += ' -O2'

  44.     POST_ACTION = OBJCPY + ' -O binary $TARGET rtthread.bin\n' + SIZE + ' $TARGET \n'

  45. elif PLATFORM == 'armcc':
  46.     # toolchains
  47.     CC = 'armcc'
  48.     AS = 'armasm'
  49.     AR = 'armar'
  50.     LINK = 'armlink'
  51.     TARGET_EXT = 'axf'

  52.     DEVICE = ' --device DARMSTM'
  53.     CFLAGS = DEVICE + ' --apcs=interwork'
  54.     AFLAGS = DEVICE
  55.     LFLAGS = DEVICE + ' --info sizes --info totals --info unused --info veneers --list rtthread-myboard.map --scatter myboard_rom.sct'

  56.     CFLAGS += ' -I' + EXEC_PATH + '/ARM/RV31/INC'
  57.     LFLAGS += ' --libpath ' + EXEC_PATH + '/ARM/RV31/LIB'

  58.     EXEC_PATH += '/arm/bin40/'

  59.     if BUILD == 'debug':
  60.         CFLAGS += ' -g -O0'
  61.         AFLAGS += ' -g'
  62.     else:
  63.         CFLAGS += ' -O2'

  64.     POST_ACTION = 'fromelf --bin $TARGET --output rtthread.bin \nfromelf -z $TARGET'

  65. elif PLATFORM == 'iar':
  66.     # toolchains
  67.     CC = 'iccarm'
  68.     AS = 'iasmarm'
  69.     AR = 'iarchive'
  70.     LINK = 'ilinkarm'
  71.     TARGET_EXT = 'out'

  72.     DEVICE = ' -D USE_STDPERIPH_DRIVER' + ' -D STM32F10X_HD'

  73.     CFLAGS = DEVICE
  74.     CFLAGS += ' --diag_suppress Pa050'
  75.     CFLAGS += ' --no_cse'
  76.     CFLAGS += ' --no_unroll'
  77.     CFLAGS += ' --no_inline'
  78.     CFLAGS += ' --no_code_motion'
  79.     CFLAGS += ' --no_tbaa'
  80.     CFLAGS += ' --no_clustering'
  81.     CFLAGS += ' --no_scheduling'
  82.     CFLAGS += ' --debug'
  83.     CFLAGS += ' --endian=little'
  84.     CFLAGS += ' --cpu=Cortex-M3'
  85.     CFLAGS += ' -e'
  86.     CFLAGS += ' --fpu=None'
  87.     CFLAGS += ' --dlib_config "' + IAR_PATH + '/arm/INC/c/DLib_Config_Normal.h"'   
  88.     CFLAGS += ' -Ol'   
  89.     CFLAGS += ' --use_c++_inline'
  90.         
  91.     AFLAGS = ''
  92.     AFLAGS += ' -s+'
  93.     AFLAGS += ' -w+'
  94.     AFLAGS += ' -r'
  95.     AFLAGS += ' --cpu Cortex-M3'
  96.     AFLAGS += ' --fpu None'

  97.     LFLAGS = ' --config stm32f10x_flash.icf'
  98.     LFLAGS += ' --redirect _Printf=_PrintfTiny'
  99.     LFLAGS += ' --redirect _Scanf=_ScanfSmall'
  100.     LFLAGS += ' --entry __iar_program_start'   

  101.     EXEC_PATH = IAR_PATH + '/arm/bin/'
  102.     POST_ACTION = ''
复制代码
代码段2:
  1. import os
  2. import sys
  3. import rtconfig

  4. if os.getenv('RTT_ROOT'):
  5.     RTT_ROOT = os.getenv('RTT_ROOT')
  6. else:
  7.     RTT_ROOT = os.path.normpath(os.getcwd() + '/../..')

  8. sys.path = sys.path + [os.path.join(RTT_ROOT, 'tools')]
  9. from building import *

  10. TARGET = 'rtthread-myboard.' + rtconfig.TARGET_EXT

  11. env = Environment(tools = ['mingw'],
  12.     AS = rtconfig.AS, ASFLAGS = rtconfig.AFLAGS,
  13.     CC = rtconfig.CC, CCFLAGS = rtconfig.CFLAGS,
  14.     AR = rtconfig.AR, ARFLAGS = '-rc',
  15.     LINK = rtconfig.LINK, LINKFLAGS = rtconfig.LFLAGS)
  16. env.PrependENVPath('PATH', rtconfig.EXEC_PATH)

  17. if rtconfig.PLATFORM == 'iar':
  18.     env.Replace(CCCOM = ['$CC $CCFLAGS $CPPFLAGS $_CPPDEFFLAGS $_CPPINCFLAGS -o $TARGET $SOURCES'])
  19.     env.Replace(ARFLAGS = [''])
  20.     env.Replace(LINKCOM = ['$LINK $SOURCES $LINKFLAGS -o $TARGET --map project.map'])

  21. Export('RTT_ROOT')
  22. Export('rtconfig')

  23. # prepare building environment
  24. objs = PrepareBuilding(env, RTT_ROOT)

  25. # myboard firemare library building script
  26. objs = objs + SConscript( GetCurrentDir() + '/CMSIS/SConscript', variant_dir='build/bsp/CMSIS', duplicate=0)

  27. #myboard application building script
  28. objs = objs + SConscript( GetCurrentDir() + '/applications/SConscript', variant_dir='build/bsp/applications', duplicate=0)

  29. #myboard drivers building scipt
  30. objs = objs + SConscript( GetCurrentDir() + '/drivers/SConscript', variant_dir='build/bsp/drivers', duplicate=0)

  31. # build program
  32. env.Program(TARGET, objs)

  33. # end building
  34. EndBuilding(TARGET)
复制代码

代码段3:
  1. # for module compiling
  2. import os
  3. Import('RTT_ROOT')

  4. cwd = str(Dir('#'))
  5. objs = []
  6. list = os.listdir(cwd)

  7. for d in list:
  8.     path = os.path.join(cwd, d)
  9.     if os.path.isfile(os.path.join(path, 'SConscript')):
  10.         objs = objs + SConscript(os.path.join(d, 'SConscript'))

  11. Return('objs')
复制代码

代码段4:
  1. Import('RTT_ROOT')
  2. Import('rtconfig')
  3. from building import *

  4. cwd     = os.path.join(str(Dir('#')), 'applications')
  5. src = Glob('*.c')
  6. CPPPATH = [cwd, str(Dir('#'))]

  7. group = DefineGroup('Applications', src, depend = [''], CPPPATH = CPPPATH)

  8. Return('group')
复制代码

代码段5:
  1. Import('RTT_ROOT')
  2. Import('rtconfig')
  3. from building import *

  4. cwd = GetCurrentDir()


  5. # add for startup script
  6. src += ['DeviceSupport/startup_cm32gpm3.s']

  7. CPPPATH = [cwd + '/DeviceSupport/']

  8. if GetDepend(['RT_USING_BSP_CMSIS']):
  9.     CPPPATH += [cwd + '/CoreSupport/']
  10.     src += ['CoreSupport/core_cm3.c']
  11. elif GetDepend(['RT_USING_RTT_CMSIS']):
  12.     CPPPATH += [RTT_ROOT + '/components/CMSIS/Include']

  13. group = DefineGroup('CMSIS', src, depend = [''], CPPPATH = CPPPATH)

  14. Return('group')
复制代码

代码段6:
  1. Import('RTT_ROOT')
  2. Import('rtconfig')
  3. from building import *

  4. cwd     = os.path.join(str(Dir('#')), 'drivers')

  5. # add the general drvers.
  6. src = Glob('*.c')
  7.    
  8. CPPPATH = [cwd]

  9. group = DefineGroup('Drivers', src, depend = [''], CPPPATH = CPPPATH)

  10. Return('group')
复制代码




小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2015-3-30 18:57:50 | 显示全部楼层

回帖奖励 +5 鱼币

不懂
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2015-3-31 12:23:35 | 显示全部楼层

回帖奖励 +5 鱼币

完全看不明白
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-3-31 15:03:18 | 显示全部楼层
这个要干什么,没懂
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-3-31 19:25:08 | 显示全部楼层
除了building模块看不出对错,其它没有语法错误,但是变量名会不会出错,我就不知道了
为什么不自己运行一下呢?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-3-31 23:39:47 | 显示全部楼层

回帖奖励 +5 鱼币

完全不懂》。。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-4-1 09:45:33 | 显示全部楼层

回帖奖励 +5 鱼币

:curse:还没学到 这份上
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-4-1 15:49:53 | 显示全部楼层

回帖奖励 +5 鱼币

no pain no gain
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-4-1 17:39:39 | 显示全部楼层

回帖奖励 +5 鱼币

:sad看起来好难啊,看不懂
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-4-1 22:02:54 | 显示全部楼层
有点惊人         
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-4-1 22:42:22 | 显示全部楼层
太长没有看完
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-4-2 20:07:03 | 显示全部楼层
得告诉我们大概实现的功能吧
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-4-4 00:25:16 | 显示全部楼层
没看懂
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-4-5 00:42:45 | 显示全部楼层
代替makefile。。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-4-5 23:17:50 | 显示全部楼层
新手帮顶
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-4-5 23:39:47 | 显示全部楼层
完全看不懂。好厉害的样子
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-4-6 05:53:52 | 显示全部楼层
楼主太牛了。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-2-15 10:29

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表