为RT-Thread实现一个傻瓜式的工程向导工具(二)

在深入了解了scons创建目标工程的内部机制,按着导师的要求,先画整个工程的数据流图,对整个项目的实现有个总体的把握。

这段时间主要做了如下工作:

  1. 使用qt-designer做向导界面(暂时是demo)。
  2. 写脚本实现编译库的功能。
  3. 画出项目的数据流图。
暂时代码框架如下所示:用户最终的配置都写入_rtrc文件以及对应的相应功能单元的头文件中。

import os
import sys
import subprocess
import pickle
from log import *
from ui_wizard import Ui_MainWindow
from PyQt4 import QtGui


SETTINGS = {}

def userSetting():
    global SETTINGS
    SETTINGS['CC'] = 'armcc'

def storeSetting():
    global SETTINGS
    fp = open(os.path.join(SETTINGS['BSP_DIR'],  "_rtrc"), "w")
    pickle.dump(SETTINGS, fp)
    fp.close()

class Ui(QtGui.QMainWindow):
    def __init__(self, parent=None):
        super(Ui, self).__init__(parent)
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)
        self.ui.toolPage.setLayout(self.ui.verticalLayout)
        self.ui.MainWidget.setLayout(self.ui.horizontalLayout)

    def changePage(self, pre, cur):
        pass

if __name__ == '__main__':

    app = QtGui.QApplication(sys.argv)
    widget = Ui()
    widget.show()
    sys.exit(app.exec_())


    userSetting()

    '''
    if os.getenv('RTT_ROOT'):
        RTT_ROOT = os.getenv('RTT_ROOT')
    else:
        RTT_ROOT = SETTINGS['RTT_ROOT']
    '''

    #what we add here should be done through userSetting()
    SETTINGS['RTT_ROOT'] = os.path.normpath('F:/rt-thread')
    SETTINGS['BSP_DIR'] = os.path.normpath(SETTINGS['RTT_ROOT'] + '/bsp/stm32f20x')
    SETTINGS['PROJECT_TYPE'] = 'mdk4'
    SETTINGS['CROSS_TOOL'] = 'keil'
    SETTINGS['STM32_TYPE'] = 'STM32F20X_CL'
    #SETTINGS['DEVICE_DRIVERS'] = [':

    sys.path = sys.path + [os.path.join(SETTINGS['RTT_ROOT'], 'tools'),
                           SETTINGS['BSP_DIR']]

    logging.debug(SETTINGS['BSP_DIR'])
    logging.debug(SETTINGS['RTT_ROOT'])

    storeSetting()

    #after configuration, use scons to construct project
    os.chdir(SETTINGS["BSP_DIR"])
    #subprocess.call('scons --target=' + SETTINGS['PROJECT_TYPE'] + ' -s', shell=True)
    #subprocess.call('scons --target=' + SETTINGS['PROJECT_TYPE'], shell=True)
    subprocess.call('scons --buildlib=Kernel', shell = True)
    subprocess.call('scons --target=' + SETTINGS['PROJECT_TYPE'], shell=True)

最终实现的数据流图如图所示:


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值