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

来源:互联网 发布:数据库测试包括什么 编辑:程序博客网 时间:2024/06/03 11:32

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

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

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

import osimport sysimport subprocessimport picklefrom log import *from ui_wizard import Ui_MainWindowfrom PyQt4 import QtGuiSETTINGS = {}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):        passif __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
原创粉丝点击